Modifier propriétés d'un frame créé dynamiquement

Résolu/Fermé
Ein85 Messages postés 32 Date d'inscription jeudi 10 décembre 2015 Statut Membre Dernière intervention 2 mars 2016 - Modifié par pijaku le 10/12/2015 à 11:46
Ein85 Messages postés 32 Date d'inscription jeudi 10 décembre 2015 Statut Membre Dernière intervention 2 mars 2016 - 10 déc. 2015 à 11:37
Bonjour à tous,

J'ai créé une macro qui permet d'ajouter un frame dans ma feuille Excel. La macro définit également les propriétés de ce frame (nom, texte, emplacement, couleur, etc.).

Le problème est que je reçois un message d'erreur quand j'exécute la macro. Le frame se crée, certaines propriétés sont acceptées et prises en compte mais d'autres sont rejetées et déclenchent l'erreur 438 (Propriété ou méthode non gérée par cet objet).

Voici le code:

Private Sub Validate_Click() 'Bouton qui lance la macro

Set Ctl = Worksheets(1).OLEObjects.Add(ClassType:="Forms.Frame.1")   
'Crée un Frame
 
With Ctl
        .Name = "MonFrame1"
        .Caption = "Test"
        .Left = 57
        .Top = 540
        .Width = 300
        .Height = 200.25
        .Font.Name = "Tahoma"
        .Font.Size = 8
        .BackColor = &H80000005
        .BorderStyle = fmBorderStyleSingle
        .BorderColor = &H80000012
End With

End Sub

Caption, Font.Name, Font.Size, BackColor, BorderStyle at BorderColor renvoient l'erreur lors de mes tests effectués au cas par cas mais Name, Left, Top, Width et Height passent sans problème.

Quelqu'un aurait-il une idée de cette différence de traitement ?

Merci d'avance!
A voir également:

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
10 déc. 2015 à 07:52
Bonjour,

Normal, les OLEObjects n'ont pas ces propriétés.
Regarde ICI la liste des propriétés disponibles.

Il te faut donc, utiliser la "propriété" Object (l'objet OLE Automation associé à ton OLEObject) pour accéder aux propriétés caption, border etc...

Cela te donne un code comme ceci :
Private Sub Validate_Click()
Dim Ctl As Object
Set Ctl = Worksheets(1).OLEObjects.Add(ClassType:="Forms.Frame.1")
'Crée un Frame
With Ctl
   .Name = "MonFrame1"
   .Left = 57
   .Top = 540
   .Width = 300
   .Height = 200.25
   With .Object
      .Caption = "Test"
      .Font.Name = "Tahoma"
      .Font.Size = 8
      .BackColor = &H80000005
      .BorderStyle = fmBorderStyleSingle
      .BorderColor = &H80000012
   End With
End With
End Sub


PS : toujours déclarer les variables. C'est une bonne habitude de programmation.
2
Ein85 Messages postés 32 Date d'inscription jeudi 10 décembre 2015 Statut Membre Dernière intervention 2 mars 2016
10 déc. 2015 à 11:37
Merci beaucoup pijaku, ça marche très bien!
0