Userfor problem listbox avec bouton
Dans mon userform ma listbox1 et alimenter par
Private Sub UserForm_Initialize()
ListBox1.List = Range("E3:E10").Value
Et tout fonctionne correctement
Quand je clique sur le bouton 1 le texte « aaa » et bien intègre dans la plage de cellule (cellule vide) et ma listbox1 et bien réinitialisé et le bouton 1 = false
Petit problème ou je vous demande votre aide, c’est à la réouverture du fichier le ou les boutons déjà présents dans la plage de cellule et de la listbox1 sont à nouveau sur true au lieu de false.
Merci de votre aide
Bonjour,
Ce que tu dis n'est pas très compréhensible !
Si tu parles de contrôles CommandButton, leur propriété Value ne présente guère d'intérêt ! Elle a par ailleurs toujours la valeur False !
Il serait donc bon que tu précises ton problème !
NB- Si ta façon d'écrire le code est ordonnée, elle n'assure cependant pas la meilleure lisibilité qui soit ! Une indentation classique, sans intercaler un sous-titre ou un commentaire entre chaque ligne, serait certainement préférable pour une lecture rapide...
Cordialement.
Complément : tu parles peut-être de la propriété Enabled des bouton, soit leur caractère actif ou non actif !
Dans ce cas, il est certain que cette propriété revient à sa valeur par défaut qui est True, chaque fois que tu ouvres le Userform !
Il t'appartient donc de tester avant affichage du Userform les conditions qui doivent prévaloir pour mettre cette propriété éventuellement à False avant affichage, donc dans ta procédure d'initialisation.
Tu peux le cas échéant préférer faire l'inverse : mettre la propriété Enabled par défaut à False, et lors de l'initialisation tester si tu dois la faire passer à True ou non...
Cordialement.
Dans mon userform : je clique sur le bouton 1 ce qui ajoute AAA a ma liste box et par la meme occasion le bouton 1 deviens False.
Le problème donc :
Si je ferme le classeur puis je l’ouvre à nouveau de là je vais dans mon userform ma listbox1 et bien à jour avec AAA dans les items mais le bouton 1 lui devrais être en False et pas en true car AAA et déjà dans la listbox
J’arrive à réinitialiser les boutons. Ci-joint code
Private Sub UserForm_Initialize()
'**********************************************
' initialiser la listebox1 par rapport a la plage de cellules
'**********************************************
ListBox1.List = Range("E3:E10").Value
'**********************************************
' initialiser le compteur de la listbox1
'**********************************************
lblcount.Caption = ListBox1.ListCount - 1
Dim nl As Integer
Dim PL As Range
Dim CEL As Range
Set PL = Range("E3:E9") 'plage de cellules
For Each CEL In PL
If CEL.Value = "aaa" Then ' si aaa ce trouve dans la plage de cellule E3:E9
aaa.Enabled = False ' désactive le bouton aaa
ListBox1.List = Range("E3:E10").Value
ElseIf CEL.Value = "bbb" Then 'si bbb ce trouve dans la plage de cellule E3:E9
bbb.Enabled = False
ListBox1.List = Range("E3:E10").Value
ElseIf CEL.Value = "ccc" Then 'si ccc ce trouve dans la plage de cellule E3:E9
ccc.Enabled = False
ListBox1.List = Range("E3:E10").Value
ElseIf CEL.Value = "ddd" Then 'si ddd ce trouve dans la plage de cellule E3:E9
ddd.Enabled = False
ListBox1.List = Range("E3:E10").Value
End If
Next
End Sub
Mais quand la liste et vide et je clique sur le bouton 1 le mot AAA va bien dans la plage de cellule et dans la listbox1 mais le bouton ne se met pas à false ( il faut cliqué une 2eme fois avant de le mettre à false)
Je n'ai toujours pas compris ce que tu veux faire...
En tout cas, inutile d'initialiser 5 fois la ListBox !
Si tu ne précises pas mieux ton objectif, il est difficile de te dire si ce que tu fais va dans ce sens ou non ! On voit ce que tu fais, mais savoir si c'est ce que tu veux faire, c'est autre chose !
NB- Et, s'il te plait, utilise les balises Code pour citer du code dans un post, c'est pénible à lire sinon !
Cordialement.
Merci déjà pour les conseils
Merci de tester cette procédure pour vous rendre compte du problème
Dans la feuille excel supprimer le contenue de la plage E3 :E9
Puis allez dans l’userform et cliquez sur le bouton 1 (le « aaa » va apparaitre dans dans la listbox ) mais le bouton ne se met pas à false ( il faut cliquez une 2eme fois pour le mettre à false ) et le but et d’avoir un seule item avec le même nom ou texte »aaa ».
Merci de votre patience
Cela se produit pour le premier bouton que tu utilises quand aucune inscription n'existe !
For Each CEL In PL
If CEL.Value = "" Then CEL.Value = "aaa": Exit For
aaa.Enabled = False
Next CELEn effet si la première cellule est vide, tu sors de la boucle avant !
Par la suite la première cellule n'étant plus vide, tu désactives le bouton concerné autant de fois qu'il y a de cellules non vides !
Ton code est à revoir, cette commande doit être sortie de la boucle pour n'être exécutée qu'une seule fois.
Ceci dit je ne vois toujours pas bien l'intérêt de la manoeuvre : une fois que tu as mis 4 inscriptions différentes, c'est fini !!
A moins de rajouter des boutons pour en mettre d'autres !
A ce propos, tu as déjà 4 procédures boutons identiques quand une suffirait (avec l'inscription à faire passée en argument)... Ça fait du remplissage inutile...
Cordialement.
Merci pour ta réponse
Le but final et de créer une procédure complète pour des réglages ‘ logo1 remplacer par la suite à une équipe exemple Psg ou Monaco ….) et donc on ne pourra pas avoir une équipe 2 fois mais par avec un autre userform choisir la catégorie du poussin, cadet, ou senior .
Tous ces paramètres vont être stocké dans une feuille cachet.
Procédure a l’ouverture du fichier excel
1. Regarde si la date et renseigner (déjà fait)
2. Les équipes (en cours)
3. Les catégories par équipe renseigné
4. Le nombre de joueurs par catégories
5. Le nombre de place administrateur à pourvoir
….
Pour ce qui et
« A ce propos, tu as déjà 4 procédures boutons identiques quand une suffirait (avec l'inscription à faire passée en argument)... Ça fait du remplissage inutile... »
J’essaie ne comprend pas tous (je suis novice), j’essaie d’apprendre à mon rythme
Le but n’ai pas d’avoir la raiponce toute faite mais bien de comprendre pourquoi et comment faire
Je vais voir comment faire pour résoudre ce problème de sortie de boucle
amicalement