Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Controls Manquants sur un Formulaire

vgendron

XLDnaute Barbatruc
Bonjour à toutes et tous..

Me revoici pour un nouveau pb

Dans mon appli VBA, j'ai de nombreux formulaires
sur certains d'entre eux; j'ai des controles "ListView - ImageList - TreeView"

Lorsque je travaille et développe l'appli sur mon PC, aucun pb
mais lorsque je souhaite installer cette appli sur un autre PC du labo avec une autre version d'excel
1) des références VBA viennent à Manquer ==> je dois donc les décocher manuellement
le code suivant trouvé sur de nombreux posts ne fonctionne pas
VB:
Sub RemoveRef()
Dim Ref As Reference

'La procédure boucle sur la collection de références et supprime celles qui sont
'spécifiées manquantes.
For Each Ref In ThisWorkbook.VBProject.References
    If Ref.IsBroken = True Then _
        ThisWorkbook.VBProject.References.Remove Ref
Next Ref
End Sub
Soit... je n'ai que 2 références à décocher...

2) les controles "ListView - ImageList - TreeView" disparaissent (ceux liés à la référence manquante.. forcément...)
je me disais donc.. comme j'en ai une petite dizaine.. je vais faire un code pour les recréer automatiquement
VB:
'lors de l'installation du GTA sur un PC avec différentes versions de Excel antérieures à 2010)
'certains controles sur différents formulaires sont supprimés
'cette Macro à pour objectif de les recréer automatiquement
'PréRequis: il faut que les références manquantes aient été décochées
'Il faut que les controles ListView - TreeView - ImageList et Flex soient "reconnus"=Références adéquates cochées (addOn Component One)
Public EnableInitializeUSF As Boolean
Sub RedrawControles()
EnableInitializeUSF = False
Dim ctrl As Control
Dim ExisteDeja As Boolean
Dim Obj As Control

With f_EdGraphique 'avec le formulaire "f_EdGraphique"
    For Each ctrl In .Controls
        If ctrl.Name = "tvGraphe" Then ExisteDeja = True 'nom du controle ListView
    Next ctrl
    If Not ExisteDeja Then
        Set Obj = .Controls.add(ID, "tvGraphe", True)
    End If

End With
EnableInitializeUSF = True
End Sub

Sauf. que ca ne fonctionne pas non plus..
et oui..le controle n'existe plus.. mais tout son code associé, lui est encore la.. et plus particulièrement dans le f_EdGraphe_Initialize..
d'ou le EnableInitializeUSF que je mettais à faut pour bypasser le _Initialize..
mais ca ne suffit pas.. visiblement..le compilateur (?) voit le code associé à mon controle manquant avant même de rentrer dans le Initialize..

Donc, je ne vois plus qu'une solution.. éviter de perdre les références, ou référencer autremenent ces controles.
auriez vous des pistes ou de la litterature à me conseiller..?
 

vgendron

XLDnaute Barbatruc
Hello
Je reviens avec ce sujet..
j'avais laissé de côté, mais j'ai appris qu'il faudra que j'installe mon appli vba sur plus de pc que je ne pensais...
Je vais donc vraiment avoir besoin d'automatiser cette (RE) création de formulaires...
Si vous avez des pistes... je prends
 

Discussions similaires

Réponses
3
Affichages
184
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…