[VBA] : Un bouton dans userform dynamique n'a plus d'action
Résolu
anton26
Messages postés
33
Statut
Membre
-
piopicolo Messages postés 1422 Statut Membre -
piopicolo Messages postés 1422 Statut Membre -
Bonjour,
J'ai une userform dynamique où l'on rentre des noms. Afin d'afficher ces noms dans une feuille, j'ai ajouté un bouton valider. Si j'ajoute ce bouton directement sur le userform, cela fonctionne. Lorsque je crée un bouton dynamiquement (le bouton se met automatiquement en bas de la page en fonction du nombre de noms a rentrer) il n'a plus aucun effet. Quelqu'un aurait-il une solution à mon problème ?
Merci d'avance
J'ai une userform dynamique où l'on rentre des noms. Afin d'afficher ces noms dans une feuille, j'ai ajouté un bouton valider. Si j'ajoute ce bouton directement sur le userform, cela fonctionne. Lorsque je crée un bouton dynamiquement (le bouton se met automatiquement en bas de la page en fonction du nombre de noms a rentrer) il n'a plus aucun effet. Quelqu'un aurait-il une solution à mon problème ?
Merci d'avance
A voir également:
- Bouton dynamique excel
- Excel compter cellule couleur sans vba - Guide
- Dépassement de capacité vba ✓ - Forum Excel
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Vba range avec variable ✓ - Forum VB / VBA
2 réponses
Bonjour anton26,
Dans ton cas il serait préférable de placer le CommandButton sur le Userform tout de suite avec le code qui va bien. En effet pour un seul bouton c'est pas la peine d'utiliser la création dynamique.
Quand tous les TextBox dynamiques sont en place, il suffit de déplacer le bouton au bon endroit en jouant sur les propriétés .Left et .Top
Mais si tu dois créer un nombre de boutons non connu d'avance, alors oui il faut passer par création dynamique. Pour ça tu dois apprendre à maitriser les Classes et les Collections. J'aurais un exemple simple si tu veux.
A plus tard.
Dans ton cas il serait préférable de placer le CommandButton sur le Userform tout de suite avec le code qui va bien. En effet pour un seul bouton c'est pas la peine d'utiliser la création dynamique.
Quand tous les TextBox dynamiques sont en place, il suffit de déplacer le bouton au bon endroit en jouant sur les propriétés .Left et .Top
Mais si tu dois créer un nombre de boutons non connu d'avance, alors oui il faut passer par création dynamique. Pour ça tu dois apprendre à maitriser les Classes et les Collections. J'aurais un exemple simple si tu veux.
A plus tard.
Bonjour,
J'ai de temps en temps ce genre de problème parce que VBA contrairement à EXCEL ne suit pas correctement les changements des Userform.
Cela arrive quand je copie dans le "Userform" une autre forme (bouton, liste, etc....) Je ne sais pas pourquoi mais VBA ne crée pas le lien et quand j'affiche mon Userform, le bouton est inactif ou apparaît ailleurs.
Bref, dans ce cas, j'efface l'objet inactif et en recrée un depuis la boîte outils
Je peux alors copier le programme de l'objet dans le nouvel objet et çà marche.
Je ne sais pas si c'est ton cas mais tu peux essayer.
A+
J'ai de temps en temps ce genre de problème parce que VBA contrairement à EXCEL ne suit pas correctement les changements des Userform.
Cela arrive quand je copie dans le "Userform" une autre forme (bouton, liste, etc....) Je ne sais pas pourquoi mais VBA ne crée pas le lien et quand j'affiche mon Userform, le bouton est inactif ou apparaît ailleurs.
Bref, dans ce cas, j'efface l'objet inactif et en recrée un depuis la boîte outils
Je peux alors copier le programme de l'objet dans le nouvel objet et çà marche.
Je ne sais pas si c'est ton cas mais tu peux essayer.
A+
C'est vrai que je ne maîtrise ni les classes ni les collections donc je vais peut être me limiter à un bouton simple. Je veux bien tout de même voir ton exemple si jamais je le comprends.
Merci
Pour l'exemple, tu ouvres un nouveau classeur, tu actives Visual basic Editor (Alt F11)
Tu inseres un UserForm, nommé UserForm1,dans le code de UserForm1 tu copies ce code:
Maintenant tu inseres un nouveau module de classe, que tu appelleras ClasBT. Par défaut ça met Classe1 mais tu peux changer dans les propriétés.
Dans ce module ClasBT tu colles ce code
Affiches Userform1 et tu verras deux boutons qui réagissent au clic.
Voilà, j'ai chiné sur le net et j'ai fini par dénicher cet exemple, enfin j'ai simplifié au maximum.
Regardes si tu arrives à décoder et à adapter à ton projet
A+.
Je vais commencer a appréhender les classes.
Merci et encore bonnes fêtes !