IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Positionner un OLEObject par macro [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    paris 5
    Inscrit en
    Décembre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : paris 5
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2015
    Messages : 15
    Par défaut Positionner un OLEObject par macro
    Bonjour à tous,

    J'aimerais créer et positionner dynamiquement des OLEObject dans des cellules précices à l'image de ce qui a été fait sur des contrôles de formulaire :
    http://excel.developpez.com/faq/?pag...laireDynamique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    For i = 2 To 11
            'création des boutons dans la Feuil1
            With Feuil1
                Set S = .Shapes.AddFormControl(xlButtonControl, .Cells(i, 2).Left, .Cells(i, 2).Top, _
                    .Cells(i, 2).Width, .Cells(i, 2).Height)
            End With
     
            'Définit le texte qui va s'afficher dans le bouton.
            S.TextFrame.Characters.Caption = "bouton " & i
            'Attache une macro au bouton
            S.OnAction = "MacroBouton"
        Next i
    Est-il possible de faire l'équivalent avec des OLEObject?
    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Une piste, création de 5 boutons avec écriture de leur code respectif dans le module de la feuille. Pour le test, c'est le Caption du bouton dans un Msgbox. Pour plus de souplesse, un module de classe serait mieux indiqué. OnAction ne fonctionne par pour des ActiveX (enfin, à ma connaissance) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    Sub Test()
     
        Dim BtnOle As OLEObject
        Dim Btn As MSForms.CommandButton
        Dim I As Integer
        Dim Ligne As String
     
        For I = 1 To 5
     
            'création des boutons dans la Feuil1
            With Feuil1.Cells(I, 2)
     
                Set BtnOle = Feuil1.OLEObjects.Add("Forms.CommandButton.1", , False, False, , , , .Left, .Top, .Width, .Height)
     
            End With
     
            BtnOle.Name = "MonBouton" & I
     
            Set Btn = BtnOle.Object
     
            Btn.Caption = "Bouton " & I
     
            'écrit dans le module de la feuille "Feuil1" les lignes de code...
            With ThisWorkbook.VBProject.VBComponents(Feuil1.CodeName).CodeModule
     
                Ligne = vbCrLf & "Private Sub " & BtnOle.Name & "_Click()" & vbCrLf & vbCrLf _
                               & "    MsgBox " & BtnOle.Name & ".Caption" & vbCrLf & vbCrLf _
                               & "End Sub" & vbCrLf
     
                .InsertLines .CountOfLines + 1, Ligne
     
            End With
     
        Next I
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    paris 5
    Inscrit en
    Décembre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : paris 5
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2015
    Messages : 15
    Par défaut
    Bonjour,

    Merci pour l'aide . J'ai quand même eu un petit soucis avec la macro. J'avais une erreur qui me disait que le type MSForms.CommandButton n'était pas défini.
    Du coup j'ai jeté un coup d'oeil du côté des références et j'ai coché "ActiveX Data Objects 6.1 library" puis j'ai fermé le classeur. Je l'ai de nouveau ouvert et en relançant la macro j'avais toujours cette erreur.
    J'ai mis en commentaire tout ce qui concerné ce type d'objet et je n'ai eu aucun problème d'exécution. J'ai enlevé les commentaires et la mystère tout fonctionnait !
    Du coup j'ai une question, quelles sont les références, s'il y en a, qu'il faut activer pour le type MSForms?

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Citation Envoyé par yanisdev Voir le message
    Bonjour,

    Du coup j'ai une question, quelles sont les références, s'il y en a, qu'il faut activer pour le type MSForms?
    M'est avis que c'est "Microsoft Forms 2.0 Object Library"

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    C'est comme le dit Clément mais il y à plus simple, tu ajoutes un UserForm à ton projet et tu le supprimes ensuite. L'ajout de cet UserForm induit l'ajout de la référence !

  6. #6
    Membre averti
    Homme Profil pro
    paris 5
    Inscrit en
    Décembre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : paris 5
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2015
    Messages : 15
    Par défaut
    En effet ! Hier je n'avais pas coché cette case et en regardant aujourd'hui je me suis aperçu que la référence été activée.
    Merci pour vôtre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E]Modifier la caption d'un label par macro
    Par Gautheron dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/02/2006, 13h07
  2. [WORD] Inclusion d'une image (.tif) par macro
    Par guejo dans le forum VBA Word
    Réponses: 1
    Dernier message: 08/02/2006, 11h16
  3. [VBA-E] Problème pour enregistrer en csv (; et non ,) par macro
    Par bounette dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/12/2005, 09h34
  4. Excel:probleme pour transformer du texte en nombre par macro
    Par pcheval dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/11/2005, 22h18
  5. liste déroulante. positionnement sur valeur par défaut
    Par mathieu_r dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 28/06/2005, 15h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo