Je suis en train de travailler sur un userform. J'ai sur un onglet: 2 listboxs qui se font face, lorsque je selectionne un élément de chaque, et que je clique sur "Valider", les deux éléments sont envoyés sur Excel dans un tableau à 3 colonnes. Je lie la deuxieme colonne à la troisième à l'aide d'une formule Excel (pour obtenir un code):
=INDIRECT(ADRESSE (EQUIV("")))
Puis ce que j'ai récupérer comme information est envoyé dans une 3 ème ListBox multicolonne (3 pour être exacte). Ma fonction marche très bien:
Seulement le problème que je rencontre est le suivant:
Ma maccro ne marche que pour un seul élément. Lorsque je clique pour rajouter un autre élément dans ma ListBox Multicolonne et bien il écrase l'élément précédent.
C'est à partir de là que je ne sais pas faire. Comment faire pour allimenter mon tableau Excel à chaque fois que je clique sur Valider, sans supprimer l'élément précédent? (de manière à alimenter ma LB Multicolonne comme je le souhaite)
Je ne sais pas comment m'y prendre pour la boucle. Auriez vous des conseils svp?
Merci d'avance :).
Merci d'avoir répondu aussi rapidement :). Je ne suis pas trop calée en VBA,
Je ne connais pas la boucle while....wend :x Je suis penchée sur mon bouquin VBA excel 2003 lol et je ne trouve que
Do While.....Loop :x. Je présume que ça marche de la même manière.
Je dois avouer que je ne sais pas trop comment intégrer ton bout de code.
Je comprend a peu près ce qu'il signifie ( a priori ^^).
J'appel ListBox cible ma listbox24.
"Tant que la cellule ...... contient une valeur, Rajoute l'élément de la cellule dans le userform dans la ListBox cible , puis passe à la colonne suivante."
Je me permet de préciser au cas où :x que mon problème réside dans le fait de rajouter, dans mon tableau excel a chaque fois que je clique sur valider, un élément à la ligne suivante. Pour le moment quand je clique sur valider cela écrase la sélection précédente.
Quand tu dis que ma LB cible est statique en utilisant RowSource, ça veut dire que je ne peut pas modifier ma ListBox cible? qu'elle dépend exclusiment de mon tableau Excel?
Merci :)
ps: J'ai modifier mon code de départ. ce n'est pas très important mais j'ai changer mes noms de cellule.
J'ai intégrer ce code dans mon userform. Et ça marche pas trop :x.
En fait il ne se passe rien :x
Quand je clique sur mon valider ça continue d'écraser la ligne précédente.
Workbooks("Test Correspondance7 v7.6.xls").Activate
Dim DerniereLigneA As Integer
Dim DerniereLigneB As Integer
DerniereLigneA = Range("A65536").End(xlUp).Row
Range("A2" & DerniereLigne) = ListBox1.Value
DerniereLigneB = Range("B65536").End(xlUp).Row
Range("B2" & DerniereLigne) = ListBox2.Value
Calculate
Me.ListBox17.RowSource = "Sheet1!A2:C2"
J'ai l'impression que ça fait comme ce que j'avais avant:
Tout à l'heure avant que je l'adapte de cette manière c'est à dire en copiant/collant ce que vous m'avez montré, ça me collait l'élément de la colonne A bizarrement. Au premier clique a la premiere ligne, au second une vingtaine de lignes plus loin, au troisième, une centaine de ligne plus loin et au quatrième à la ligne 22 222 :x
Là je n'ai qu'un bout de code ... difficile de dire quoique ce soit.
"Test Correspondance7 v7.6.xls" ??? c'est quoi exactement ? le classeur actif, un classeur ouvert ? le classeur qui contient l'UF ?
Pour pouvoir te répondre il faut avoir une vue d'ensemble de ce que tu veux faire.
Tu peux également faire passer ton classeur ou un zip de l'environnement par http://www.cjoint.com, tu colles ensuite ici le lien donné par le site. Enlèves les données sensibles ou confidentiels et replaces les par de trucs bidons genre "toto" "tata" "Pim" "Pam" Pom" ... ^^
Dim ws As Worksheet
Workbooks("***.xls").Activate
Set ws = ThisWorkbook.Worksheets(1)
Dim DerniereLigneA As Integer
Dim DerniereLigneB As Integer
DerniereLigneA = ws.Range("A65536").End(xlUp).Row + 1
Range("A" & DerniereLigneA) = ListBox1.Value
DerniereLigneB = Range("B65536").End(xlUp).Row + 1
Range("B" & DerniereLigneB) = ListBox2.Value
Calculate
'Initialisation et remplissage de la listbox17
Dim Derligne As Long
'ListBox17.Clear
Derligne = ws.Range("A65536").End(xlUp).Row + 1
Me.ListBox17.RowSource = "Sheet1!A2:C" & Derligne & ""