VBA: trouver la dernière cellule utilisée 3


La recherche de la dernière cellule utilisée sur une Feuille est une des opérations incontournables dans VBA. L'information sur la dernière cellule utilisée est indispensable notamment pour la bonne performance des macros – elle permet de limiter le nombre d'itérations (loops) au minimum nécessaire, de limiter la taille des plages à copier ou à formater, etc.

Ce tutoriel vous montre comment trouver cette dernière cellule avec le code VBA ainsi que les différents types de la "dernière cellule utilisée".

Notion de la "dernière cellule utilisée"

Aussi étonnant que cela puisse paraître, l'expression "dernière cellule utilisée" peut avoir nombreux interprétation. Et c'est justement l'interprétation de "dernière cellule utilisée" qui déterminera le code VBA à utiliser. Il est donc important de déterminer correctement le type de cellule que l'on cherche.

Voici les interprétations principales de l'expression "dernière cellule utilisée":

  • la toute dernière cellule de la Feuille qui est utilisée – c'est à dire contient une valeur ou une formule
  • la dernière cellule de la Feuille qui contient une valeur (les formules qui donnent le résultat égal à "" ne sont pas prises en compte)
  • la dernière cellule utilisée dans une colonne précise (par exemple: la dernière cellule utilisée dans la colonne "C")
  • la dernière cellule utilisée dans une ligne précise (par exemple: dans la ligne 85)

VBA: trouver la dernière cellule utilisée

Le code VBA décrit dans cette section trouve la dernière cellule utilisée – qu'elle contienne une valeur ou une formule (et peu importe le résultat de cette formule). Pour construire ce code, nous allons faire appel à la fonction .Find.

 

VBA: trouver la dernière cellule contenant une valeur

À la différence de la façon décrite plus haut pour trouver la toute dernière cellule utilisée, la recherche suivante permet de trouver la dernière cellule qui contient une valeur (différente de ""). Donc, cette recherche NE tient PAS compte des formules. Ceci peux être utile pour limiter le nombre des itérations dans votre code ou si vous voulez, par exemple, copier les valeurs d'un endroit à un autre.

Le code de cette recherche a la même structure que le code plus haut car il utilise également la fonction .Find. Ce qui change, c'est le contenu de l'argument LookIn qui est ici xlValues.

 

La dernière ligne utilisée dans une colonne donnée

Si vous avez besoin de trouver la dernière cellule utilisée dans une colonne précise, voici deux manières de procéder:

ou, deuxième manière de faire:

Ces deux instructions donneront le même résultat – vous pouvez donc choisir selon votre besoin. Cela dépend si vous utiliser la lettre (on utilisera le première instruction) ou le numéro de la colonne (on utilisera alors la deuxième instruction).

Dans de nombreux forums sur VBA et Excel, vous trouverez souvent cette instruction sous la forme suivante:

DerniereLigneUtilisee = Range("A65536").End(xlUp).Row

Cette version de la fonction peut poser le problème de compatibilité car ainsi écrite, cette instruction utilise un nombre déterminé des lignes: et comme les différentes versions d'Excel ont un nombre différent de lignes, vous risquez d'obtenir des erreurs, des résultats incorrects et vous serez obligés de modifier cette instruction cas par cas.

Au contraire, l'instruction que je vous propose, c'est-à-dire:

DerniereLigneUtilisee = Range("A" & Rows.Count).End(xlUp).Row

utilisera toujours le nombre correct des lignes et est donc tout à fait indépendante de la version d'Excel utilisée – elle donnera le résultat correct dans tous les cas.

Il en va de même pour le nombre de colonnes.

Attention – si aucune cellule dans la colonne choisie n'est utilisée, le résultat final sera 1 (et non 0)!

La dernière colonne utilisée dans une ligne donnée

Cette manière de trouver la dernière cellule utilisée dans une ligne fonctionne de la même manière que le code précédent (pour la dernière ligne dans une colonne).

Attention – tout comme pour la recherche de la dernière ligne d'une colonne donnée, si aucune cellule dans la ligne choisie n'est utilisée, le résultat final sera 1 (et non 0)!

 

Remarque: grâce à la méthode .Find, il est possible de chercher également les cellules contenant un commentaire. Pour cela, l'argument LookIn doit contenir la constante xlComments.

Voici un exemple d'utilisation:

 

Plus sur la méthode .FindMéthode Find (Microsoft)

 

12 0

Pourrait vous intéresser

Partagez cette page...
Share on FacebookShare on Google+Share on LinkedInTweet about this on TwitterShare on RedditShare on TumblrDigg thisEmail this to someone

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.

3 commentaires sur “VBA: trouver la dernière cellule utilisée

  • Anonyme

    Salut,

    Merci pour ces formules, elles m'ont bien aidé !
    Cependant, je trouve que pour la dernière colonne, la formule :
    DerniereCellule_Colonne = Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, LookIn:=xlValues).Column
    Est plus adaptée ( On obtient ainsi la dernière colonne totale, pas la dernière colonne de la dernière ligne )

    Bonne continuation