Utilisation des combobox ; équivalent recherchev

Fermé
Adrienkd Messages postés 2 Date d'inscription vendredi 5 juillet 2013 Statut Membre Dernière intervention 7 juillet 2013 - 5 juil. 2013 à 23:49
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 9 juil. 2013 à 08:29
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

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
Modifié par pijaku le 9/07/2013 à 08:44
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 6/07/2013 à 08:30
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
Adrienkd Messages postés 2 Date d'inscription vendredi 5 juillet 2013 Statut Membre Dernière intervention 7 juillet 2013
7 juil. 2013 à 01:38
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