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 :

impossible de démarrer macro sous condition


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 123
    Points : 54
    Points
    54
    Par défaut impossible de démarrer macro sous condition
    Bonjour,
    je débute en VBA et je voudrais savoir comment lancé une macro à partir d'une condition présente dans le fichier excel.
    Par exemple : si le nom est "alex" alors activer macro1

    j'ai essayé un petit truc quand même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sub macro ()
    If (B4) = "alex" Then
    macro1
    End sub
    et bien sur la macro ne démarre pas si je mets le nom "alex" ^^

    Quelqu'un peu m'aider ?

    merci d'avance !

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,

    modifies entre ces deux choix :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sub macro ()
    If [B4] = "alex" Then
    macro1
    End sub
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sub macro ()
    If range("B4") = "alex" Then
    macro1
    End sub

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 48
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    d'après ce que j'ai comprit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub macro()
    If Range("B4").Value = "alex" Then
        ThisWorkbook.macro1
    End If
    End Sub
    ta macro "macro", veux-tu qu'elle fonctionne comme une tâche de fond et si tu écris alex alors ta macro 1 est lancé ?

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 123
    Points : 54
    Points
    54
    Par défaut
    Merci pour vos réponses alors j'ai fait comme m' a dit fllyann mais cela marque :
    Erreur de compilation :
    Membre de méthode ou de données introuvable

    et concernant casefayere, excel me dit qu'il manquait "end if" donc je l'ai rajouté mais rien ne se passe quand je change les conditions ...

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 48
    Points : 58
    Points
    58
    Par défaut
    Il faut remplacer le ThisWorkbook par "là" où se trouve ta macro1

    userform1/2..., Feuil1/2...

    bon courrage

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 123
    Points : 54
    Points
    54
    Par défaut
    euh comme j'ai dit je débute donc pourrais tu me faire un exemple concret s'il te plait?

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 48
    Points : 58
    Points
    58
    Par défaut
    Désolé, quand tu crées une macro,

    Elles est soit dans Microsoft Excel Object ou Feuilles ou Modules

    dans le premier tu as toutes tes feuilles ( Feuil1 ou2 ou..) de classeur ainsi que ThisWorkBook.

    Dans la seconde tu as tous tes UserForm ( formulaires ) que tu peux créer

    et dans les modules tu as Module1,2.... c'est là que tu retrouves les macros que tu as enregistré avec l'enregistreur de macro

    Voilà désolé pour les puristes qui liront ça

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 123
    Points : 54
    Points
    54
    Par défaut
    donc je dois faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub macro()
    If Range("B4").Value = "alex" Then
    useform2, Feuil2.Macro1
    End If
    End Sub
    ??

  9. #9
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour ric009,

    Copie ces 3 procédures et lance macro1.
    Cela va t'aider à comprendre le fonctionnement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub macro1()
        If Range("B4") = "alex" Then
            macro2
        Else
            macro3
        End If
    End Sub
    Sub macro2()
        MsgBox "Ca marche ! "
    End Sub
    Sub macro3()
        MsgBox "... ou pas!"
    End Sub
    Cordialement.

  10. #10
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Désolé pour le End if oublié, sinon je pensai que, quand tu as écris "macro1", c'était pour faire un raccourci et que tu remplacais ce terme par ta macro proprement dite.

    et bien sur la macro ne démarre pas si je mets le nom "alex" ^^
    là je pense qu'i faut passer par l'évènement "change" de ta feuille, exemple si ton code est pour feuil1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_Change(ByVal Target As Range)
    'si les données sont en A
    If Target.Column = 1 Then
        If Range("B4") = "alex" Then
            ta macro
        End If
    End If
    End Sub

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 123
    Points : 54
    Points
    54
    Par défaut
    casefayere sa a presque fonctionné !
    sa marque :
    Erreur d'exécution '9' :
    L'indice n'appartient pas à la sélection
    ...

  12. #12
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    fais un pas à pas et dis-moi sur quelle ligne tu as ce message

  13. #13
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 123
    Points : 54
    Points
    54
    Par défaut
    le message n'apparait plus, c'étais une erreur de feuille ! mais maintenant plus de message d'erreur mais quand je rentre "alex" rien ne se passe...

  14. #14
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Je viens de voir une erreur de ma part :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_Change(ByVal Target As Range)
    'si les données sont en A
    If Target.Column = 2 Then
        If cells(4,target.column) = "alex" Then
            ta macro
        End If
    End If
    End Sub

  15. #15
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 123
    Points : 54
    Points
    54
    Par défaut
    Oui j'avais trouvé l'erreur et donc ca marche !!! merci pour ta patience ^^

    Merci à tous et bonne journée !!

  16. #16
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 123
    Points : 54
    Points
    54
    Par défaut
    Bonjour à tous !
    j'ai de nouveau un problème avec excel ...
    cette fois je ne veux plus contenter d'une seul macro... je cherche à faire ceci :
    si nom = alex alors macro1
    si age > 18 alors macro2
    si taille < ou = 178 macro3

    quel serait la fonction à utiliser dans ce cas ?

  17. #17
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    tu reprends la meme macro en ajoutant en fonction de tes besoins :

    Vite fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 2 And Target = "alex" Then 'si nom est en colonne 2
             ta macro
    Elseif target.column = 3 and Target > 18 Then 'si age est en colonne 3
            ta macro
    ElseIf target.column = 4 and Target<= 178 Then 'si taille est en colonne 4
            ta macro
    End If
    End Sub

  18. #18
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 123
    Points : 54
    Points
    54
    Par défaut
    merci pour ta réponse !
    mais la fonction target.column est pour les colonnes
    alors que moi le information se trouve dans la même colonne ...
    il n'existe pas une fonction propre aux lignes ?

  19. #19
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548

  20. #20
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 123
    Points : 54
    Points
    54
    Par défaut
    Merci de ta réponse voila ce que sa donne !

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    'si les données sont en A
    If Target.Row = 7 Then
        If Range("B7") = "Alex" Then
            Macro1
            MsgBox ("OK")
            ElseIf Range("B7") = "n.a" Then
            MsgBox ("désactivé")
    ElseIf Target.Row = 5 Then
        If Range("B5") > "18" Then
            Macro2
            MsgBox ("OK2")
        End If
        End If
    End If
    End Sub

    tous se passe bien concernant la partie "Alex" les deux cas fonctionne mais concernant l'age rien ne se passe ... j'ai mis différente valeur à plusieurs reprises mais rien s'active même pas le MsgBox ...

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

Discussions similaires

  1. Macros sous condition dans une autre macro
    Par vvl_5 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/12/2013, 20h14
  2. [AC-2007] ERREUR 0 : Lancer une macro sous condition avec "ExecuterMacro"
    Par Octo LPO dans le forum Macros Access
    Réponses: 2
    Dernier message: 01/02/2013, 15h31
  3. exécution macro sous condition
    Par arthour973 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 11/12/2011, 10h37
  4. [AC-97] Macro sous condition
    Par julio79 dans le forum IHM
    Réponses: 0
    Dernier message: 28/05/2009, 18h17
  5. [Demarrage] Impossible de démarrer sous win xp
    Par GyZmoO dans le forum Windows XP
    Réponses: 9
    Dernier message: 13/08/2006, 23h36

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