Recopie de données sélectionnées via un combo
Nemsis
-
Nemsis -
Nemsis -
Bonjour,
Dans un Userform, j'ai placé un combobox lié à un bouton command et dont la propriété Rowsource est la suivante : Feuil2!A3:A300
Dans la feuille2 se trouve un tableau contenant pour chaque ligne et sur 7 colonnes ( A à G ) les données propres à chaque client.
La première colonne du tableau (A) contient le nom et prénom du client.
je cherche le code qui me permettra via le nom choisi dans le menu déroulant de la combobox et valider par le bouton commande de sélectionner les données de ce client répertorié dans le tableau de la feuil2 ( A à G ) et de pouvoir recopier ces données dans un autre tableau placé en feuil3
Merci pour l'aide que vous pourriez m'apporter
Dans un Userform, j'ai placé un combobox lié à un bouton command et dont la propriété Rowsource est la suivante : Feuil2!A3:A300
Dans la feuille2 se trouve un tableau contenant pour chaque ligne et sur 7 colonnes ( A à G ) les données propres à chaque client.
La première colonne du tableau (A) contient le nom et prénom du client.
je cherche le code qui me permettra via le nom choisi dans le menu déroulant de la combobox et valider par le bouton commande de sélectionner les données de ce client répertorié dans le tableau de la feuil2 ( A à G ) et de pouvoir recopier ces données dans un autre tableau placé en feuil3
Merci pour l'aide que vous pourriez m'apporter
Configuration: Windows XP Internet Explorer 7.0
3 réponses
-
Bonjour,
Dans l'évènement Click() du bouton :Private Sub CommandButton1_Click() If ComboBox1.Text = "" Then Exit Sub Call Module1.SearchItem(ComboBox1.Text) End Sub
Dans un module (ici le Module1) :Public Sub SearchItem(ByVal str As String) Dim cl Dim Lig As Integer For Each cl In Worksheets(2).Range("A3:A300") If cl.Value = str Then Lig = cl.Row Worksheets(2).Range("A" & Lig & ":G" & Lig).Copy Worksheets(3).Range("A2:G2") Exit Sub End If Next cl End Sub
;o)
-
Merci pour votre célérité et la qualité de votre réponse.
Ce code fonctionne à merveille. Il est rassurant de pouvoir s'appuyer sur votre compétence.
Juste un dernier petit souci à régler :
la recopie des données s'effectue sur la même plage A2:G2 du tableau
Je souhaiterai que les données s'inscrivent au fur et à mesure sur la dernière ligne vide du tableau
Amicalement votre
-
-
Salut,
tu peux utiliser la propriété listindex du combobox qui renvoie la position de l'élément sélectionné dans ta liste (attention, commence à 0). Ds ton cas, pour récuperer le numéro de ligne sur ta feuil2, il ta faudra faire combobox.listindex + 3.... -
il faut faire comme ça:
Public Sub SearchItem(ByVal str As String) Dim cl Dim Lig As Integer Dim DerniereLigne As Long For Each cl In Worksheets(2).Range("A3:A300") If cl.Value = str Then Lig = cl.Row DerniereLigne = Worksheets(3).Range("A3").End(xlDown).Row DerniereLigne = DerniereLigne + 1 Worksheets(2).Range("A" & Lig & ":G" & Lig).Copy Worksheets(3).Range("A" & derniereLigne & ":G" & DerniereLigne) Exit Sub End If Next cl End Sub
Voilà
;o)