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 :

Création d'un bouton et appel d'une fonction avec arguments à l'aide de la propriété .OnAction


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2012
    Messages : 30
    Points : 21
    Points
    21
    Par défaut Création d'un bouton et appel d'une fonction avec arguments à l'aide de la propriété .OnAction
    Bonjour,

    Je travaille sur un fichier Excel qui me permet de réaliser un audit. Pour cela j'ai une grille avec tous mes points à vérifier et une fois que toutes mes lignes sont remplies, je crée un bouton qui me permettra, en cliquant dessus, d'afficher et mettre à jour des graphiques de synthèse.

    J'ai donc le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    With feuille.Buttons.Add(750, 30, 120, 30)
                .Left = 750
                .Top = 30
                .Width = 120
                .Height = 30
                .Caption = "Synthèse"
                .OnAction = "'synthese2 " & Chr(34) & feuille.Name & Chr(34) & "," & arg1 & "," & arg2 & "," & arg3 & "," & arg4 & "," & True & "'"
     End With
     
    Sub synthese2(f_Name As String, somme1, somme2, somme3, somme4, gras As Boolean)
    Où synthese2 est la macro que je veux appeler et mes arguments arg1, arg2, arg3 et arg4 sont des chiffres.
    L'appel de la macro se fait dans thisworkbook et ma macro synthese2 est dans un module.
    Cela fonctionne (j'ai réussi semble t'il à me dépatouiller avec les simples et doubles quotes), mais quand je clique sur mon bouton, j'obtiens qu'un message d'erreur me disant qu'il est impossible d'exécuter cette macro.

    Je sèche et n'arrive pas du tout à comprendre pourquoi ma macro n'apparaît pas alors que les arguments sont bien passés...

    Quelqu'un a t'il une explication ?

    Merci d'avance

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu
    il est tres difficile de faire comme ca je ne sais meme pas si c'est possible

    alors je passe par un raccourci

    essaie 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
    16
    17
    18
    19
    Option Base 1
    Public ARGUMENTS As Variant
     
    Sub ajoute_bouton()
    Set feuille = Sheets(1)
    ARGUMENTS = Array(feuille.Name, arg1, arg2, arg3, arg4, True)
    With feuille.Buttons.Add(750, 30, 120, 30)
                .Left = 750
                .Top = 30
                .Width = 120
                .Height = 30
                .Caption = "Synthèse"
                .OnAction = "synthese2"
                End With
    End Sub
    Sub synthese2()
     MsgBox ARGUMENTS(1)'le 1er argument c'est le nom de la feuille
     
    End Sub

  3. #3
    Expert éminent
    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
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Le passage des arguments à "OnAction" n'est pas simple. En triplant les guillemets pour les types String, Double, Single, Date et Boolean. Ceci fonctionne (enfin, chez moi) :
    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
    38
    39
    40
    41
    42
     
    Sub MonBouton()
     
        Dim action As String
        Dim Btn As Shape
        Dim Fe As Worksheet
        Dim Arg1 As Integer
        Dim Arg2 As Long
        Dim Arg3 As Double
        Dim Arg4 As Single
        Dim B As Boolean
        Dim D As Date
     
        Set Fe = Worksheets("Feuil1")
     
        Set Btn = Fe.Shapes.AddFormControl(xlButtonControl, 0, 0, 100, 30)
     
        Arg1 = 10
        Arg2 = 2000
        Arg3 = 31.256
        Arg4 = 125.47
        B = True
        D = #7/3/2014#
     
        'tripler les guillemets pour les arguments String, Double, Single, Date et Boolean
        action = "'synthese2 """ & Fe.Name & """," & Arg1 & "," & Arg2 & ",""" & Arg3 & """,""" & Arg4 & """,""" & B & """,""" & D & "'"
     
        With Btn
     
            .TextFrame.Characters.Caption = "Synthèse"
            .OnAction = action
     
        End With
     
     
    End Sub
     
    Sub synthese2(NomFeuille As String, A1 As Integer, A2 As Integer, A3 As Double, A4 As Single, B As Boolean, D As Date)
     
        MsgBox NomFeuille & vbCrLf & A1 & vbCrLf & A2 & vbCrLf & A3 & vbCrLf & A4 & vbCrLf & B & vbCrLf & D
     
    End Sub
    Hervé.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour Hervé,
    Joli et

  5. #5
    Expert éminent
    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
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour Philippe,

    Merci beaucoup !

    Hervé.

Discussions similaires

  1. appel d'une fonction avec la touche "enter"
    Par viny dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 19/08/2008, 12h05
  2. Appel d'une fonction avec plusieurs variables
    Par midoparis dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 13/05/2008, 11h53
  3. appel d'une fonction avec allocation
    Par MoonSef dans le forum C
    Réponses: 9
    Dernier message: 26/02/2007, 08h24
  4. appel d'une fonction avec parametre.
    Par rollernox dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/10/2006, 23h07
  5. [FPDF] Erreur après appel d'une fonction avec include
    Par orus8 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 04/11/2005, 10h49

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