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 :

appeler une macro.


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 29
    Points : 29
    Points
    29
    Par défaut appeler une macro.
    Bonjour,
    je viens à votre aide pour un blocage.

    Voilà j'ai crée une macro sous exce lexécutée par un bouton.

    Voici le début et la fin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub eval_achat_vente_Click()
    Dim i As Variant
    .....
    k = 4
    .....
            Else
            End If
        Next
    End Sub
    créée dans la feuille "courbe_capital"
    Et j'aimerai l'appeler à partir d'une autre feuille et d'une autre macro.
    J'ai essayé call..., et ça ne marche pas.
    merci pour votre aide

  2. #2
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    bonjour,

    Il faut mettre ton code adapté dans un module normal et te servir de tes modules de click pour appeler ce code avec effectivement call

    cordialement,

    Didier

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par Ormonth
    Il faut mettre ton code adapté dans un module normal et te servir de tes modules de click pour appeler ce code avec effectivement call
    Mais tu n'est pas obligé d'utiliser Call
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Call LaMacro
    'ou
    LaMcro
    donnent le même résultat

    NB - "Module normal" aussi nommé "Module standard"

  4. #4
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    bonsoir,


    Code :
    Call LaMacro
    'ou
    LaMcrodonnent le même résultat
    pas vraiment, LaMacro tout court, oui

    Bon, mais pour un débutant, pas forcément "Call-é", on va pas lui compliquer le vie, même si call est carrément déconseillé par certains..
    http://mhubiche.developpez.com/vba/f...ses/#LII-A-3-b

    bonne soirée pascale

    Didier

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 203
    Points : 175
    Points
    175
    Par défaut
    Bonjour,

    Moi j'utilise des fonctions (function toto()).
    Cela permet d'appeler la fonction à partir de différentes macros sur plusieurs pages.
    On peut la considérer comme une sous-macro, ou un sous-programme.

    La fonction à d'autres avantages, car elle peut même effectuer des calculs directement pour Excel (là c'est de la sous-traitance).

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Une fonction (Function) n'est nécessaire que quand elle doit renvoyer une valeur.

    Dans les autres cas, une procédure (Sub) suffit.
    Une procédure peut aussi être appelée par d'autres.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 29
    Points : 29
    Points
    29
    Par défaut
    En fait j'ai déjà essayé vos possibilités:
    call eval_achat_vente ou eval_achat_vente
    m'affichent un message d'erreur
    "Erreur de compilation,
    sub ou fonction non defini"

    En fait je ne comprends toujours pas:

    J'ai une macro dans la feuille 1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Explicit
    
    Private Sub eval_achat_vente_Click()
    Dim i As Variant
    Dim j As Variant, frais As Variant, liquidite As Variant, risque As Variant
    Dim nb_actions As Variant, nb_actions_vend As Variant
    Dim nom_action As Variant, nom_action_vend As Variant
    Dim prix_action As Variant, prix_action_vend As Variant
    Dim ligne As Variant, capital As Variant...........
    End Sub
    Que je veux appeler a partir d'une autre macro dans la feuille 2:
    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 Explicit
    Private Sub calcul_Click()
    Dim i As Variant
    Dim j As Variant, frais As Variant, liquidite As Variant, risque As Variant
    Dim nb_actions As Variant, nb_actions_vend As Variant
    'Calcul du porcentage de la transaction.
    For i = 5 To 76
        If Cells(i, 1) = 1 Then
            While Cells(i, 5) <> Cells(i, 21)
            Cells(i, 7).Copy
            Cells(i, 22).Paste
            Cells(i, 21).Copy
            Cells(i, 5).Paste
            Call eval_achat_vente
            Wend
        Else
        End If
    Next
    End Sub

  8. #8
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Si tu nommes ta procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub eval_achat_vente_Click()
    et que tu l'appelles ainsi
    il y a peu de chance que ça fonctionne...

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 203
    Points : 175
    Points
    175
    Par défaut
    Mais c'est un bouton de commande le _Click!


    Le 1er bouton sur la 1ère feuille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Option Explicit
    Private Sub eval_achat_vente_Click()
      appel_proc()
    End Sub
    Que tu appelles à partir du 2ème bouton dans la feuille 2:
    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 Explicit
    Private Sub calcul_Click()
    Dim i As Variant
    Dim j As Variant, frais As Variant, liquidite As Variant, risque As Variant
    Dim nb_actions As Variant, nb_actions_vend As Variant
    'Calcul du porcentage de la transaction.
    For i = 5 To 76
        If Cells(i, 1) = 1 Then
            While Cells(i, 5) <> Cells(i, 21)
            Cells(i, 7).Copy
            Cells(i, 22).Paste
            Cells(i, 21).Copy
            Cells(i, 5).Paste
           appel_proc()
            Wend
        Else
        End If
    Next
    End Sub
    Et la procédure qui sert aux 2 touches: (je ne parle + de fonction, ya pas de retour de valeur )
    Elle doit être dans un module pour être vue des 2 feuilles:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    sub appel_proc()
    Dim i As Variant
    Dim j As Variant, frais As Variant, liquidite As Variant, risque As Variant
    Dim nb_actions As Variant, nb_actions_vend As Variant
    Dim nom_action As Variant, nom_action_vend As Variant
    Dim prix_action As Variant, prix_action_vend As Variant
    Dim ligne As Variant, capital As Variant...........
    End Sub

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 29
    Points : 29
    Points
    29
    Par défaut
    Salut
    j'ai créée dans le module 1 la macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub eval_achat_vente1()
    Dim i As Variant
    Dim j As Variant, frais As Variant, liquidite As Variant, risque As Variant
    Dim nb_actions As Variant, nb_actions_vend As Variant
    Dim nom_action As Variant, nom_action_vend As Variant
    Dim prix_action As Variant, prix_action_vend As Variant
    pour les nouvelles valeurs
    For i = 5 To 82.............
    et je l'appelle via un bouton dans la feuille 2
    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 Explicit
    Private Sub calcul_Click()
    Dim i As Variant
    Dim j As Variant, frais As Variant, liquidite As Variant, risque As Variant
    Dim nb_actions As Variant, nb_actions_vend As Variant
    'Calcul du porcentage de la transaction.
    For i = 5 To 76
        If Cells(i, 1) = 1 Then
            While Cells(i, 5) <> Cells(i, 21)
            Cells(i, 7).Copy
            Cells(i, 22).Paste
            Cells(i, 21).Copy
            Cells(i, 5).Paste
            eval_achat_vente1()
            Wend
        Else
        End If
    Next
    End Sub
    Il me marque quand j'execute la macro "Private Sub calcul_Click()"
    "erreur de compilation
    Attendu : =" à la suite de l'execution de eval_achat_vente1()

  11. #11
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    enlève donc les parenthèses à
    eval_achat_vente1()

  12. #12
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut bebel9313

    comme je n'ai pas l'intégralité des macros, je ne peux tester, mais....
    Remplace
    eval_achat_vente1()
    par
    eval_achat_vente1

    excel s'attend à ce que tu transmettes des paramètres, puisque tu mets des parenthèses. Sans, l'instruction devarient perdre sa couleur rouge

    Tu déclares toutes tes variables en Variant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim i, j, frais, liquidite, risque, nb_actions, nb_actions_vend
    Dim nom_action, nom_action_vend, prix_action, prix_action_vend
    J'ai déclaré tous ces variables en Variant. Et c'est plus rapide que toi

    Le but de la déclaration est multiple :
    - éviter les erreurs de frappe => là, ce rôle est rempli
    - Limiter l'occupation de la RAM => là, tu prends le maximum (16 octets) alors qu'en utilisant le bon type, c'est forcément inférieur
    - éviter un remplissage de la variable avec une mauvaise donnée : pas rempli non plus.
    Si tu attends des nombres et que tu as du texte, ou l'inverse, il vaut mieux le savoir au chargement de la variable, plutôt que parce qu'une comparaison ne fonctionne pas alors qu'elle devrait, ou si t'as du pot, quand tu veux incrémenter du texte.

    A+

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu as combien de boutons ?
    Private Sub calcul_Click()
    Private Sub eval_achat_vente_Click()

    Sont-ils dans la même feuille ?
    Quelle procédure veux-tu appeler ? "Sub eval_achat_vente()" ?
    Dans ce cas, déclare tes variable dans cette procédure.

    Derrière chaque bouton placé dans une feuille de calcul, tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub LeBouton_Click()
    eval_achat_vente1
    End sub
    Si tu as des paramètres à passer (un N° de ligne, un nom de feuille par exemple) pour les passer à la procédure, tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub LeBouton_Click()
    Dim FL1 as worksheet
        Set FL1 = Activesheet
        eval_achat_vente1 FL1
    End sub
    et dans la macro placée ds le module standard, tu mets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub eval_achat_vente1(FL1 as worksheet)
    Dim i, j, frais, liquidite, risque, nb_actions, nb_actions_vend
    Dim nom_action, nom_action_vend, prix_action, prix_action_vend
    For i = 5 To 76
        If FL1.Cells(i, 1) = 1 Then
            While FL1.Cells(i, 5) <> FL1.Cells(i, 21)
                FL1.Cells(i, 7).Copy FL1.Cells(i, 22) 'pas besoin de mettre sur 2 lignes
                FL1.Cells(i, 21).Copy FL1.Cells(i, 5) 'pas besoin de mettre sur 2 lignes
            Wend
        Else
        End If
    Next
    End Sub
    Mais réponds : tu as combien de bouton par feuille ?
    A+

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 29
    Points : 29
    Points
    29
    Par défaut
    Tu as combien de boutons ?
    Private Sub calcul_Click()
    Private Sub eval_achat_vente_Click()
    Et d'autres

    Sont-ils dans la même feuille ?
    NON
    Quelle procédure veux-tu appeler ? "Sub eval_achat_vente()" ?
    Je veux appeler une action executée par un bouton. Celle là "Private Sub eval_achat_vente_Click()"

    tu as combien de bouton par feuille ?
    1 à deux boutons. Mais ça dépend des feuilles.

    Sinon je crois avoir trouvé la solution. J'ai copier dans "module 1" tout mon programme avec l'en tete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub eval_achat_vente...........End sub
    Et là, plus de message d'erreur sur ce point. Je pense qu'il l'execute.

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

Discussions similaires

  1. Les differentes manière d'appeller une macro
    Par Djohn dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/08/2007, 14h46
  2. Appeler une macro a travers un code VBA
    Par Djohn dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/06/2007, 12h25
  3. [VBA-E]-Appeler une macro complémentaire ?
    Par Régolo dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 16/04/2007, 00h34
  4. appeler une macro d'excel ds powerpoint
    Par smarties38 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/02/2007, 17h13
  5. Appeler une macro
    Par yannph dans le forum Access
    Réponses: 5
    Dernier message: 11/01/2005, 17h37

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