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

VBA problème bouton de commande-événement_click

  • Initiateur de la discussion Initiateur de la discussion david84
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

david84

XLDnaute Barbatruc
Bonjour, dans le cadre du travail entrepris sur mon fichier associations
https://www.excel-downloads.com/threads/vba-amelioration-macro-fichier-association.149160/
j'ai un problème que je n'arrive pas à résoudre :
dans l'USF "gestion des mails" (bouton "envoi mails"), j'ai un bouton de remise à 0 dont le but est d'effacer les valeurs placées dans les combobox discipline, association et commune, ainsi que dans la zone de texte placée à droite (celle regroupant les mails des associations sélectionnées).
J'ai donc placé ce code :
Code:
Private Sub RàZ_Click()
For I = 0 To 3
Me.Controls(I) = ""
Next I
Call UserForm_Initialize
Discipline.SetFocus
End Sub
mais cela plante.
En plaçant dans les sub événementielles Change en début de code :
If NomDuContrôle = "" Then Exit Sub
les valeurs présentes dans les combo finissent pas s'effacer mais pas instantanément (après 2-3 clics) . Quant à la zone de texte, elle ne se vide pas.
Si vous avez des idées ou solutions, merci de m'en faire part !
NB : j'ai désactivé certaines sub pour permettre de tester l'USF plus aisément.
A+
 

Pièces jointes

Dernière édition:
Re : VBA problème bouton de commande-événement_click

Bonsoir à tous,

Pour t'aider, un truc de ce genre

Code:
Private Sub Remise_Zero()

  Me.TextBox1 = ""
  Me.ComboBox1.ListIndex = -1

   'Ici avec la propriété tag on peut boucler sur des contrôles listbox 
'Voir la fenêtre propriétés des contrôles concernés
  For Each Ctrl In Me.Controls
    [COLOR="Red"]If Ctrl.Tag = "L"[/COLOR] Then
      For i = 0 To Controls(Ctrl.Name).ListCount - 1
         If Controls(Ctrl.Name).Selected(i) Then Controls(Ctrl.Name).Selected(i) = False
      Next
    End If
  Next

  Me.ListBox1.Clear  
End Sub
 
Re : VBA problème bouton de commande-événement_click

Re
Bonsoir klin89 et merci de t'intéresser à mon problème.
Malheureusement, je n'arrive pas à faire fonctionner ton code.
Quelques infos me seraient sûrement utiles. Peux-tu me détailler ligne par ligne ta macro pour que je puisse l'adapter ?
Merci également de bien vouloir m'expliquer en quoi le fait d'utiliser la propriété Tag peut m'être utile (l'aide d'Excel est peu explicite à ce sujet).
Code:
If Ctrl.Tag = [B]"L"[/B] Then
que veut dire le "L" ?

Pour ma part, en modifiant le code comme indiqué ci-dessous, j'arrive à effacer la listbox affichant les mails :
Code:
Private Sub RàZ_Click()
For I = 0 To 2
Me.Controls(I) = ""
Next I
[B]ListeMails.Clear[/B]
Discipline.SetFocus
Call UserForm_Initialize
End Sub
Mais le problème de l'effacement non immédiat des 3 combobox persiste.
A+
 
Dernière édition:
Re : VBA problème bouton de commande-événement_click

Bonjour à tous,
Bonjour david84,

J'ai mis "L", j'aurais pu mettre "zozo".
Dans l'Userform et tous les contrôles qui le composent, tu as une propriété Tag, vois l'image ci-dessous.



Pour reprendre mon exemple, imagine une série de 3 listbox multiselect placés dans un formulaire.
Sur les 2 premiers, tu mets la propriété Tag = L et rien dans la 3ème.

Avec ta souris, tu sélectionnes les items de tes 3 listbox.
Puis tu exécutes la boucle ci-dessous.
Les items des 2 listbox, dont le tag est égal à L, seront alors désélectionnés
Tu remarqueras que les items de la 3 ème listbox ne le seront pas.

Code:
For Each Ctrl In Me.Controls [COLOR="Green"]'repris d'un code de bqtr[/COLOR]
    [COLOR="Red"][COLOR="Blue"]If Ctrl.Tag = "L"[/COLOR][/COLOR] Then
      For i = 0 To Controls(Ctrl.Name).ListCount - 1
         If Controls(Ctrl.Name).Selected(i) Then Controls(Ctrl.Name).Selected(i) = False
      Next
    End If
  Next

Voilà l'explication et le sens de l'instruction figurant dans la boucle.
Klin89

PS : je ne peux pas ouvrir ton fichier, je suis sur Excel 2003.
 

Pièces jointes

  • Tag.jpg
    20.5 KB · Affichages: 203
Dernière édition:
Re : VBA problème bouton de commande-événement_click

Re
merci klin89 pour ces explications. J'en ai compris le principe.
Entre temps, j'avais trouvé une solution en recherchant avec JNP🙂.
Je vous la livre :
dans discipline_change et commune_change rajouter ce qui est en gras :
Code:
Private Sub Discipline_Change()
If Discipline = "" Then Exit Sub
[B]If Association.Text <> "" Then Exit Sub[/B]
Dim Plage As Range
ListeMails.Clear
If Commune.Text = "" Then _
Set Plage = Filtre(Range("Tableau4[DISCIPLINES]"), Range("Tableau4[ADRESSES MAILS]"), Discipline)
If Commune.Text <> "" Then _
Set Plage = Filtre(Filtre(Range("Tableau4[COMMUNES]"), Range("Tableau4[DISCIPLINES]"), Commune), Range("Tableau4[ADRESSES MAILS]"), Discipline)

Ceci permet de sortir de la sub dès que la listbox association est renseignée.

Dans la sub commune_exit : enlever Discipline.SetFocus
Il semble que c'était cette partie-là qui empêchait l'effacement immédiat des valeurs lors du clic sur le bouton RàZ.

Mais merci encore car cela m'a permis de connaître cette propriété ce qui me servira par la suite.
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
32
Affichages
1 K
Réponses
11
Affichages
928
Réponses
2
Affichages
1 K
T
Réponses
4
Affichages
2 K
theovgnl
T
A
Réponses
5
Affichages
1 K
AlicePrince
A
C
Réponses
6
Affichages
1 K
charette36
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…