2 listes deroulantes USERFORM

Hello

Je n'arrive pas à avoir 2 listes déroulantes indépendantes sur un USERFORM (je debute en VBA et récupère des bouts de codes à droite et à gauche que je tente d'adapter).

Voila mon code

'Pour le formulaire

Private Sub UserForm_Initialize()

Dim J As Long

Dim I As Integer

ComboBox1.ColumnCount = 1 'Pour la liste déroulante des objets

ComboBox1.List() = Array("Appel téléphonique", "Mail", "Courrier", "Visite chantier", "Réunion de chantier", "Autre")

Dim J As Long

Dim I As Integer

ComboBox2.ColumnCount = 1 'Pour la liste déroulante des actions

ComboBox2.List() = Array("", "Urgent", "A faire", "Pour info")

For I = 1 To 2

Me.Controls("TextBox" & I).Visible = True

Next I

End Sub

Bonsoir,

Le même (ce qui est utile seulement ! )

Private Sub UserForm_Initialize()
    ComboBox1.List() = Split("Appel téléphonique;Mail;Courrier;Visite chantier;Réunion de chantier;Autre", ";")
    ComboBox2.List() = Split("Urgent;A faire;Pour info", ";")
End Sub

En ce qui concerne les contrôles d'un Userform, on règle leur propriétés par défaut, c'est à dire les caractéristiques qu'ils doivent avoir à l'ouverture, dans la fenêtre de Propriétés, pour l'essentiel. On n'initialise lors de l'ouverture que des aspects qui peuvent se modifier...

Il est donc inutile de définir le nombre de colonnes dans le code d'initialisation, d'autant plus que 1 colonne est la valeur d'origine par défaut de cette propriété pour une ComboBox.

Inutile également de rendre les TextBox visibles ! (à moins d'avoir poussé le vice de les rendre non visibles par défaut pour pouvoir les afficher lors de l'initialisation ! )

Cordialement.

Pfffff tout bêtement en fait ... C'est beau de s'y connaitre en VBA

Merci !!!

Bonsoir

Essayez cette méthode

Private Sub UserForm_Initialize()

    Dim I As Byte
    ComboBox1.List = Array("Appel téléphonique", "Mail", "Courrier", "Visite chantier", "Réunion de chantier", "Autre")
    ComboBox2.List = Array("", "Urgent", "A faire", "Pour info")
    For I = 1 To 2
    Me.Controls("TextBox" & I).Visible = True
    Next I

End Sub

Merci pour vos reponses. La 1ere méthode fonctionne bien

Par contre, tant que je vous tiens, comment remplir une cellule verrouillée ?

Quand je rempli mon userform et que ma feuille ACCUEIL est verrouillée, je ne peux pas enregistrer ...

'Pour le bouton Nouveau contact

Private Sub CommandButton1_Click()

Dim L As Integer

If MsgBox("Confirmez-vous l’information ?", vbYesNo, "Demande de confirmation d’ajout") = vbYes Then

L = Sheets("Accueil").Range("a65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide

Range("A" & L).Value = TextBox1

Range("B" & L).Value = ComboBox1

Range("C" & L).Value = TextBox2

Range("D" & L).Value = ComboBox2

End If

End Sub

123 mot de passe

Private Sub CommandButton1_Click()

    Dim sh As Worksheet, L As Integer
    Set sh = Sheets("Accueil")
    With sh
    L = .Range("a65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide

If MsgBox("Confirmez-vous l’information ?", vbYesNo, "Demande de confirmation d’ajout") = vbYes Then
    .Unprotect "123"
        .Range("A" & L).Value = TextBox1
        .Range("B" & L).Value = ComboBox1
        .Range("C" & L).Value = TextBox2
        .Range("D" & L).Value = ComboBox2
.Protect "123"
End If
End With

End Sub

Il faut déverrouiller puis reverrouiller, dans le code (méthodes Worksheet.Unprotect et Worksheet.Protect.

Il serait préférable de mettre TextBox1.Value, etc. pour affecter les valeurs des contrôles (ne pas le mettre a parfois des effets pervers !)

NB- Il serait bon aussi que tu utilises les balises Code pour citer du code dans un post. Et indenter ton code de façon qu'il soit parfaitement lisible.

Rechercher des sujets similaires à "listes deroulantes userform"