Demande explication sur déclaration d'objet en VBA

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

  • Packing_V2.zip
    45.8 KB · Affichages: 32

MichelXld

XLDnaute Barbatruc
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
 

did85

XLDnaute Junior
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

  • Classeur1.xls
    32 KB · Affichages: 58
  • Classeur1.xls
    32 KB · Affichages: 56
  • Classeur1.xls
    32 KB · Affichages: 54

Discussions similaires

Réponses
6
Affichages
1 K

Membres actuellement en ligne

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz