Combobox en cascade et Textbox

Bonjour Forum,

J'ai deux combo box en cascade qui sont lié qui remplisse des Textbox, seulement voilà dans mon fichier exemple je triche au niveau des Textbox ne sachant pas comment faire le code pour les alimenter en fonction de la Combobox 2 car toute les lignes ne sont pas identique.

Merci de votre aide.

ça c'est le code que j'ai mis et le fichier est en pièce jointe.

Private Sub ComboBox2_Change()

With Range("b1:b" + CStr(Range("B65535").End(xlUp).Row))
    Set c = .Find(ComboBox2.Value, LookIn:=xlValues)
    If Not c Is Nothing Then
        TextBox1 = c.Offset(0, 1).Value
        TextBox2 = c.Offset(1, 1).Value
        TextBox3 = c.Offset(2, 1).Value
        TextBox4 = c.Offset(3, 1).Value
        TextBox5 = c.Offset(0, 2).Value
        TextBox6 = c.Offset(1, 2).Value
        TextBox7 = c.Offset(2, 2).Value
        TextBox8 = c.Offset(3, 2).Value
    End If
End With

End Sub
79classeur1.zip (11.41 Ko)

Bonjour Muratime, bonjour le forum,

Regarce ce lien : https://forum.excel-pratique.com/excel/combobox-en-cascade-2-niv-et-resultat-dans-textbox-t90638.html avec une solution à un problème très similaire au tien...

Merci Thauthème, ce code est similaire mais ce n'est pas tout a fait ce que je cherche ça ne fonctionne pas pour mon fichier comme je voudrais.

J'ai mis des couleurs et un encadré rouge pour ce que doivent afficher les Textbox en sachant que parfois certaine Textbox seront vide.

Et aussi la CBOX 2 ne gère plus les doublons !!!

Voir le fichier

71classeur2.zip (15.94 Ko)

Re,

En pièce jointe ton fichier avec le code adapté...

98muratime-v01.zip (18.65 Ko)

Merci Thauthème, c'est exactement ça il me faudrait juste un petit clear Textbox quand on change le choix dans les box.

Re,

C'est déjà le cas avec la procédure [Effac] qui est appelée au chagement de chaque ComboBox...

Si je choisi aaaa dans la combo 1 et 1 dans a combo 2 j'ai toutes les texbox qui se remplisse ensuite si je change par 2 dans la combo 2 je n'ai plus que trois paire de textbox qui devrais être rempli les deux dernière textbox ne sont pas effacé.

Pour la combo box 1 ça fonctionne bien mais bizarrement sur la combo2 cela ne fonctionne pas l'effacement !!!

Re,

Tu as tout à fait raison ! Je te prie de m'excuser. En pièce jointe la v02 corrigée :

89muratime-v02.zip (18.22 Ko)

Non t'as pas a t'excuser c'est déjà bien de m'avoir aidé, sinon j'aimerais savoir a quoi correspond ça exactement les groupes de textbox comment tu les définis ?

T1 = 1: T2 = 5 'initialises les variables T1 et T2 (correspondant au numéros des TextBoxes)

J'ai vu que t'avais rajouté une ligne alors j'ai rajouté deux texbox et là aussi dois y avoir un petit bug

Si tu prend combo 1 bbbb et combo 2 tu prend 4, il y a 5 lignes avec des bis.

Re,

Je n'ai fait qu'analyser tes données. Tu récupères les données de la colonne C dans les TextBoxes 1 à 4 et celles de la colonne D dans les Textboxes 5 à 8. Je ne pouvais pas boucler avec ton système car on ne sait pas à l'avance combien de lignes correspondent au deux critères. T1 et T2 me permettent de savoir où je renvoie la donnée avec :

Me.Controls("TextBox" & T1).Value = TV(I, 3)
Me.Controls("TextBox" & T2).Value = TV(I, 4)

puis en incrémentant à chaque fois qu'une TextBox est remplie avec :

T1 = T1 + 1: T2 = T2 + 1

J'ai rajouté une ligne car je me suis dit que si tu avais plus de 4 lignes correspondant aux deux critères, ça allait planter. Car que tu n'as que 4 TextBoxes (x 2 pour les deux colonnes) en tout, ce qui fait 4 lignes maxi. C'est pour ça que j'ai rajouté On Error GoTo fin qui permet d'éviter le plantage en n'affichant que les 4 premières lignes si il y en a plus...

En fait, je trouve qu'il aurait été plus judicieux dans ton cas d'utiliser une ListBox à deux colonnes qui pourrait contenir toutes les lignes équivalentes aux deux critères sans aucune contraintes de maxi ou mini. Mais, peut-être que dans ton tableau tu n'auras jamais plus de 4 lignes et dans ce cas les précautions que j'ai prises sont inutiles...

J'ai abandonné le choix de la listbox car on ne peu régler la hauteur des lignes comme on le ferais pour la largeur des colonnes.

Je voulais savoir pour ce code

T1 = 1: T2 = 5 'initialises les variables T1 et T2 (correspondant au numéros des TextBoxes)

le 1: et le 5 ça correspond a quoi ?

Re,

Regarde ce que ça donnerait (version 03) :

[Édition]

Nos posts se sont croisé...

quand T1 vaut 1 j'envoie les données dans la TextBox1 avec (Me.Controls("TetxBox" & T1)

quand T2 vaut 5 j'envoie les données dans la TextBox5 avec (Me.Controls("TetxBox" & T2)

après avec l'incrémentation T1 = T1 + 1, T2 = T2 + 1 je passe aux TextBox2 et TextBox6, etc...

24muratime-v03.zip (20.19 Ko)

C'est une autre solution assez similaire.

Sinon le 1: et le 5 ça correspond a quoi ?

Re,

Je t'ai repondu dans mon post précédent car nos posts se sont croisés...

AH ok j'ai vu et le : c'est pour séparer ?

Bonjour Muratime,

Oui : permet d'écrire deux instructions sur la même ligne en les séparant...

Bonjour Thauthème

Ok ça marche Nickel, merci BCP pour ton aide

Alléluia !...

Peu être une dernière chose si je veux afficher une heure dans une textbox du style 12:45 qui est sur la feuille comment tu procède ? Car je fais un essai mais ça affiche au format standard.

Bonjour le fil, bonjour le forum,

@Stepaustras

En A1 un temps, pour récupérer ce temps dans la TextBox1 d'une UserForm :

Me.TextBox1.Value = Format(Range("A1").Value, "hh:mm")
Rechercher des sujets similaires à "combobox cascade textbox"