Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Sélections en VBA Excel
De fil en aiguille, voici que se profile une nouvelle
astuce en VBA Excel pour atteindre et parcourir simplement les cellules, lignes et colonnes d'un tableau ou d'une feuille. L'
objet Selection de
type Range est incontournable. Il désigne la ou les cellules sélectionnées. Parmi ses nombreuses fonctionnalités, il offre une propriété que nous pourrions assimiler à une méthode. Elle se nomme
End. En effet, selon l'argument qui lui est passé, elle permet d'atteindre une extrémité désignée.
Classeur Excel à télécharger
Pour la découverte de cette nouvelle
astuce VBA Excel, nous suggérons d'appuyer le développement sur un classeur hébergeant une
feuille avec des données volumineuses propices à la navigation automatisée.
- Télécharger le classeur deplacer-naviguer.xlsm en cliquant sur ce lien,
- Double cliquer sur le fichier réceptionné pour l'ouvrir dans Excel,
- Cliquer sur le bouton Activer la modification du bandeau de sécurité,
- Puis, cliquer sur le bouton Activer les macros de la boîte de dialogue qui surgit,
Vous notez la présence d'un tableau référençant des idées de sorties dans certains départements. Il est volumineux puisqu'il s'étend jusqu'à la ligne 1000. Dans ces conditions, il est intéressant de disposer de raccourcis permettant de naviguer facilement et rapidement d'une extrémité à l'autre, que ce soit en largeur comme en hauteur.
Sur la droite de ce tableau, vous notez la présence de six boutons voués à opérer différents types de déplacement, au clic. Ils sont tous déjà associés à une
procédure VBA. Mais naturellement, elles sont toutes vides pour l'instant. Certes pour de telles fonctionnalités, il serait intéressant de placer ces boutons dans un ruban pour une utilisation durable. Mais pour cela, nous le savons, il suffirait d'enregistrer ces
macros dans le
modèle Excel, le
Personal.xlsb.
Déplacement vers le haut
Tous les déplacements que nous allons entreprendre doivent se faire par rapport à la sélection active, qu'il s'agisse d'une plage ou d'une cellule. A partir d'une cellule sélectionnée dans le tableau, nous souhaitons tout d'abord atteindre la première cellule non vide de la colonne. Il est donc question de remonter rapidement tout en haut du tableau. Chaque objet de type Range (Cells, [A1], Range, Selection) propose une
propriété qui se nomme
End. En fonction de l'argument qui lui est passé, elle permet d'entreprendre des déplacements spécifiques dès lors qu'elle est associée à une méthode.
- Réaliser le raccourci clavier Alt + F11 pour basculer dans l'éditeur VBA Excel,
Si d'aventure vous ne visualisez pas la présence des
procédures événementielles, vous devez cliquer sur l'
élément Module1 à gauche dans l'
explorateur de projet. C'est ainsi que sa feuille de code s'affiche au centre de l'écran.
- Puis, cliquer entre les bornes de la procédure premiereEnHaut,
Il s'agit de la deuxième qui est associée au deuxième bouton sur la feuille. Comme l'indique son commentaire, elle doit permettre d'atteindre la première cellule non vide en haut, donc sur la colonne active.
- Dans les bornes de cette procédure, ajouter l'instruction VBA suivante :
Sub premiereEnHaut()
Selection.End(xlUp).Select
End Sub
Nous agissons donc sur la plage ou la cellule active grâce à l'
objet VBA Selection. Puis, nous passons la
valeur xlUp à sa
propriété End pour atteindre la
première cellule non vide de la colonne. Dès lors, nous enclenchons la
méthode Select pour sélectionner cette cellule désignée. C'est ainsi que l'affichage se déplacera sur la feuille au moment du clic sur le bouton.
- Enregistrer les modifications (CTRL + S) et revenir sur la feuille du classeur (ALT + Tab),
- Sélectionner une cellule à l'intérieur du tableau, par exemple E11,
- Puis, cliquer sur le bouton Première en haut,
Instantanément et comme vous pouvez l'apprécier, la première cellule non vide dans la colonne active est automatiquement atteinte et sélectionnée.
Atteindre la dernière cellule non vide
Maintenant et selon le même mécanisme, nous souhaitons entreprendre un
déplacement vers le bas de manière à atteindre la
dernière cellule non vide du tableau, dans la colonne active.
- Revenir dans l'éditeur VBA Excel,
- Puis, cliquer entre les bornes de la procédure derniereEnBas,
- Inscrire l'instruction VBA suivante :
Sub derniereEnBas()
Selection.End(xlDown).Select
End Sub
Seule la valeur du paramètre passé à la
propriété End change. Et étant donné le précédent, nous aurions pu le déduire.
Si vous enregistrez et que vous cliquez sur le premier bouton de la feuille, vous atteignez instantanément la
dernière cellule du tableau dans la
colonne active.
De fait, nos boutons ont disparu de l'affichage. Nous aurions pu
figer les volets sous le dernier bouton pour les conserver visibles à l'écran. Mais encore une fois et comme nous l'évoquions précédemment, ces procédures sont plutôt destinées à être enregistrées dans le
modèle Excel pour être associées à des
boutons de ruban.
Déplacements à l'horizontale
Maintenant et nous allons le voir, grâce à cette fameuse
propriété End d'un
objet de type Range, il est naturellement possible d'entreprendre des
déplacements à l'horizontale. Et pour cela, nous proposons d'atteindre la
dernière cellule du tableau pour la
ligne active.
- Remonter tout en haut de la feuille (CTRL + Home),
- Cliquer sur une cellule à l'intérieur du tableau, par exemple C8,
- Basculer dans l'éditeur VBA Excel (ALT + F11),
- Cliquer entre les bornes de la procédure derniereADroite,
- Puis, ajouter l'instruction VBA suivante :
Sub derniereADroite()
Selection.End(xlToRight).Select
End Sub
Là encore, si vous enregistrez les modifications et que vous cliquez cette fois sur le troisième bouton de la feuille Excel, vous constatez que c'est bien la
cellule située à l'extrémité de la ligne active qui est sélectionnée.
Naturellement, il est tout à fait possible d'entreprendre le déplacement opposé dans le but d'atteindre la
première cellule de la ligne active. Pour cela, il suffit de remplacer
xlToRight de la propriété End par la valeur
xlToLeft.
Sélectionner des lignes et des colonnes complètes
Grâce à ces découvertes, nous allons voir maintenant comment il est possible de
sélectionner l'intégralité d'une ligne ou d'une colonne dans un
tableau Excel. L'
objet Range permet de désigner des
plages de cellules. Pour cela, nous devons lui passer l'adresse de la borne de départ et celle de la borne de fin. En définissant le point de départ sur la
sélection active et en spécifiant un
déplacement jusqu'à la fin de la rangée, grâce à la
propriété End dans la borne de fin, nous pouvons entreprendre les
sélections intégrales souhaitées.
- Revenir dans l'éditeur VBA Excel,
- Puis, cliquer entre les bornes de la procédure selectionBas,
- Dès lors, ajouter la ligne de code suivante :
Sub selectionBas()
Range(Selection, Selection.End(xlDown)).Select
End Sub
Dans ce cas de figure, nous exerçons donc une sélection débutant de la cellule active et s'étendant jusqu'à la dernière cellule de ce tableau dans la colonne. Bref, nous sélections l'intégralité des données dans une colonne.
- Enregistrer les modifications (CTRL + S) et revenir sur la feuille Excel,
- Cliquer sur une cellule de titre, par exemple D3,
- Puis, cliquer sur le bouton Sélection colonne,
Comme vous pouvez le voir, c'est bien l'intégralité de la colonne active qui est sélectionnée dans le tableau.
Naturellement et selon le même procédé, il est possible de sélectionner une ligne complète. Pour cela, il s'agit d'implémenter la
procédure selectionDroite comme suit :
Sub selectionDroite()
Range(Selection, Selection.End(xlToRight)).Select
End Sub
Etendre la sélection en lignes et en colonnes
Pour finir et grâce à l'emploi doublé de la
propriété End, nous allons voir qu'il est possible d'
étendre la sélection sur toutes les lignes et colonnes restantes dans le tableau. Il s'agit donc d'un procédé très efficace pour sélectionner rapidement une quantité importante de cellules souhaitées.
- Dans les bornes de la procédure selectionBasDroite, ajouter la ligne de code VBA suivante :
Sub selectionBasDroite()
Range(Selection, Selection.End(xlDown).End(xlToRight)).Select
End Sub
Grâce à l'application d'une première
propriété End dans la borne de fin de la plage de cellules, nous étendons la sélection sur
toute la colonne du tableau. Et grâce à l'application d'une seconde
propriété End dans l'enchaînement, nous étendons cette sélection sur la droite, donc sur les
colonnes restantes.
Si vous testez ce dernier bouton après avoir pris soin de désigner une cellule dans le tableau, vous avez le plaisir de constater que la sélection est effectivement étendue en ligne comme en colonne jusqu'aux bornes de fin du tableau.