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 :

Problème appel autre macro avec Call


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 211
    Points : 87
    Points
    87
    Par défaut Problème appel autre macro avec Call
    Bonjour,

    Je ne comprends pas où se trouve l'erreur de code ( ou d'écriture ). En effet, suivant la valeur de la variable "ly", il faut faire appel à telle ou telle macro ( ou sous macro ). J'ai tout d'abord utilisé la propriété "Select Case"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
         Select Case ly
         Case Is = 1
           Call caumont
         Case Is = 2
           Call Lemonnier
    ........
          Case Else
           Call Monnet
         End Select
    VBA me dit : Utilisation incorrecte de la propriété ( en surlignant "Call caumont" )

    J'ai donc utilisé la propriété IF ELSEIF ELSE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        If ly = 1 Then
              Call caumont
           ElseIf ly = 2 Then
              Call Lemonnier
           ElseIf ly = 3 Then
              Call oasis
    ...
           Else
             Call Monnet
       End if
    Même Remarque de VBA

    Pour information, "ly" peut prendre 52 valeurs différentes ( de 1 à 52 ). N'est-ce pas trop ? Si oui comment faire ?
    Merci d'avance pour vos réponses.

    Novice72

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Bonjour,

    avant de chercher dans tes case et IF ... regarde si la ligne que tu veux conditionner "fonctionne" seule ...

  3. #3
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 211
    Points : 87
    Points
    87
    Par défaut Réponce à bbil
    Merci pour ta réponse très rapide.
    J'ai bien lu ton message ( en rouge ) avant de répondre à cette discussion. Excuses moi. d'avoir écrit ici.
    Maintenant, tu as raison j'avais oublié de définir les variables dans les macros ( ce qui me provoquait sas doute cette erreur ).
    Je vais maintenant réparer cet oubli, tester et la prochaine fois écrire au bon endroit.




    Cordialement
    Novice72

  4. #4
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 211
    Points : 87
    Points
    87
    Par défaut appel macro se trouvant dans Module1
    Bonjour,
    j'ai déjà réussi à appeler une macro à partir d'une autre macro quand les 2 se trouvaient dans le même module ( module1 ).
    Maintenant, le problème se complique pour moi.
    J'ai un programme lancé par un bouton OK d'USERFORM. Dans cette userform, plusieurs choix me sont proposés Mais :
    SUIVANT LA VALEUR D'UNE VARIABLE ( que j'ai appelé "ly" comme lycée ) je veux ouvrir telle ou telle macro
    ( "ly" peut prendre toutes les valeurs de 1 à 52 donc il y a 52 macros correspondantes ).
    voici ce que j'ai écrit avec l'instruction "case"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
         Select Case ly
         Case Is = 1
           Call caumont
         Case Is = 2
           Call Lemonnier
    ........
          Case Else
           Call Monnet
         End Select
    Ne fonctionnant pas car VBA me dit : Utilisation incorrecte de la propriété ( en surlignant "Call caumont" )
    j'ai donc utilisé les instructions If Elseif Else que voici


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        If ly = 1 Then
              Call caumont
           ElseIf ly = 2 Then
              Call Lemonnier
           ElseIf ly = 3 Then
              Call oasis
    ...
           Else
             Call Monnet
       End if
    Là aussi j'ai la même remarque qu'avec l'instruction "case".

    bbil m'a demandé de véridier la macro seule ( ce que j'ai fait car fonctionne maintenant ).

    Ma question est donc : COMMENT APPELER UNE MACRO D'UN MODULE1 A PARTIR D'UN USERFORM ?


    Merci d'avance.

    Novice72

  5. #5
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par Novice72 Voir le message
    ...bbil m'a demandé de véridier la macro seule ( ce que j'ai fait car fonctionne maintenant ).
    ..
    montre nous le code que tu as utilisé pour essayer l'appel de ta "macro seule" (sans tous tes IF et Case...)

    montre nous aussi le code qui te sert à déclarer ta procédure caumont

  6. #6
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 211
    Points : 87
    Points
    87
    Par défaut
    Bonjour,
    Je n'ai pas de code qui appelle la macro seule.

    Soit je vais dans excel / developpeur / Macros / et je clique sur n'importe quel lycée ( ça a l'air de fonctionner puisque j'ai des cellules qui varient sur une feuille )

    Soit je rentre dans le code de la macro et je fais F5 ( exécuter la macro ) avec le même résultat.

    Pour moi, quand j'appelle une macro c'est soit à partir d'un userform avec lequel on fait un choix
    soit avec un bouton
    soit avec une instruction CALL dans une autre macro.....


    Bref, le mieux je pense et que je te donne un bout mon programme. Le problème est que mon fichier fait 8,27Mo. Comment faire ?
    Je vais supprimer quelques userforms dans mon fichier d'origine afin qu'il soit moins lourd puis je te l'envoie.

    A tout à l'heure et encore merci.
    Novice72



    Merci de t'intéresser à mon problème et merci d'avance.

    Novice72

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    ...
    Citation Envoyé par Novice72 Voir le message
    soit avec une instruction CALL dans une autre macro.....
    et alors cela fonctionne ? montre le code d'appel entre balise .!

    Nota : Pour ton fichier joint merci de relire cela : Fichier joint dans vos discussions

  8. #8
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 211
    Points : 87
    Points
    87
    Par défaut
    on ça ne marche pas avec l'instruction CALL
    Je vaix essayer avec un français correct de m'expliquer :
    j'ai une macro lancée depuis un bouton se trouvant dans un userform.
    Dans cette macro il y a une variable qui s'appelle "ly"
    Suivant la valeur de cette variable ( qui peut prendre tout entier compris entre 1 et 52 ), je veux ouvrir la macro correspondant à la valeur de "ly" ( ex : si ly=1 je fait "Call caumont" mais ça ne marche pas )....

    comment appelle-ton une macro dans le module 1 alors que je suis dans mon userform

    Cordialement

    Merci d'avance pour votre réponse

    Novice72

  9. #9
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    ok .. je vais passer la main ... pourquoi me parle tu encore de ta variable ly de tes IF ....

    je te demande juste le code que tu utiliserais pour appeler ta macro sans aucun tests parasites ... juste ton CALL et dis nous si cela fonctionne...


    on verra ensuite pour tes IF et tes CASES...

  10. #10
    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,

    Dans un module standard ces 3 macros de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub caumont()
        MsgBox "caumont"
    End Sub
     
    Sub Lemonnier()
        MsgBox "Lemonnier"
    End Sub
     
    Sub Monnet()
        MsgBox "Monnet"
    End Sub
    dans le module de la Form, 1 TextBox nommé "TextBox1" et 1 bouton nommé "CommandButton1" (ce sont les noms par défaut). lancer la Form, entrer une valeur dans le TextBox (1 pour "caumont", 2 pour "Lemonnier" et n'importe lequel pour "Monnet") :
    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
     
    Private Sub CommandButton1_Click()
     
        Dim ly As Integer
     
        ly = CInt(TextBox1.Text)
     
        Select Case ly
     
            Case Is = 1
                caumont
     
            Case Is = 2
                Lemonnier
     
            Case Else
                Monnet
     
        End Select
     
    End Sub
    Hervé.

  11. #11
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 211
    Points : 87
    Points
    87
    Par défaut ca ne marche pas
    Bonjour Theze,

    Je ne comprends pas pourquoi je dois créer des textbox et un bouton.....
    en tout cas ça ne change pas mon problème. En effet, mon souci, je pense, c'est que les "sous macros" ( qui sont dans le module1 ) doivent être lancée par le résultats d'une procédure ( d'une calcul ) et non pas par un bouton.

    Excuses moi, mais je suis PERDU !!!!
    Veux-tu que je t'envoie un bout de mon programme ???


    J'ai cru comprendre sur les forums qu'il n'y a que 6 façons de lancer une macro ( bouton, raccourci clavier, etc...... ) MAIS PAS PAR DU TEXTE ?????

    D'avance Merci

    Novice72

  12. #12
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 211
    Points : 87
    Points
    87
    Par défaut Pour bbil
    bonsoir,
    Peux-tu juste répondre à cette question :
    Comment lancer une macro à partir d'un programme ( donc avec du texte ). ???

    PS : Sachant que la macro à lancer est dans le module1 contrairement au programme qui appartient à un bouton d'userform.

    Merci

    Novice72

  13. #13
    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
    bonjour a tous WAHOUH !!!!!!débutant oui mais pas sourd quand même ,ni aveugle !!!on vient de te l'expliquer une macro dans un module quelconque s'appelle dans un évènement d'un control voir même de l'userform et quand je dis évènement je veux (click,move, mousedown,etc....) c'est pas compliqué a comprendre par curiosité tu enseigne quoi?
    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

  14. #14
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonjour.

    Mets une commande Stop dans ton code pour en interrompre l'execution. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Select Case ly
      Stop
         Case Is = 1
           Call caumont
         Case Is = 2
           Call Lemonnier
    ........
          Case Else
           Call Monnet
         End Select
    Puis utilise la touche F8 a plusieurs reprises pour continuer l'execution Pas A pas jusqu'a ce que tu arrives a la ligne qui provoque l'erreur.
    Cordialement

    Docmarti.

  15. #15
    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,

    MAIS PAS PAR DU TEXTE ?????
    Pourquoi crier ?
    L'exemple que j'ai posté c'est juste pour que tu puisse comprendre le fonctionnement de l'appel d'une procédure selon la valeur d'une variable après, que ce soit sur "Click" d'un bouton et comme le dis Patrick, sur n'importe quel autre évènement, ou encore de la manière que tu veux, si tu lance le code qui est attaché au bouton tu aura une des macro qui sera appelée !
    D'un autre coté, bbil t'a posé une requête qui est restée sans réponse de ta part :
    je te demande juste le code que tu utiliserais pour appeler ta macro sans aucun tests parasites ... juste ton CALL et dis nous si cela fonctionne...
    Hervé.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Hormis les is = qui en l'espèce ne sont pas utiles, le select case est plus maintenable que les if imbriqués et il est correcte!

    Effectuer un branchement à une. Sub routine avec un call, pourquoi pas!

    Reste, par élimination, à regarder du côté du caumont!

  17. #17
    Membre actif
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Novembre 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2013
    Messages : 120
    Points : 293
    Points
    293
    Par défaut
    Bonjour,

    Plus simplement, pour appeler une autre fonction, il ne faut pas mettre les parenthèses après le nom de la macro ? Dans son cas il y a peut être des arguments dans ces différentes fonctions et c'est peut être la que ça coince.

    Par exemple :


  18. #18
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 211
    Points : 87
    Points
    87
    Par défaut Réponse à Patricktoulon et Theze
    Non je ne crie pas. Je pose simplement une question qui, à mon sens ne trouve pas de réponse ( ou réponse Hors Sujet ). Bbil m'a demandé le code pour lancer les macros (c'est ce que j'essaie de faire avec call caumont ) . Donc quand on me dit que je ne réponds pas à sa requête.......

    Pour Patrick : J'enseigne les mathématiques ( avec des mots simples compris de tous sinon je réponds aux élèves qui ne les comprennent pas sans arrogance ! ). Je ne suis ni sourd ni aveugle mais la commuication c'est peut-être le "récepteur" mais aussi "l'émetteur"
    tu parles d' évènement d'un control voir même de l'userform et quand je dis évènement je veux (click,move, mousedown,etc....) . Là je commence à comprendre ce que veux dire évènement. Bref.......

    J'ai trouvé la solution : Il fallait tout simplement remplacer par . Maintenant ça marche...

    Encore Merci à vous tous pour le temps passé pour résoudre mon problème. ( je suis vraiment novice )


    NOVICE72

  19. #19
    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 ce
    bonjour
    pour moi c'est du grand nimporte quoi!

    pourquoi faire simple quand on peut faire compliqué hein!!!

    dans un userform avec un bouton et le textbos "ly"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [Private Sub CommandButton1_Click()
    Select Case ly
           Case 1
            caumont
         Case 2
            Lemonnier
          Case Else
            Monnet
         End Select
    End Sub
    et dans le module standard 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub caumont()
    MsgBox "caumont"
    End Sub
    Sub Lemonnier()
    MsgBox "Lemonnier"
    End Sub
    Sub Monnet()
    MsgBox "Monnet"
    End Sub
    et basta ca roule
    et quoi que la il y aurait encore a dire que l'on peut encore simplifier la chose
    exemple 2:

    dans le userform avec tes 2 controls tu met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_Click()
    quel_lycée ly
    end sub
    et dans le module standard tu met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sub quel_lycée(ind)
    msgbox switch(ind=1,"caumont",ind=2,"lemonier",ind>2,"monet")
    ens sub
    voila !!!!
    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

  20. #20
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Citation Envoyé par Novice72 Voir le message
    J'ai trouvé la solution : Il fallait tout simplement remplacer par . Maintenant ça marche...

    ... ( je suis vraiment novice )
    Apparemment tu as une feuille dont la propriété NAME est "caumont" et une procédure qui s'appelle "caumont". Si c'est le cas,
    dans
    "caumont" réfère à la feuille et non à la procédure, d'où l'erreur.
    Cordialement

    Docmarti.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Windows Phone 8] problème appel de webservice avec une methode async ne fonctionne qu'une fois
    Par slacky dans le forum Windows Phone
    Réponses: 0
    Dernier message: 18/05/2015, 13h39
  2. [Batch] Appel de macro avec paramètres
    Par dewey01 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 03/02/2011, 14h22
  3. [XL-2003] Appeler une macro avec paramètres
    Par Raptang dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/08/2010, 08h29
  4. macro avec call symput
    Par kabstat dans le forum Macro
    Réponses: 14
    Dernier message: 04/07/2008, 23h08
  5. probléme appel de macro
    Par bryce426 dans le forum C++
    Réponses: 5
    Dernier message: 02/01/2008, 11h21

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