Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Effacement Combobox

Calvus

XLDnaute Barbatruc
Bonsoir le forum,

Je ne parviens pas à effacer le contenu d'un Combobox ! (Combobox3)
Je n'arrive pas à comprendre pourquoi.

Le code de remplissage :
VB:
Private Sub ComboBox2_Change()
ComboBox3.List = Application.Transpose(Range("B1:I1"))
End Sub

Le code d'effacement (il y a même 2 boucles pour le combobox3)
VB:
Private Sub CommandButton4_Click()
Dim i As Integer
For i = 1 To 3
Me("ComboBox" & i).Clear
Me.ComboBox3.Clear
MsgBox UserForm3("ComboBox" & i)
Next
End Sub

Les Combobox 1 et 2 s'effacent, mais pas le 3.
Et pourtant il renvoie bien une valeur dans la Msgbox.

Une idée du problème ?

Merci
 

Lone-wolf

XLDnaute Barbatruc
Bonjour Calvus , Jean Marie

Il faut remplir les combos à partir de Userform_Initialize()
With Feuil1
ComboBox3.List = Application.Transpose(.Range("B1:I1"))
End With

Userform_Activate()
Combobox3 = ""
End Sub

Et inutile de rajouter combobox3 , vu qu tu y fait déja référence dans la boucle. Evite aussi de mettre Application.Transpose(.Range("B1:I1")) dans Change() ou autres actions

Crée une Private Sub ( Private Sub Remplissage() ), puis dans la combo
If ComboBox3.Text <> "" then Call Remplissage

En PJ classeur exemple.

Double clique sur la feuille, sélectionne les 2 combos du haut, clique sur le bouton pour inserer les lignes, ensuite celle du bas (combo3).
 

Pièces jointes

  • Base-Exemple.xlsm
    17.6 KB · Affichages: 28
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Je ne parviens pas à effacer le contenu d'un Combobox ! (Combobox3)
Je n'arrive pas à comprendre pourquoi.
Moi non plus je ne comprends pas bien pourquoi cette ComboBox3 ne se vide pas.

As-tu essayé avec un EnableEvents ?
VB:
Private Sub CommandButton4_Click()
Dim i As Integer
    EnableEvents = False
    For i = 1 To 3
        Me("ComboBox" & i).Clear
        MsgBox UserForm3("ComboBox" & i)
    Next
    EnableEvents = True
End Sub
 

TooFatBoy

XLDnaute Barbatruc
Bonjour Marcel

Private Sub ComboBox2_Change()
ComboBox3.List = Application.Transpose(Range("B1:I1"))
End Sub

Si tu lui demande de se remplir, comment veux-tu qu'elle se vide??
Ce n'est pas cette procédure qui pose directement un problème, et c'est sûrement pour ça que Calvus a créé une procédure à part pour vider les ComboBox.

Mais vu que dans cette procédure où il vide les ComboBox il vide la ComboBox3 en dernier, ça ne devrait pas poser de problème, sauf s'il a une autre procédure qui vient agir sur le contenu de cette ComboBox3, d'où ma proposition (ce n'est bien qu'une proposition car je ne suis absolument pas certain que ça résolve son problème) de tester en désactivant les événements.
 

Lone-wolf

XLDnaute Barbatruc
Re
L'erreur vient peut-être de Me("ComboBox" & i).Clear à changer par
Controls("ComboBox" & i) si dans le même formulaire, sinon UserForm3.Controls("ComboBox" & i).

j'ai fait un test comme ceci, les 3 combos sont vides.

VB:
Private Sub ComboBox3_Change()
ComboBox3.List = Application.Transpose(Range("e1:i1"))
End Sub

Private Sub CommandButton1_Click()
For i = 1 To 3
Controls("ComboBox" & i).Clear
Next i
If ComboBox1 = "" And ComboBox2 = "" And ComboBox3 = "" Then
MsgBox "Les Combos sont vides !"
Else
MsgBox "C'est pas vrai nannnnn!"
End If
End Sub
 

Calvus

XLDnaute Barbatruc
Bonjour Ce lien n'existe plus, Lone-wolf, Marcel32, le forum,

Merci de vos réponses.
J'ai testé toutes vos solutions et aucune ne fonctionne malheureusement.

Je vous joins la partie du fichier concernant l'USF à problème.
Je sais que le CommandButton3 est une usine à gaz, mais je n'ai pas encore trouvé la solution pour optimiser le code. Alors soyez indulgents.

A bientôt
 

Pièces jointes

  • Temp Creaction Formulaire 3 Forum.xlsm
    70.6 KB · Affichages: 35

TooFatBoy

XLDnaute Barbatruc
Effectivement, le EnableEvents ne sert à rien.

La liste de ta ComboBox3 est bien vide, c'est juste un item qui reste affiché.
Tu peux peut-être ajouter Me("ComboBox" & i).Value = "" dans ta procédure de vidage des listes de tes ComboBox.
Ou alors ajouter Me("ComboBox" & i).ListIndex = -1 avant le Clear, ce qui à l'air de marcher et semble pas mal non plus.

Je me demande s'il ne faudrait pas revoir tes ComboBoxx_Change.
 
Dernière édition:

JM27

XLDnaute Barbatruc
Bonjour
La remise à zéro de la combo est fonction du style de celle ci
Si le style est
dropDowndownlist il n'est pas nécessaire d'insérer dans la raz
Me("ComboBox" & i) = ""

si le style est en dropdownCombo
elle accepte des valeurs hors données du déroulant, il est donc nécessaire
d'ajouter dans la procédure de RAZ :
Code:
Private Sub CommandButton4_Click()
     For i = 1 To 3
         Me("ComboBox" & i) = ""
         Me("ComboBox" & i).Clear
     Next
End Sub
par contre la question a se poser est pourquoi les deux premières s'effacent ?
 
Dernière édition:

Calvus

XLDnaute Barbatruc
Re, bonjour Ce lien n'existe plus,

Grâce à vos réponses, ça fonctionne.
Je n'ai gardé qu'une ligne du code, qui permet en plus de ne pas avoir à recharger le formulaire, contrairement à la propriété Clear.
VB:
Private Sub CommandButton4_Click()
    For i = 1 To 3
        Me("ComboBox" & i) = ""
    Next
End Sub
Merci donc.

Je me demande s'il ne faudrait pas revoir tes ComboBoxx_Change.
Ça je sais, et je le disais plus haut.
D'ailleurs, si tu as une idée...

par contre la question a se poser est pourquoi les deux premières s'effacent ?
Je suis bien d'accord, mais n'en ai aucune idée. C'est bien pourquoi j'ai posé la question ici, mais visiblement vous n'êtes pas plus avancés que moi.

Bonne journée.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…