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

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
Configuration: Windows XP Internet Explorer 7.0

3 réponses

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
    1. Nemsis
       
      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
  2. tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   460
     
    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
    1. Nemsis
       
      Bonjour,

      Merci de votre conseil éclairé.

      Mon problème est résolu

      Amicalement
      0
  3. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
    1. Nemsis
       
      Bonjour,

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

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

      Amicalement
      0