Demande explication sur déclaration d'objet en VBA

  • Initiateur de la discussion Initiateur de la discussion did85
  • 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 !

did85

XLDnaute Junior
Bonsoir,
je n'arrive pas à comprendre la différence lors de la déclaration d'un objet.

Une fois on pourra écrire :
Code:
Sub BtnLancerUserForm_QuandClic()
Dim frm As New UserFormCreation
    frm.Show
End Sub
pour lancer la macro à l'aide d'un bouton localisé sur une feuille de calcul excel.

Et parfois, il faudra écrire cette même procédure en :
Code:
Sub BtnLancerUserForm_QuandClic()
   UserFormCreation.Show
End Sub

pour que la suite du code fonctionne.

Je vous ai mis en pièce jointe, le fichier qui fonctionne avec la 1ère écriture.
On trouvera la Sub à modifier dans la partie "Module" puis "Outils"

Si on remplace la 1ère écriture par la seconde, la fonction de recherche par caractère ne fonctionnera plus pour le 1er UserFormCreation

Est-ce que quelqu'un peut me dire quand on peut, ou quand l'on doit utiliser telle ou telle notation ?

Merci
 

Pièces jointes

Re : Demande explication sur déclaration d'objet en VBA

bonjour


L'instruction New permet de créer une nouvelle instance de ton UserForm. Tu peux ensuite manipuler cette copie de la même manière que l'original .

A toi de voir si c'est vraiment utile dans ton projet (je n'ai pas regardé ton code en entier).
Si tu n'affiche qu'une fois l'UserForm UserFormCreation, tu n'a pas besoin d'utiliser l'instruction New.


Un exemple d'utilisation de plusieurs instances d'un UserForm :
XL98 : utilisation le mot clé new pour créer des instances d'un objet UserForm



bon week end
michel
Microsoft Excel MVP
 
Re : Demande explication sur déclaration d'objet en VBA

Bonjour,
merci pour votre explication et le lien.
J'ai mis en pièce jointe, le fichier explicatif de votre lien.

Dans mon cas, j'utilisais cette déclaration :
Code:
Sub BtnLancerUserForm_QuandClic()
Dim frm As New UserFormCreation
    frm.Show
End Sub
en pensant que cela créait une abréviation de UserFormCreation. Je n'avais pas compris que cela créait une nouvelle instance de l'objet.

Je voyais bien que j'allais 2 fois dans la boucle UserFormCreation_Initialize sans comprendre pourquoi.

Encore merci pour le temps passé à me l'avoir expliqué.
 

Pièces jointes

- 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
12
Affichages
1 K
Réponses
2
Affichages
1 K
Retour