Je reviens vers vous pour avoir de l'aide pour mon problème.
Actuellement, suivant la valeur choisie dans la combobox, la textbox s'adapte quand j'appui sur le bouton " Validez ".
Je bloque pour placer ce code dans l'initiation de l'userform et ainsi que la valeur de la textbox évolue quand je change la valeur choisie dans la combobox.
Dim Mois, Fourni, ligne, colonne As Range
Mois = TextBox5.Value
Fourni = ComboBox2.Value
With Sheets("2016")
.Range("B18", "B33").Select
Set ligne = Selection.Find(What:=Fourni, After:=ActiveCell, LookIn:=xlValue, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False)
Après avoir complété l’UserForm2, si je clique sur « Valider », j’ai le message d’erreur suivant « Erreur d’exécution ‘9’ ; ….. ».
Je bloque pour placer ce code dans l'initiation de l'userform et ainsi que la valeur de la textbox évolue quand je change la valeur choisie dans la combobox.
Si tu places ton code dans l’initialisation de l’UserForm (Sub UserForm_Initialize), celui-ci ne sera exécuté qu’au chargement de l’objet UserForm2, et non en fonction de la Combobox.
Cordialement,
Bernard
Re : Adapter textbox en fonction combobox automatiquement
Bonjour Llyod,
S'il te plaît explique-nous, ce que tu veux obtenir. Pas ce que tu as tenté d'obtenir.
Pour quel usage l'userform va te servir (insérer de nouvelles données ou modifier?).
Ta feuille est mal agencée, si c'est un bd.
Par ailleurs, Lloyd, en VBA les Select sont à éviter, ils sont en général inutiles, voire nuisibles.
Je me suis permis de modifier votre code mais vous n'êtes pas du tout obligé de me suivre
Code:
Private Sub CommandButton3_Click()
TextBox4 = ""
If IsDate("1/" & TextBox5) And ComboBox2.ListIndex > -1 Then
TextBox4 = Sheets("2016").Cells(ComboBox2.ListIndex + 18, Month("1/" & TextBox5) + 2)
TextBox4 = Format(TextBox4, "0.00 €")
End If
End Sub
Private Sub UserForm_Initialize()
Dim c As Range
TextBox5 = Application.Proper(Format(Date, "mmmm"))
With Sheets("2016")
For Each c In .[C:C].SpecialCells(xlCellTypeConstants, 2)
If c Like "Encaissement*" Then ComboBox1.AddItem c
Next
If .[B18] <> "" Then If .[B19] = "" Then ComboBox2.AddItem .[B18] Else _
ComboBox2.List = .Range("B18", .[B18].End(xlDown)).Value
End With
End Sub
Edit 1 : bonjour cathodique, je ne vous avais pas vu. Llyod est en phase d'élaboration de son projet.
Edit 2 : ajouté le cas .[B19] = "" (un seul fournisseur).
Si tu places ton code dans l’initialisation de l’UserForm (Sub UserForm_Initialize), celui-ci ne sera exécuté qu’au chargement de l’objet UserForm2, et non en fonction de la Combobox.
Cordialement,
Bernard
Merci pour cette information, j'ai cependant dans une autre feuille excel, un For qui permet de mettre automatique les textbox dans l'initialisation de l'userform.
S'il te plaît explique-nous, ce que tu veux obtenir. Pas ce que tu as tenté d'obtenir.
Pour quel usage l'userform va te servir (insérer de nouvelles données ou modifier?).
Salut cathodique, ce classeur me permet de suivre la comptabilité de mon entreprise. J'ai mis en place cet userform pour m'informer et rentrer de nouvelles données de manière plus claire !
Avant cet userform, ca devient vite le bordel pour mettre des données, ne pas se planter de mois ou de fournisseur, cela fausse tout les calculs ensuite.
J'aimerais ensuite ajouter une textbox " Commentaires ", écrire par exemple "Facture 20023" et retrouver ce commentaire sous de forme de commentaire sur la cellule. J'ai commencer à chercher sur internet, ça semble assez complexe !
Je te l'accorde, il faut que je change l'userform, mettre qu'une case "Montant", si la recherche trouve une valeur, la case se grise, sinon on peux écrire le montant que l'on souhaite ajouté.
Après je ne sais pas si on peux appeler ça une base de données..Dit moi si c'est plus clair, les modifications que tu apporterais..
Private Sub CommandButton3_Click()
TextBox4 = ""
If IsDate("1/" & TextBox5) And ComboBox2.ListIndex > -1 Then
TextBox4 = Sheets("2016").Cells(ComboBox2.ListIndex + 18, Month("1/" & TextBox5) + 2)
TextBox4 = Format(TextBox4, "0.00 €")
End If
End Sub
Private Sub UserForm_Initialize()
Dim c As Range
TextBox5 = Application.Proper(Format(Date, "mmmm"))
With Sheets("2016")
For Each c In .[C:C].SpecialCells(xlCellTypeConstants, 2)
If c Like "Encaissement*" Then ComboBox1.AddItem c
Next
If .[B18] <> "" Then If .[B19] = "" Then ComboBox2.AddItem .[B18] Else _
ComboBox2.List = .Range("B18", .[B18].End(xlDown)).Value
End With
End Sub
Edit 2 : ajouté le cas .[B19] = "" (un seul fournisseur).
Salut job75, et merci beaucoup pour ce code, il marche parfaitement et évite l'utilisation des Select.
Je suis un grand débutant en vba, pourriez-vous me l'expliquer plus en détail ? Surtout l'explication des fonctions .AddItem, .ListIndex, ComboBox2.ListIndex + 18..
EDIT : Je m'y suis penché dessus ce soir, un grand merci à job75, j'ai pu ainsi revoir l'ensemble du code et franchement ton code marche du feu de dieu. Un grand merci à vous tous
Je mets en PJ, la version finale. La problématique est pour mettre des commentaires, j'ouvre un autre topic pour que soit plus clair.
En tout cas un grand merci d'avoir pris le temps de m'aider.