Excelastuces

Logo Excelastuces

Comment trouver la lettre de la dernière colonne vide (VBA)

v7.jpg

Vous voulez ajouter une nouvelle colonne pré-remplie à votre tableau mais pas n’importe comment!?

Elle doit en effet se placer juste après la dernière colonne remplie (ou non vide si vous préférez ce terme)

En général, le code en VBA va vous retournez le numéro de la colonne seulement

Ici nous verrons comment récupérer la lettre de cette colonne

Sympa non?

Petit rappel pour activer l’onglet « Développeur »
http://excelastuces.fr/2018/11/11/comment-activer-le-mode-developpeur-programmons-en-vba/

Mise en place du code VBA

Nous ajouterons le code ci-dessous dans « ThisWorkBook »

i2.png

Sub TrouverColonne()

Dim MaColonne As String
Dim i As Integer

i = 1 ' Numéro de la ligne à vérifier

MaColonne = Range("IV" & i).End(xlToLeft).Column

actif = LetCol(MaColonne + 1)

MsgBox ("Ligne : " & i & " Colonne : " & actif)

End Sub

Function LetCol(NoCol)

LetCol = Split(Cells(1, NoCol).Address, "$")(1)

End Function

Pas de panique! nous allons expliquer le code plus bas

Mise en place d’un bouton pour activer notre macro

Si vous nous suivez, ce ne doit pas être nouveau mais pour rappel

Onglet « DEVELOPPEUR »

« Insérer »

« Bouton (Contrôle de formulaire) »

i1.png

Et vous dessinez votre bouton de contrôle ou vous le souhaitez et vous le nommerez « Dernière Colonne »

Par exemple :

i3.png

Vous pouvez affecter la macro « TrouverColonne »

i4

Pour rappel c’est la première ligne de notre code VBA et qui correspond au nom de notre Macro

Sub TrouverColonne()

Vous pouvez essayer et vous aurez déjà un résultat!

i5.png

C’est bien la colonne C qui est la dernière colonne vide de la ligne 1

Explications

Pour ceux et celles qui veulent paramétrer leur code et/ou comprendre comment cela fonctionne voici quelques explications

Ce code est composé en 2 parties

Partie 1
Sub TrouverColonne()

Dim MaColonne As String
Dim i As Integer

i = 1 ' Numéro de la ligne à vérifier

MaColonne = Range("IV" & i).End(xlToLeft).Column

actif = LetCol(MaColonne + 1)

MsgBox ("Ligne : " & i & " Colonne : " & actif)
End Sub

C’est notre code principal. Celui qui va s’enclencher lorsque vous appuierez sur votre bouton « Dernière Colonne »

i = 1

Cette variable i correspond au numéro de la ligne que vous voulez vérifier ici la nous prenons la 1

Vous pouvez changer sa valeur en mettant le numéro de la ligne que vous souhaitez

MaColonne = Range("IV" & i).End(xlToLeft).Column

C’est la variable « MaColonne » qui va retourner le numéro de la dernière colonne remplie (Pas encore celle qui est vide)

actif = LetCol(MaColonne + 1)

Cette ligne appelle notre fonction « LetCol » Partie 2

Le + 1 permet de décaler notre résultat d’une case pour ainsi trouver la dernière colonne vide

Partie 2
Function LetCol(NoCol)

LetCol = Split(Cells(1, NoCol).Address, "$")(1)

End Function

Vous l’aurez compris, cette partie (ou plutôt « Fonction ») va nous retourner la lettre en fonction du numéro que nous lui aurons adresser dans la Partie 1 avec la ligne

actif = LetCol(MaColonne + 1)

Voila rien de bien sorcier

Je l’utilise pour incrémenter des valeurs de rapport de données chronologiquement

Nous restons à votre écoute si vous avez des questions

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut