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 :

Association dynamique d'une macro à un oleobject créée qui ne fonctionne pas [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut Association dynamique d'une macro à un oleobject créée qui ne fonctionne pas
    Chers tous,

    J'utilise le code définit par SilkyRoad pour créer un ToggleButton (http://excel.developpez.com/faq/?pag...tCommandButton) dans une feuille existante après de nombreux tests, j'ai toujours des problèmes insolubles à mon niveau. Le code initial fonctionne parfaitement, dès que j'adapte le code, il me renvoie l'erreur suivante : "erreur d'exécution 9 , L'indice n'appartient pas à la sélection" la ligne concernée est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With ThisWorkbook.VBProject.VBComponents(Calc.Name).CodeModule
    Voici le bout de code dans son intégralité

    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 AjoutCommandButton_Feuille()
        Dim Calc As Worksheet
        Dim Obj As OLEObject
        Dim Code As String
        Dim x As Integer
     
        Set Calc = ThisWorkbook.Worksheets("Calculs")
        x = 1
        Set Obj = Calc.OLEObjects.Add("Forms.ToggleButton.1")
     
            With Obj
                .Left = Calc.Cells(x, 1).Left
                .Top = Calc.Cells(x, 1).Top
                .Width = Calc.Cells(x, 1).Width
                .Height = Calc.Cells(x, 1).Height
                .Object.BackColor = RGB(0, 255, 0)
                .Object.Caption = ""
                .Object.Value = True
            End With
     
     
        'Paramètres pour la création de la macro:
        '(suppression contenu cellules)
        Code = "Sub Obj_Click()" & vbCrLf
        Code = Code & "If Obj.Value = True Then" & vbCrLf
        Code = Code & "Obj.BackColor = RGB(0, 255, 0)" & vbCrLf
        Code = Code & "Else" & vbCrLf
        Code = Code & "Obj.BackColor = RGB(255, 0, 0)" & vbCrLf
        Code = Code & "End If" & vbCrLf
        Code = Code & "End Sub"
     
     
        With ThisWorkbook.VBProject.VBComponents(Calc.Name).CodeModule
            x = .CountOfLines + 1
            .InsertLines x, Code
        End With
    End Sub
    Merci d'avance de votre aide

  2. #2
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonjour Vincent,
    Est-ce que le nom de la feuilles sur laquelle tu travailles se nomme bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set Calc = ThisWorkbook.Worksheets("Calculs")
    ?
    De plus pourquoi préciser puis que tu as défini précédemment la valeur de Calc et donc son nom?
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut
    Bonjour Eric et merci pour ta réponse

    Est-ce que le nom de la feuilles sur laquelle tu travailles se nomme bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Calc = ThisWorkbook.Worksheets("Calculs")
    ?
    Oui

    pourquoi préciser
    puis que tu as défini précédemment la valeur de Calc et donc son nom?
    L'un des vestiges de mes multiples essais ...

  4. #4
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Vincent,
    LE code de Silkyroad donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
    Ça ne fonctionne pas chez toi?
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut
    J'ai finalement contourné le problème au lieu de supprimer la feuille pour la recréer par la suite je supprime tout le contenu + boutons + graphes en gardabnt la feuille. Je te remercie néanmoins de ton aide Eric.

    Bonne journée,

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/06/2015, 09h35
  2. [AC-2003] Insérer un paramètre dynamique dans une macro pour l'appel d'une fonction
    Par OphyTe dans le forum Macros Access
    Réponses: 11
    Dernier message: 10/02/2015, 15h01
  3. [Data] Envoyer une map par un redirect qui ne fonctionne pas
    Par Logic_613 dans le forum Spring
    Réponses: 2
    Dernier message: 18/12/2012, 21h25
  4. Appliquer une macro VBA à un fichier qui se regenere
    Par kirareuel dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/03/2012, 23h28
  5. macro pour code barre qui ne fonctionne pas comme elle devrait
    Par scons dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/11/2009, 13h09

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