Utilisation des combobox ; équivalent recherchev

Adrienkd Messages postés 2 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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. Adrienkd Messages postés 2 Statut Membre
       
      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