Combobox change

Bonjour,

Je vous explique mon soucis,

J'ai créé un formulaire avec 3 combobox à sélectionner

J'ai ensuite créé une macro qui se déclenche quand mes 3 combobox sont non vides.

ça fonctionne très bien.

Mais lorsque je rechange par exemple mon combobox3 la macro ne se déclenche pas à nouveau. Je suis obligée de quitter le formulaire et de refaire mon choix.

Voici le début de mon code

Private Sub ComboBox3_Change()

Dim Réf As String
Dim WI As Worksheet
Dim WS As Worksheet

If ComboBox1.Value <> " " Then
If ComboBox2.Value <> " " Then
If ComboBox3.Value <> " " Then

Je ne comprends pas pourquoi lorsque je change mon combobox3, ma macro ne se relance pas

Merci pour votre aide

Cleiiim

Bonjour,

Sans fichier, on n'a pas une vue d'ensemble du code.

Mais ceci : " " ne veut pas dire vide, vide = "" > les guillets collés.

ric

Bonjour,

Tu pourrais aussi tester :

If ComboBox1.ListIndex = -1 Then

ric

Salut cleiiim,

As-tu essayé le mode pas-à-pas pour voir où se situe le problème ? (en utilisant F8 pour avancer dans le code)

Sinon, avec un fichier c'est plus simple d'aider...

Déjà, en voyant ton code, pourquoi ne fais-tu pas ça ?

If ComboBox1.Value <> "" And ComboBox2.Value <> "" And ComboBox3.Value <> "" Then
    'Ton code
End If

De plus, dans ton code tu as ComboBox1.Value <> " " avec un espace au milieu, pour indiquer le vide c'est "" sans espace

Cordialement,

Baboutz

Bonjour,

Sans fichier, on n'a pas une vue d'ensemble du code.

Mais ceci : " " ne veut pas dire vide, vide = "" > les guillets collés.

ric

Bonjour Ric bonne remarque, d'autant que dans l'exemple donné il y a en plus un espace entre les guillemets

Pour le test combobox vide c'est mieux ?

If ComboBox1.ListIndex <> -1 Then

Merci à tous pour vos réponses,

j'ai fait les modifs mais ça ne change rien.

j'ai également testé le pas à pas.

Je vous joint un extrait du fichier pour mieux comprendre mon soucis.

Tout part du bouton NOUVEAU DOCUMENT,

ne vous occupez pas du reste (je travaille dessus)

Merci à vous

53fichier-fo.xlsm (110.00 Ko)

Comprends pas tout.

Tu souhaites un test des combobox avant validation ? donc au moment du clic sur le bouton valider

du userform "Document" ?

Pour commencer pourquoi après validation le userform n'est pas déchargé puis rechargé ? çà éviterai que de mauvaises info

se trouve sur la saisie suivante.

Private Sub CommandButton1_Click()
'AJOUT D'UN NOUVEAU DOCUMENT
    Sheets("IND002-VDD").Activate
    Range("A8").Select
    Selection.End(xlDown).Select
    Selection.Offset(1, 0).Select
    ActiveCell = ComboBox1.Value
    ActiveCell.Offset(0, 1).Value = ComboBox2
    ActiveCell.Offset(0, 2).Value = ComboBox3
    ActiveCell.Offset(0, 3).Value = TextBox1
    ActiveCell.Offset(0, 4).Value = TextBox9
    ActiveCell.Offset(0, 5).Value = TextBox8
    ActiveCell.Offset(0, 6).Value = TextBox7
    ActiveCell.Offset(0, 7).Value = TextBox10
    ActiveCell.Offset(0, 8).Value = TextBox5
    ActiveCell.Offset(0, 9).Value = TextBox4
    ActiveCell.Offset(0, 10).Value = TextBox3
    ActiveCell.Offset(0, 11).Value = TextBox2

    If ComboBox1.ListIndex = -1 Then
    MsgBox "Vous devez selectionner un Site avant de valider"
    Exit Sub
    End If

    If ComboBox2.ListIndex = -1 Then
    MsgBox "Vous devez selectionner un Type avant de valider"
    Exit Sub
    End If

    If ComboBox3.ListIndex = -1 Then
    MsgBox "Vous devez selectionner une catégorie avant de valider"
    Exit Sub
    End If

    MsgBox "Le document a bien été ajouté", vbOKOnly + vbInformation, "CONFIRMATION"

    Unload Me
    Document.Show
    

Bonjour le forum

Bonjour cleiim, ric, Baboutz & Xmenpl

Sur une idée aménagée de notre ami Gmb (que je salue ) , un code qui boucle sur tes contrôles :

Dim ctrl As Control
    Dim Cbo, lbl, n&, nb!, flag&

   Cbo = Array("ComboBox1", "ComboBox2", "ComboBox3")
    lbl = Array("1", "2", "3")
    flag = 0: nb = -1
    For n = 0 To UBound(Cbo)
     Controls(Cbo(n)).ForeColor = &H80000006
        If Controls(Cbo(n)) = "" Or Controls(Cbo(n)) = "A renseigner" Then
           Controls(Cbo(n)).ForeColor = vbRed
            Controls(Cbo(n)) = "A renseigner"

            flag = 1
        End If
    Next n

    If flag = 1 Then
        MsgBox "Saisie incomplète", 16
        Exit Sub
    End If

A insérer dans le code du Sub CommandButton1_Click()

@+ Ericcool02

Re,

Alors dans un premier temps,

Lorsque je rempli mes 3 combobox, je souhaite que mon textbox "N°" me propose automatiquement le prochain chiffre disponible.

capture

Ceci fonctionne, mais lorsque je rechange mes combobox la macro ne se relance pas. Mon chiffre reste le même.

Bonne idée de "nettoyer" le formulaire à chaque fois !

Merci pour vos retours

Bonjour,

En fermant et réouvrant le userform après chaque validation ….

il devient donc plus facile de verifier la dernière ligne non vide et de retirer 6 pour démarrer une numérotation à 1.

le code est dans la combobox1 mais on pouvait le mettre dans n'importe quel combobox puisque maintenant c'est impossible

de valider si les trois combobox ne sont pas renseignées.

Merci pour le retour,

Dans mon cas cette solution ne peut pas fonctionner, car dans mon fichier réel, j'ai 92 lignes et je peux en supprimer et en rajouter selon les besoins.

De plus la numérotation doit dépendre des V-DD-MDP ou V-DD-CDC ou V-DD-IND etc.

Je pensais juste qu'il y avait une autre solution que de fermer et réouvrir le userform.

Je ferai cette manipulation si c'est la seule solution possible dans mon cas.

Merci,

Cleiiim

En effet si le userform n'est pas fermé et réouvert difficile de faire comprendre à excel qu'il faut qu'il recalcul

un nouveau numéro car après validation les combobox n'ont pas été réinitialisées

A moins de créer un bouton spécifique dans lequel tu ajoutes la macro qui recalcul le numéro.

Mais çà commence à devenir compliqué et le risque de validation sans avoir regenéré un numéro devient plus grand.

Rechercher des sujets similaires à "combobox change"