formateur informatique

Atteindre des cellules ou sélectionner des plages

Accueil  >  Bureautique  >  Excel  >  Excel VBA  >  Atteindre des cellules ou sélectionner des plages
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
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.

Tableau Excel volumineux avec boutons de navigation

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.

Remonter en haut de la colonne du tableau Excel en VBA

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.

Sélectionner la dernière cellule de la colonne en VBA Excel

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.

Sélectionner une colonne complète dans un tableau en VBA Excel

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.

Etendre la sélection sur la fin du tableau en VBA Excel

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn