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 :

Affecter des macros à des shapes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut Affecter des macros à des shapes
    Bonjour,

    je dispose d'une carte et je dois faire un traitement à chaque fois que je clique sur un pays. Malheureusement la macro que j'ai fait ne marche pas et j'obtiens l'erreur suivante

    "Run-time error '1004':

    Application-defined or object-defined error"
    je ne comprends absolument d'ou viens l'erreur je me suis aidé pourtant de l'enregistreur de macro

    voilà le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub AffecterMacro()
    Dim loShape As Shape ' Forme
    Dim Carte As Excel.Worksheet ' Feuille
    Set Carte = ThisWorkbook.Sheets("Afrique - Carte ")
    For Each loShape In Carte.Shapes("Carte").GroupItems
        loShape.OnAction = "AffecterValeur(" & loShape.Name & ")"
    Next
    End Sub
     
    Sub AffecterValeur(Country As String)
    Dim Carte As Excel.Worksheet ' Feuille
    Set Carte = ThisWorkbook.Sheets("Afrique - Carte ")
    Carte.Range("P4").Value = Country
    End Sub
    Merci d'avance pour votre aide

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    et quelle ligne déclenche l'erreur ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut
    Salut,

    la ligne 6 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    loShape.OnAction = "AffecterValeur(" & loShape.Name & ")"

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Effectivement, il y a une erreur dans la déclaration de la propriété OnAction à cause des parenthèses !
    Qui plus est, il n'est pas possible de passer un paramètre … Voir post #7 !

    Contournement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub AffecterMacro()
             Dim loShape As Shape
        For Each loShape In ThisWorkbook.Worksheets("Afrique - Carte ").Shapes("Carte").GroupItems
                 loShape.OnAction = "AffecterValeur"
        Next
    End Sub
     
    Sub AffecterValeur()
        V = Application.Caller
        If Not IsError(V) Then ThisWorkbook.Worksheets("Afrique - Carte ").[P4].Value = V
    End Sub
    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut
    merci pour l'aide mais un pb persiste encore

    la fonction AffecterValeur marche bien en revanche j' obtiens tjrs une erreur pour la fonction AffecterMacro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub AffecterMacro()
             Dim loShape As Shape
        For Each loShape In ThisWorkbook.Worksheets("Afrique - Carte ").Shapes("Carte").GroupItems
                 loShape.OnAction = "AffecterValeur"
        Next
    End Sub
    j'ai une tjrs la mm erreur

    "Run-time error '1004':

    Application-defined or object-defined error" qui porte sur cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     loShape.OnAction = "AffecterValeur"

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    J'ai testé rapidement sur des objets Shape individuels, non groupés, peut-être en est-ce la raison …

    Évidemment si la feuille est protégée …

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    Bonjour
    peut être comme ceci:

    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
    Sub AffecterMacro()
    Dim loShape As Shape ' Forme
    Dim Carte As Excel.Worksheet ' Feuille
    Set Carte = ThisWorkbook.Sheets("Afrique - Carte ")
    For Each loShape In Carte.Shapes("Carte").GroupItems
       loShape.OnAction = "'AffecterValeur """ & loShape.Name & """'"
    Next
    
    End Sub
     
    Sub AffecterValeur(Country As String)
    Dim Carte As Excel.Worksheet ' Feuille
    Set Carte = ThisWorkbook.Sheets("Afrique - Carte ")
    Carte.Range("P4").Value = Country
    End Sub
    Au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. [AC-2007] suppression des avertissements des macro
    Par STOUPI dans le forum VBA Access
    Réponses: 4
    Dernier message: 09/08/2015, 18h15
  2. Attribuer des icones à des macros prédéfinies
    Par deubelte dans le forum Excel
    Réponses: 2
    Dernier message: 17/06/2009, 08h52
  3. Affectation de macros à des boutons créés dynamiquement
    Par JM_Cholet dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/07/2007, 14h09
  4. Réponses: 19
    Dernier message: 20/12/2006, 10h15
  5. Gestion des majuscules des miniscules des accent
    Par issam16 dans le forum Access
    Réponses: 2
    Dernier message: 13/07/2006, 14h21

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