Ajout de Contrôle boite à outils UserForm

15 réponses
Avatar
Brat'ac
Bonjour,
[Excel 2007/2010]
J'utilise une ListView dans mon classeur, mais quand je porte celui-ci
sur une autre machine j'ai une InjureBox qui me dit en gros

"élément non disponible "

Ma question:

Est-il possible de tester et d'ajouter si besoin le contrôle "ListView"
à l'ouverture du classeur par VBA ? si oui comment ?

Merci.

GS

10 réponses

1 2
Avatar
Brat'ac
DanielCo a exposé le 21/04/2012 :
Bonjour,
Est-ce que la référence "Microsoft Windows Common Controls 6.0 (SP6)" est
cochée ?
Cordialement.
Daniel



Oui chez moi pas de soucis c'est coché, mais c'est sur les autres
machines ou c'est pas coché, comment le faire en auto si c'est possible
? et ensuite ajouter le contrôle toujours en auto ?

Merci
Avatar
Brat'ac
DanielCo a formulé ce samedi :
Ca devrait être :
Sub ajout()
ActiveWorkbook.VBProject.References.AddFromGuid
"{420B2830-E718-11CF-893D-00A0C9054228}", 2, 0
End Sub
mais il est possible que le fichier mscomctl.ocx ne soit pas enregistré.
Daniel




j'ai fais des essais comme ceci

Chez moi le fichier mscomctl.ocx est bien enregistré (ça fonctionne)

je décoche la référence "Microsoft ListView Control6.0(SP6)"

ensuite j'exécute:
ActiveWorkbook.VBProject.References.AddFromGuid
"{420B2830-E718-11CF-893D-00A0C9054228}", 2, 0

j'ai comme message " Bibliothèque d'objects non enregistrée"
Avatar
Brat'ac
Le samedi 21/04/2012 DanielCo a écrit :
Oups :
Sub ajout()
ActiveWorkbook.VBProject.References.AddFromGuid
"{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}", 2, 0
End Sub
Daniel



Maintenant j'ai:

"Nom de module, de projet ou de bibliothèque d'objets déjà utilisé"

on trouve ou la correspondance avec les Guid ?
Avatar
Brat'ac
Le 21/04/2012, DanielCo a supposé :
Tu as ce message si la référence est déjà cochée. Pour lister les références
du classeur actif (sur la feuille 1 de ce classeur) :
Sub ListReferencePaths()
On Error Resume Next
Dim i As Long
With ActiveWorkbook.Sheets(1)
.Cells.Clear
.Range("A1") = "Reference name"
.Range("B1") = "Full path to reference"
.Range("C1") = "Reference GUID"
.[D1] = "Majeur"
.[E1] = "Mineur"
End With
For i = 1 To ActiveWorkbook.VBProject.References.Count
With ActiveWorkbook.VBProject.References(i)
ActiveWorkbook.Sheets(1).Range("A65536").End(xlUp).Offset(1, 0) =
.Name
ActiveWorkbook.Sheets(1).Range("A65536").End(xlUp).Offset(0, 1) =
.FullPath
ActiveWorkbook.Sheets(1).Range("A65536").End(xlUp).Offset(0, 2) =
.GUID
ActiveWorkbook.Sheets(1).Range("A65536").End(xlUp).Offset(0, 3) =
.Major
ActiveWorkbook.Sheets(1).Range("A65536").End(xlUp).Offset(0, 4) =
.Minor
End With
Next i
On Error GoTo 0
End Sub



Merci,(aujourd'hui je me coucherais mois bête ;o) )
j'ai compris pour la référence, ça fonctionne bien, et je vais pouvoir
tester si elle est cochée ou non et la rajouter si besoin, mais
maintenant comment ajouter "Microsoft ListView Control6.0(SP6)" dans la
boite d'outils par vba, ça je ne pige toujours pas ?
Avatar
Brat'ac
DanielCo avait écrit le 21/04/2012 :


Je ne sais pas le faire et je ne sais pas si c'est possible. La présence du
contrôle dans la boîte d'outils ne sert qu'à le dessiner. Son absence
n'empêche pas l'exécution.
Daniel



Effectivement, je n'avais pas remarqué !!

Merci encore pour l'aide.

Bon Week End
Avatar
DanielCo
Bonjour,
Est-ce que la référence "Microsoft Windows Common Controls 6.0 (SP6)"
est cochée ?
Cordialement.
Daniel


Bonjour,
[Excel 2007/2010]
J'utilise une ListView dans mon classeur, mais quand je porte celui-ci sur
une autre machine j'ai une InjureBox qui me dit en gros

"élément non disponible "

Ma question:

Est-il possible de tester et d'ajouter si besoin le contrôle "ListView" à
l'ouverture du classeur par VBA ? si oui comment ?

Merci.

GS
Avatar
DanielCo
Ca devrait être :
Sub ajout()
ActiveWorkbook.VBProject.References.AddFromGuid
"{420B2830-E718-11CF-893D-00A0C9054228}", 2, 0
End Sub
mais il est possible que le fichier mscomctl.ocx ne soit pas
enregistré.
Daniel


DanielCo a exposé le 21/04/2012 :
Bonjour,
Est-ce que la référence "Microsoft Windows Common Controls 6.0 (SP6)" est
cochée ?
Cordialement.
Daniel



Oui chez moi pas de soucis c'est coché, mais c'est sur les autres machines ou
c'est pas coché, comment le faire en auto si c'est possible ? et ensuite
ajouter le contrôle toujours en auto ?

Merci
Avatar
DanielCo
Oups :
Sub ajout()
ActiveWorkbook.VBProject.References.AddFromGuid
"{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}", 2, 0
End Sub
Daniel


DanielCo a formulé ce samedi :
Ca devrait être :
Sub ajout()
ActiveWorkbook.VBProject.References.AddFromGuid
"{420B2830-E718-11CF-893D-00A0C9054228}", 2, 0
End Sub
mais il est possible que le fichier mscomctl.ocx ne soit pas enregistré.
Daniel




j'ai fais des essais comme ceci

Chez moi le fichier mscomctl.ocx est bien enregistré (ça fonctionne)

je décoche la référence "Microsoft ListView Control6.0(SP6)"

ensuite j'exécute:
ActiveWorkbook.VBProject.References.AddFromGuid
"{420B2830-E718-11CF-893D-00A0C9054228}", 2, 0

j'ai comme message " Bibliothèque d'objects non enregistrée"
Avatar
DanielCo
Tu as ce message si la référence est déjà cochée. Pour lister les
références du classeur actif (sur la feuille 1 de ce classeur) :
Sub ListReferencePaths()
On Error Resume Next
Dim i As Long
With ActiveWorkbook.Sheets(1)
.Cells.Clear
.Range("A1") = "Reference name"
.Range("B1") = "Full path to reference"
.Range("C1") = "Reference GUID"
.[D1] = "Majeur"
.[E1] = "Mineur"
End With
For i = 1 To ActiveWorkbook.VBProject.References.Count
With ActiveWorkbook.VBProject.References(i)

ActiveWorkbook.Sheets(1).Range("A65536").End(xlUp).Offset(1, 0) = .Name

ActiveWorkbook.Sheets(1).Range("A65536").End(xlUp).Offset(0, 1) =
.FullPath

ActiveWorkbook.Sheets(1).Range("A65536").End(xlUp).Offset(0, 2) = .GUID

ActiveWorkbook.Sheets(1).Range("A65536").End(xlUp).Offset(0, 3) =
.Major

ActiveWorkbook.Sheets(1).Range("A65536").End(xlUp).Offset(0, 4) =
.Minor
End With
Next i
On Error GoTo 0
End Sub



Le samedi 21/04/2012 DanielCo a écrit :
Oups :
Sub ajout()
ActiveWorkbook.VBProject.References.AddFromGuid
"{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}", 2, 0
End Sub
Daniel



Maintenant j'ai:

"Nom de module, de projet ou de bibliothèque d'objets déjà utilisé"

on trouve ou la correspondance avec les Guid ?
Avatar
DanielCo
Merci,(aujourd'hui je me coucherais mois bête ;o) )
j'ai compris pour la référence, ça fonctionne bien, et je vais pouvoir
tester si elle est cochée ou non et la rajouter si besoin, mais maintenant
comment ajouter "Microsoft ListView Control6.0(SP6)" dans la boite d'outils
par vba, ça je ne pige toujours pas ?



Je ne sais pas le faire et je ne sais pas si c'est possible. La
présence du contrôle dans la boîte d'outils ne sert qu'à le dessiner.
Son absence n'empêche pas l'exécution.
Daniel
1 2