Utilisation userform

Bonjour,

Je débute en user form, mais je n'arrive pas a les faire fonctionner.

Je souhaite afficher les résultats de recherche dans un userform, quand je fait un choix dans liste déroulante

Private Sub ComboBox1_Change()

Dim NomST As String

Dim Com As Range
NomSTCom = Evaluation_ST.ComboBox1.Value
Set Com = ThisWorkbook.Sheets("Commentaires").Columns(2).Find(NomSTCom)
If Not Com Is Nothing Then
        Evaluation_ST.TextBox5.Value = ThisWorkbook.Sheets("Commentaires").Cells(NomSTCom.Row, 3)
        Evaluation_ST.TextBox6.Value = ThisWorkbook.Sheets("Commentaires").Cells(NomSTCom.Row + 1, 3)
        Evaluation_ST.TextBox7.Value = ThisWorkbook.Sheets("Commentaires").Cells(NomSTCom.Row + 2, 3)
        Evaluation_ST.TextBox8.Value = ThisWorkbook.Sheets("Commentaires").Cells(NomSTCom.Row + 3, 3)
End If
End Sub

Merci de bien vouloire m'xpliquer ou est mon erreur!

Cordialement

vincent

29essai-userform.xlsm (62.04 Ko)

Bonsoir,

Premier point, il faut charge ton userform. Prends ce code et place le dans l'USF après la macro Private combobox_change

Private Sub UserForm_Initialize()
'Macro Dan pour vinc24
Dim i As Byte
With Sheets("Commentaires")
For i = 1 To .Range("B" & Rows.Count).End(xlUp).Row
    Me.ComboBox1.AddItem .Range("B" & i + 8)
Next
End With
End Sub

Deuxième point, à quoi correspond la textbox 8. En gros précise quelles infos tu veux voir dans ton USF.

Idéalement tu ne peux avoir qu'un seul sous traitant. Ici tu as deux A par exemple.

Amicalement

Pour ton premier point, j'ai fait ce que tu as dit, en remplacent "Userform" par le nom de ma userform "Evaluation_ST". Mais je ne voit pas a quoi cela sert?

Consternant la textbox 8, il s’agissait d'une erreur de ma part, il n'y en a que 3 "5, 6 et 7"!

Private Sub ComboBox1_Change()
Dim NomST As String
Dim Com As Range
NomSTCom = Evaluation_ST.ComboBox1.Value
Set Com = ThisWorkbook.Sheets("Commentaires").Columns(2).Find(NomSTCom)
If Not Com Is Nothing Then
    'premier commentaire positif sur le sous traitant selectionnée dans la liste
        Evaluation_ST.TextBox5.Value = ThisWorkbook.Sheets("Commentaires").Cells(NomSTCom.Row, 3)
    'deuxième commentaire positif sur le sous traitant selectionnée dans la liste
        Evaluation_ST.TextBox6.Value = ThisWorkbook.Sheets("Commentaires").Cells(NomSTCom.Row + 1, 3)
     'troisième commentaire positif sur le sous traitant selectionnée dans la liste
        Evaluation_ST.TextBox7.Value = ThisWorkbook.Sheets("Commentaires").Cells(NomSTCom.Row + 2, 3)     
End If
End Sub

Private Sub Evaluation_ST_Initialize()
'Macro Dan pour vinc24
Dim i As Byte
With Sheets("Commentaires")
For i = 1 To .Range("B" & Rows.Count).End(xlUp).Row
    Me.ComboBox1.AddItem .Range("B" & i + 8)
Next
End With
End Sub

Il y a toujours un problème lorsque je lance la macro, qui viendrais de :

Cells(NomSTCom.Row, 3)

Merci d'avance pour votre aide!

Vincent

Bonsoir,

Je ne répond qu'a la dernière question. (Je n'ai pas lu le reste)

Tu n'a pas déclaré "NomSTCom" donc ça entretien une certaine confusion mais à la sortie du TextBox, NomSTCom contient "A", "B", "C" ou "D"...

par suite :

Cells(NomSTCom.Row, 3) ne veut rien dire... (parce que Cells("A".Row,3) ne veut rien dire.

Remarque: Comme on est dans le Private module du USF, ça ne sert à rien de répéter :

Evaluation_ST. ...à chaque ligne

En général on écrit directement :

NomSTCom = ComboBox1

TextBox5 = Sheets("Commentaires").Cells(blabla...

A+

Merci pour tes remarques, ca m'a permis d'avancer, maintenant, les textbox se remplissent.

Par contre il y a un décalage des "commentaires", si je sélectionne "A"

Autre chose, quand je sélectionne "A", un commentaire de "B" s'affiche, j'ai essayer d'ajouter une condition entre chaque textbox, mais sans succès.

Ce serais une sorte de vérification avant chaque "Textbox", pour savoir si le commentaire correspond a la lettre (A, B ou C...) Peux-etre compter le nombre de ligne = "A", et faire une boucle le nombre de fois égale au nombre de lignes?!

début du code :

Private Sub ComboBox1_Change()

Dim NomSTCom As String
Dim Com As Range

NomSTCom = Evaluation_ST.ComboBox1.Value
Set Com = Sheets("Commentaires").Columns(2).Find(NomSTCom)
If Not Com Is Nothing Then

    'premier commentaire positif sur le sous traitant selectionnée dans la liste
        TextBox5 = Sheets("Commentaires").Cells(Com.Row, 3)
    'deuxième commentaire positif sur le sous traitant selectionnée dans la liste
        TextBox6 = Sheets("Commentaires").Cells(Com.Row, 3)
     'troisième commentaire positif sur le sous traitant selectionnée dans la liste
        TextBox7 = Sheets("Commentaires").Cells(Com.Row, 3)

End If
End Sub

Merci encore

vincent

20essai-userform.xlsm (65.05 Ko)

Bonsoir

Vinc24 : Dan t'as fourni une macro qui s'appelle Private Sub UserForm_Initialize() il ne faut pas changer son nom

Sinon elle ne sera jamais exécutée automatiquement

Voici un essai

Merci beaucoup, ca fonctionne parfaitement!

Je n'avais pas compris pour la MAcro de Dan!

bonne soirée

vincent

Bonjour a vous,

J'ai quand même une petite question, une dernière chose m'intrigue!

Quand mon bouton de macro se situe sur une autre feuil, seul les premiers résultats s'affichent... Alors que ca renvoie vers la même macro!

Vincent

bonjour,

ça marchera mieux si tu rajoutes le point avant Range pour les deuxième et 3ème commentaires

If Range("B" & blabla..

A+

Merci beaucoup, en effet, un petit détail qui fait la différence!

Vincent

Rechercher des sujets similaires à "utilisation userform"