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
A voir également:
- Recopie de données sélectionnées via un combo
- Fuite données maif - Guide
- Supprimer les données de navigation - Guide
- Trier des données excel - Guide
- Sauvegarde des données - Guide
- Données personnelles - Accueil - Windows
3 réponses
Bonjour,
Dans l'évènement Click() du bouton :
Dans un module (ici le Module1) :
;o)
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)
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....
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:
Voilà
;o)
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)
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