Bonjour à tous,
Je suis un pti nouveau sur le forum alors je ne sais pas si tout est OK, j'espere poster le message dans le bon forum!!!!!

Je suis un peu débutant en VBA et j'essaie de réaliser une ListeBox avec deux colonnes non contigues.

Je voudrais donc remplir ma ListeBox avec une colonne A et une colonne G non cotes à cotes, en sachant également que le nombre de ligne évolue au cours du temps puisque l'utilisateur va rajouter des données dans le tableau qui devront etre pris en compte dans la ListeBox.

Voici ce que je sais et ce que j'ai ecrit:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Private Sub UserForm_Initialize() 
ListBox1.ColumnCount = 2 ' cela sert à mettre 2 colonnes dans ma ListeBox 
ListBox1.ColumnWidths = "160; 3" ' ceci est le nombre de caractere possible pour chaques colonnes de la ListeBox 
ListBox1.RowSource = tableau2 ' ceci est le tableau qui rempli ma ListeBox 
End Sub
Jusqu'ici je pense que tout va bien, mais si j'ai deja rien compris dites le moi!!!!!!!!!!!

Ensuite je crée donc un module avec les fonctions ci-dessous:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Function tableau2() 
nomt = ("A3:A" & dernier2) 'cette valeur devrait prendre la colonne jusqu'à la derniere cellule non vide 
reft = ("G3:G" & dernier2) 
tableau2 = ("nomt,reft") ' je pensais créer un tableau avec deux colonnes non contigues 
End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Function dernier2() 'cette fonction me sert donc à trouver la dernière ligne de mon tableau 
dernier2 = Range("A2").End(xlDown).Row 
End Function
Et la ca beug!!!!!
En fait j'ai pu constater que si je faisais ceci ca marcherait à la condition que les colonnes soient cotes à cotes:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Function tableau2() 
tableau2 = ("A3:B" & dernier2) 
'on peut aussi faire ("A3:G" & dernier2) mais de toute facon il choisi les 2 premieres!! 
End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Function dernier2() 
dernier2 = Range("A2").End(xlDown).Row 
End Function
J'ai également pu constater que l'utilisation de Range("A1:A56,G1:G56").Select
marche tres bien si l'on veut selectionner des plages de cellules différentes mais malheureusement ca ne marche pas pour cette utilisation (j'ai essayé ceci, tableau2=Range("A1:A,G1:G" & dernier2)
mais bien evidement ca ne marche pas ...sniffff ca serait trop simple!!!)

Donc si quelqu'un aurait une petite solution/explication ca serait vraiment sympa!!!
Merci d'avance et à bientot
Vinch