Recopie de données sélectionnées via un combo

Fermé
Nemsis - 29 janv. 2010 à 19:56
 Nemsis - 30 janv. 2010 à 12:45
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

3 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
29 janv. 2010 à 20:21
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)
0
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
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
29 janv. 2010 à 20:22
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....
0
Bonjour,

Merci de votre conseil éclairé.

Mon problème est résolu

Amicalement
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
30 janv. 2010 à 01:25
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)




0
Bonjour,

Merci encore pour le partage de vos connaissances et de votre aide.

Mon problème est définitivement résolu.

Amicalement
0