[VBA] : Un bouton dans userform dynamique n'a plus d'action
Résolu/Fermé
anton26
Messages postés
31
Date d'inscription
samedi 22 décembre 2012
Statut
Membre
Dernière intervention
25 janvier 2016
-
23 déc. 2012 à 12:38
piopicolo Messages postés 1395 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 31 juillet 2023 - 27 déc. 2012 à 09:18
piopicolo Messages postés 1395 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 31 juillet 2023 - 27 déc. 2012 à 09:18
A voir également:
- Bouton dynamique excel
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
- Vba range avec variable ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Erreur 1004 vba ✓ - 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.
piopicolo
Messages postés
1395
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
31 juillet 2023
193
24 déc. 2012 à 10:37
24 déc. 2012 à 10:37
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+
anton26
Messages postés
31
Date d'inscription
samedi 22 décembre 2012
Statut
Membre
Dernière intervention
25 janvier 2016
24 déc. 2012 à 12:01
24 déc. 2012 à 12:01
Oui je suis dans le même cas mais comment est ce que on fait pour copier un programme dans un objet créé depuis une boite a outils ?
Merci
Merci
piopicolo
Messages postés
1395
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
31 juillet 2023
193
27 déc. 2012 à 09:18
27 déc. 2012 à 09:18
Tu fais apparaître l'objet userform et tu cliques droit sur l'objet en question : code.
Le code vide apparaît et tu peux y coller n'importe quel programme.
A+
Le code vide apparaît et tu peux y coller n'importe quel programme.
A+
24 déc. 2012 à 16:02
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
24 déc. 2012 à 19:20
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+.
25 déc. 2012 à 20:39
Je vais commencer a appréhender les classes.
Merci et encore bonnes fêtes !