Utilisation des combobox ; équivalent recherchev

Bonjour,

J'ai quelques questions pour vous !

Je suis bloqué dans mon application, je n'ai malheureusement pas beaucoup de connaissance dans ce domaine, et je ne sais pas très bien comment m'y prendre,...

En gros mes questions sont les suivantes :

1) Comment puis-je utiliser la valeur d'une combobox pour déterminer la valeur de la ligne dans laquelle je veux que la valeur mes autres combobox s'enregistrent. par exemple : Le texte de la combobox1 correspond à celui de la cellule A4 je voudrais qu'en B4 le texte de la combobox2 y figure.

2)De plus... j'ai une autre question... j'aimerais savoir s'il est possible que les valeurs retranscrites par défaut dans les combobox correspondent à celles des cellules dans lesquelles elles doivent s'enregistrer. Par exemple ; après avoir enregistré ma combobox2 dans D4. je souhaiterais que lorsqu'on ouvre à nouveau l'application, et qu'on sélectionne A4 il apparaisse B4 dans la combobox2... J'espère avoir été assez clair dans mes explications...

Au cas où cela pourrait faciliter mon exposé voici mon fichier excel : https://www.dropbox.com/sh/w7y0anwx3dmvejx/AACrvgz-XEdfq-W99eZxZyrNa

Merci d'avance pour votre aide !

2 réponses

  1. Modérateur
    Bonjour,
    Salut Michel_m,

    OMG... Y'a du taf!

    Bon :
    1- Si tu utilises la méthode find avec le contenu d'un textbox, je te recommande de l'utiliser avec un traitement d'erreur. En effet, la méthode suggérée par Michel partait du contenu d'une combobox qui limite les erreurs de saisie.
    Je te conseille donc :

    'avec Excel 2007, je te recommande d'utiliser, pour les lignes, des variables de type Long
    Dim Ligne As Long, RngTrouve As Range, Dim Indic As Byte
    
    With sheets("data")
        Set RngTrouve =.Columns("A").find(Textbox1.Value,.Range("A3"),xlvalues)
        'traitement d'une éventuelle erreur de saisie
        If RngTrouve = Nothing Then
            'message à l'utilisateur
            MsgBox "Saisie incorrecte."
            'sortie de la procédure
            Exit Sub
        'procédure s'il n'y a pas d'erreur :
        Else 
            'on repère la ligne :
            Ligne = RngTrouve.Row
            'Lorsque tous les n° des combo se suivent ET QUE
            'les valeurs sont contenues dans des colonnes qui se suivent aussi
            'on peut utiliser une boucle pour le remplissage :
            For Indic = 1 To 40
                'on remplit les combos :
                Me.Controls("ComboBox" &  Indic) = .Cells(Ligne, Indic + 1)
            Next
        End If
    End With


    2- tu recherches, dans la feuille, le contenu d'un textbox. Ok. Mais alors, pourquoi mettre ta procédure de recherche dans l'événement activate de ton userform?????
    Personnellement, je placerai, sur ton userform, un bouton de commande et la procédure de recherche dans l'événement Click de ce bouton de commande...
    Private Sub CommandButton1_Click()
    
    End Sub


    Cordialement,
    Franck P
    1
    1. Contributeur
      Bonjour,

      Difficile de s'y retrouver dans ton classeur ! tu aurais été sympa de préciser dans quel Userform tu as tes commbo
      Alors voici le principe

      dim ligne as integer
      ......
      with sheets("data")
          ligne=.Columns("A").find(combobox1,.Range("A3"),xlvalues).row
          combobox2=.cells(ligne,"B")
      end with


      après avoir enregistré ma combobox2 dans D4. je souhaiterais que lorsqu'on ouvre à nouveau l'application, et qu'on sélectionne A4 il apparaisse B4 dans la combobox2...

      J'espère avoir été assez clair dans mes explications...

      Raté!...

      au passage: tu es sur Excel>=2007
      ta formule de dernière ligne
      With Data
      derligne = .Range("B65536").End(xlUp).Row
      concerne XL<2007

      donc écris plutot cette instruction valable quelque soit la version
      With data
      derligne=range("B" & .rows.count).end(xlup).row

      ou aussi
      With Data
      derligne=.columns("B").find("*",,,,,xlprevious).row

      Bon WE

      Michel
      0
      1. Merci pour ta réponse et pour ton aide ! :)

        Mes combo se trouvent dans l'userform 5.

        Je suis assez perdu dans tes explications ; j'ai préféré appelé "ligne" = "criteria" .

        D'après ce que j'ai compris de ton explication je dois faire ceci :

        *Criteria est une valeur "integer" elle trouvera sa valeur dans la colonne A où la valeur sera égale à la textbox1 de l'userform 5.
        Ensuite j'enregistre la valeur dans la colonne B pour la combox1 ; C dans le combox2 ,etc ?

        Private Sub UserForm_Activate()
        Dim Criteria As Integer
        With Sheets("data")
        Criteria = .Columns("A").Find(TextBox1, .Range("A3"), xlValues).Row
        ComboBox1 = .Cells(Criteria, "B")
        ComboBox2 = .Cells(Criteria, "C")
        ComboBox3 = .Cells(Criteria, "D")
        ComboBox4 = .Cells(Criteria, "E")
        ComboBox5 = .Cells(Criteria, "F")
        ComboBox6 = .Cells(Criteria, "G")
        ComboBox7 = .Cells(Criteria, "H")
        ComboBox8 = .Cells(Criteria, "I")
        ComboBox9 = .Cells(Criteria, "J")
        ComboBox10 = .Cells(Criteria, "K")
        ComboBox11 = .Cells(Criteria, "L")
        ComboBox12 = .Cells(Criteria, "M")
        ComboBox13 = .Cells(Criteria, "N")
        ComboBox14 = .Cells(Criteria, "O")
        ComboBox15 = .Cells(Criteria, "P")
        ComboBox16 = .Cells(Criteria, "Q")
        ComboBox17 = .Cells(Criteria, "R")
        ComboBox18 = .Cells(Criteria, "S")
        ComboBox19 = .Cells(Criteria, "T")
        ComboBox20 = .Cells(Criteria, "U")
        ComboBox21 = .Cells(Criteria, "V")
        ComboBox22 = .Cells(Criteria, "W")
        ComboBox23 = .Cells(Criteria, "X")
        ComboBox24 = .Cells(Criteria, "Y")
        ComboBox25 = .Cells(Criteria, "Z")
        ComboBox26 = .Cells(Criteria, "AA")
        ComboBox27 = .Cells(Criteria, "AB")
        ComboBox28 = .Cells(Criteria, "AC")
        ComboBox29 = .Cells(Criteria, "AD")
        ComboBox30 = .Cells(Criteria, "AE")
        ComboBox31 = .Cells(Criteria, "AF")
        ComboBox32 = .Cells(Criteria, "AG")
        ComboBox33 = .Cells(Criteria, "AH")
        ComboBox34 = .Cells(Criteria, "AI")
        ComboBox35 = .Cells(Criteria, "AJ")
        ComboBox36 = .Cells(Criteria, "AK")
        ComboBox37 = .Cells(Criteria, "AL")
        ComboBox38 = .Cells(Criteria, "AM")
        ComboBox39 = .Cells(Criteria, "AN")
        ComboBox40 = .Cells(Criteria, "AO")

        End With
        End Sub

        N'ayant pas tout saisi dans l'explication j'ai également testé le code suivant :

        Private Sub UserForm_Activate()
        Dim Criteria1 As Integer
        Dim Criteria2 As Integer
        Dim Criteria3 As Integer
        Dim Criteria4 As Integer
        Dim Criteria5 As Integer
        Dim Criteria6 As Integer
        Dim Criteria7 As Integer
        Dim Criteria8 As Integer
        Dim Criteria9 As Integer
        Dim Criteria10 As Integer
        Dim Criteria11 As Integer
        Dim Criteria12 As Integer
        Dim Criteria13 As Integer
        Dim Criteria14 As Integer
        Dim Criteria15 As Integer
        Dim Criteria16 As Integer
        Dim Criteria17 As Integer
        Dim Criteria18 As Integer
        Dim Criteria19 As Integer
        Dim Criteria20 As Integer
        Dim Criteria21 As Integer
        Dim Criteria22 As Integer
        Dim Criteria23 As Integer
        Dim Criteria24 As Integer
        Dim Criteria25 As Integer
        Dim Criteria26 As Integer
        Dim Criteria27 As Integer
        Dim Criteria28 As Integer
        Dim Criteria29 As Integer
        Dim Criteria30 As Integer
        Dim Criteria31 As Integer
        Dim Criteria32 As Integer
        Dim Criteria33 As Integer
        Dim Criteria34 As Integer
        Dim Criteria35 As Integer
        Dim Criteria36 As Integer
        Dim Criteria37 As Integer
        Dim Criteria38 As Integer
        Dim Criteria39 As Integer
        Dim Criteria40 As Integer
        With Sheets("Data")
        Criteria1 = .Columns("A").Find(ComboBox1, .Range("A4"), xlValues).Row
        Criteria2 = .Columns("A").Find(ComboBox2, .Range("A4"), xlValues).Row
        Criteria3 = .Columns("A").Find(ComboBox3, .Range("A4"), xlValues).Row
        Criteria4 = .Columns("A").Find(ComboBox4, .Range("A4"), xlValues).Row
        Criteria5 = .Columns("A").Find(ComboBox5, .Range("A4"), xlValues).Row
        Criteria6 = .Columns("A").Find(ComboBox6, .Range("A4"), xlValues).Row
        Criteria7 = .Columns("A").Find(ComboBox7, .Range("A4"), xlValues).Row
        Criteria8 = .Columns("A").Find(ComboBox8, .Range("A4"), xlValues).Row
        Criteria9 = .Columns("A").Find(ComboBox9, .Range("A4"), xlValues).Row
        Criteria10 = .Columns("A").Find(ComboBox10, .Range("A4"), xlValues).Row
        Criteria11 = .Columns("A").Find(ComboBox11, .Range("A4"), xlValues).Row
        Criteria12 = .Columns("A").Find(ComboBox12, .Range("A4"), xlValues).Row
        Criteria13 = .Columns("A").Find(ComboBox13, .Range("A4"), xlValues).Row
        Criteria14 = .Columns("A").Find(ComboBox14, .Range("A4"), xlValues).Row
        Criteria15 = .Columns("A").Find(ComboBox15, .Range("A4"), xlValues).Row
        Criteria16 = .Columns("A").Find(ComboBox16, .Range("A4"), xlValues).Row
        Criteria17 = .Columns("A").Find(ComboBox17, .Range("A4"), xlValues).Row
        Criteria18 = .Columns("A").Find(ComboBox18, .Range("A4"), xlValues).Row
        Criteria19 = .Columns("A").Find(ComboBox19, .Range("A4"), xlValues).Row
        Criteria20 = .Columns("A").Find(ComboBox20, .Range("A4"), xlValues).Row
        Criteria21 = .Columns("A").Find(ComboBox21, .Range("A4"), xlValues).Row
        Criteria22 = .Columns("A").Find(ComboBox22, .Range("A4"), xlValues).Row
        Criteria23 = .Columns("A").Find(ComboBox23, .Range("A4"), xlValues).Row
        Criteria24 = .Columns("A").Find(ComboBox24, .Range("A4"), xlValues).Row
        Criteria25 = .Columns("A").Find(ComboBox25, .Range("A4"), xlValues).Row
        Criteria26 = .Columns("A").Find(ComboBox26, .Range("A4"), xlValues).Row
        Criteria27 = .Columns("A").Find(ComboBox27, .Range("A4"), xlValues).Row
        Criteria28 = .Columns("A").Find(ComboBox28, .Range("A4"), xlValues).Row
        Criteria29 = .Columns("A").Find(ComboBox29, .Range("A4"), xlValues).Row
        Criteria30 = .Columns("A").Find(ComboBox30, .Range("A4"), xlValues).Row
        Criteria31 = .Columns("A").Find(ComboBox31, .Range("A4"), xlValues).Row
        Criteria32 = .Columns("A").Find(ComboBox32, .Range("A4"), xlValues).Row
        Criteria33 = .Columns("A").Find(ComboBox33, .Range("A4"), xlValues).Row
        Criteria34 = .Columns("A").Find(ComboBox34, .Range("A4"), xlValues).Row
        Criteria35 = .Columns("A").Find(ComboBox35, .Range("A4"), xlValues).Row
        Criteria36 = .Columns("A").Find(ComboBox36, .Range("A4"), xlValues).Row
        Criteria37 = .Columns("A").Find(ComboBox37, .Range("A4"), xlValues).Row
        Criteria38 = .Columns("A").Find(ComboBox38, .Range("A4"), xlValues).Row
        Criteria39 = .Columns("A").Find(ComboBox39, .Range("A4"), xlValues).Row
        Criteria40 = .Columns("A").Find(ComboBox40, .Range("A4"), xlValues).Row
        ComboBox1 = .Cells(Criteria1, "B")
        ComboBox2 = .Cells(Criteria2, "C")
        ComboBox3 = .Cells(Criteria3, "D")
        ComboBox4 = .Cells(Criteria4, "E")
        ComboBox5 = .Cells(Criteria5, "F")
        ComboBox6 = .Cells(Criteria6, "G")
        ComboBox7 = .Cells(Criteria7, "H")
        ComboBox8 = .Cells(Criteria8, "I")
        ComboBox9 = .Cells(Criteria9, "J")
        ComboBox10 = .Cells(Criteria10, "K")
        ComboBox11 = .Cells(Criteria11, "L")
        ComboBox12 = .Cells(Criteria12, "M")
        ComboBox13 = .Cells(Criteria13, "N")
        ComboBox14 = .Cells(Criteria14, "O")
        ComboBox15 = .Cells(Criteria15, "P")
        ComboBox16 = .Cells(Criteria16, "Q")
        ComboBox17 = .Cells(Criteria17, "R")
        ComboBox18 = .Cells(Criteria18, "S")
        ComboBox19 = .Cells(Criteria19, "T")
        ComboBox20 = .Cells(Criteria20, "U")
        ComboBox21 = .Cells(Criteria21, "V")
        ComboBox22 = .Cells(Criteria22, "W")
        ComboBox23 = .Cells(Criteria23, "X")
        ComboBox24 = .Cells(Criteria24, "Y")
        ComboBox25 = .Cells(Criteria25, "Z")
        ComboBox26 = .Cells(Criteria26, "AA")
        ComboBox27 = .Cells(Criteria27, "AB")
        ComboBox28 = .Cells(Criteria28, "AC")
        ComboBox29 = .Cells(Criteria29, "AD")
        ComboBox30 = .Cells(Criteria30, "AE")
        ComboBox31 = .Cells(Criteria31, "AF")
        ComboBox32 = .Cells(Criteria32, "AG")
        ComboBox33 = .Cells(Criteria33, "AH")
        ComboBox34 = .Cells(Criteria34, "AI")
        ComboBox35 = .Cells(Criteria35, "AJ")
        ComboBox36 = .Cells(Criteria36, "AK")
        ComboBox37 = .Cells(Criteria37, "AL")
        ComboBox38 = .Cells(Criteria38, "AM")
        ComboBox39 = .Cells(Criteria39, "AN")
        ComboBox40 = .Cells(Criteria40, "AO")
        End With
        ' TextBox1.Text = UserForm3.ComboBox3.Text
        End Sub

        Merci encore !
        0