Renommage de composants VB

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

O

Omicron

Guest
Bonjour à tous,

Je suis en train de tester les possibilités de Vb en matière d'ajout dynamique de composants dans un projet VB.

Le code suivant est sensé repérer s'il existe déja un composant de type Forme du nom de "Test_Form" dans le projet; et s'il le trouve, de le supprimer puis de le re-créer

Ce code marche très bien à la première exécution, mais aux exécutions suivantes il se plante sur la dernière instruction (Renommage du composant) avec le message :
erreur 75
objet spécifié introuvable

Si je ferme le classeur et le rouvre ensuite, idem : la première exécution fonctionne mais pas les suivantes.

Voici le code :

====================================================================
Private Sub CommandButton5_Click()

'Suppression du composant (Forme) nommée Test_Form s'il existe
For Each Cps In ActiveWorkbook.VBProject.VBComponents
If Cps.Type = vbext_ct_MSForm And Cps.Name = "Test_Form" Then
Rep = MsgBox("Composant Test_Form trouvé. Voulez vous le supprimer ?", vbOKCancel)
If Rep = vbCancel Then
Exit Sub
Else
ActiveWorkbook.VBProject.VBComponents.Remove VBComponent:=Cps
Exit For
End If
End If
Next Cps

'Re-création d'un composant (Forme)
Set CpsFrm = ActiveWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)

'Affectation du nom "Test_Forme" à ce nouveau composant
CpsFrm.Name = "Test_Form"

End Sub

=====================================================================

Merci d'avance à tous ceux qui pourraient me donner un coup de main.

Omicron
 
Re : Renommage de composants VB

Bonsoir,

En fait VB semble conserver en mémoire la dernière appellation du contrôle. Ne pouvant appeler 2 contrôles différents avec le même nom, il plante. Je te propose un moyen de contournement du pb un peu capilotracté comme dirait monCherAmi :
Code:
RefUF = RefUF + 1
Cps.Name = "ExTest_Form" & RefUF
ActiveWorkbook.VBProject.VBComponents.Remove VBComponent:=Cps
en n'oubliant pas de déclarer en variable publique ReUF

Cordialement
 
Re : Renommage de composants VB

Bonsoir Spitnolan,

Merci de ta réponse rapide.

La solution que tu proposes fonctionne évidemment. Un autre moyen consiste à laisser VB affecter les noms de composants ex userform1, 2, .... Ou a utiliser une autre propriété pour retrouver le composant dans la liste des composants.

Je pense toutefois qu'il n'y a pas de bug dans VBE mais que je n'ai pas complètement compris les mécanismes proposés. Je vais donc continuer à chercher.

Encore merci, et peut-être à une prochaine fois ...

Omicron
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
911
Réponses
3
Affichages
879
Retour