Activer une macro excel par une formule

Résolu
Bonjour,

en fait j'aimerais activer une macro par une formule, genre si le resultat est 1 alors active macro x

8 réponses

  1. Contributeur
    Salut le forum

    Code à mettre dans le module dans la feuille

    Private Sub Worksheet_Calculate()
      If Range("A1") = 5 Then
        'Ici ton action
      End If
    End Sub
    

    Mytå
    0
    1. Contributeur
      bonjour

      il faut utiliser la macro événementielle calculate avec un code bien adapté car elle se déclenche souvent.
      0
      1. je n'ai pas trouvé macro evenementiel mais merci de ta reponse
        je cherchais une formule simple du genre
        si(a1=1,active macro;"")
        0
      2. Contributeur
        bonsoir,

        La macro événementielle, c'est celle que Mytå (salut à toi) t'as proposée.

        La macro s'active toute seule dès que ton classeur se calcule : tu n'as même pas besoin de formule pour la lancer.

        De toute façon, si tu veux lancer une macro, va bien falloir l'écrire ?

        Si tu l'as enregistrée ("ma_macro" par exemple),
        tu cliques droit sur le nom de ta feuille
        tu choisis visualiser le code
        tu as "général" avec une flèche à droite : tu sélectionnes "worksheet"
        tu obtiens
        Private Sub Worksheet_(ByVal Target As Range)
        
        End Sub
        

        sur la flèche à droite de "SelectionChange" tu choisis "Calculate"
        tu obtiens
        Private Sub Worksheet_Calculate()
        
        End Sub

        entre les 2 lignes tu écris le code de Mytå
         If Range("A1") = 1 Then
            call ma_macro
          End If
        

        en remplaçant A1 par ta cellule et ma_macro par ton nom

        Dès que tu changes une cellule qui fait que A1 est égale à 1 ton action se déroule.
        0
    2. merci pour la reponse myta,mais pour moi c'est du chinois,je suis novice
      faire une macro ca va,j'enregistre ce que je fais c'est cool, pas besoin de connaitre vba,

      j'aurais aimé avoir une formule du genre

      si(a1=1;activemacro;"")
      est ce possible merci d'avance
      0
      1. Contributeur
        Re le forum

        Gbinforme ta répondu sur le Permalink#6 pour implanter le code

        Sinon, tu pourrais toujours utiliser une fonction personnalisée

        Public Function Bidule() 
        Bidule = 3 
        End Function 
        

        Et ta formule donnerais

        =SI(A1=1;Bidule();FAUX)


        Mytå
        0
      2. merci a tous je vais essayer de me debrouiller avec tout ca,merci encore de votre patience
        0
    3. Private Sub Worksheet_Calculate()

      End Sub
      If Range("A1") = 1 Then
      Call macro_1
      End If
      Private Sub Worksheet_SelectionChange(ByVal Target As Range)

      End Sub

      j'ai reussi a ecrire ca mais ca marche pas quand je met 1 dans a1 la macro ne se
      declenche pas
      0
      1. Contributeur
        bonjour

        Comme ceci car tu as mis ton code en dehors :

        Private Sub Worksheet_Calculate()
            If Range("A1") = 1 Then
                Call macro_1
            End If
        End Sub
        
        0
        1. j'ai recopié ta commande mais ca ne fonctionne pas, le nom de ma macro
          est macro1 est non pas macro_1,si j'affecte ma macro a une image elle fonctionne par contre si je met 1 dans a1 rien ne se passe, je pense que c'est trop compliqué pour un ptit cerveau comme le mien,un jour il faudra que je me decide a apprendre vba, en attendant je te remercie de ta patience,des questions sur excel j'en ai plein si un jour tu t'ennuie n'hesite pas,mais quand je vois toutes ces questions sur le forum je penses que tu as de quoi faire, encore une fois merci

          simpsons
          0
          1. Contributeur
            le nom de ma macro est macro1 est non pas macro_1

            eh bien tu mets
                    Call macro1
            


            petit rappel : en remplaçant A1 par ta cellule et ma_macro par ton nom
            0
          2. Contributeur
            Re le forum

            Tu as bien copié le code dans le module de ta feuille, pas dans un module standard.

            Mytå
            0
        2. yes ca marche quand je met =1 dans a1 mais pas avec 1 tout seul
          j'ai progressé merci encore je penses m'en sortir c'est super genial je ne sais pas ce que j'ai ecrit car j'ai recopié ta commande mais ca marche encore un grand merci

          simpsons
          0
          1. Contributeur
            Re le forum

            Tu avais demander : j'aimerais activer une macro par une formule

            Pour le changement de la valeur d'une cellule utilise plutôt

            Private Sub Worksheet_Change(ByVal Target As Range)

            Ton code pourrait alors ressembler à ceci
            Private Sub Worksheet_Change(ByVal Target As Range) 
              If Not Application.Intersect(Target, Range("A1")) Then 
                MsgBox "hello" 
              End If 
            End Sub 
            


            Mytå
            0
        3. ca marche c'est genial merci myta merci gbinform oh dieu de l'informatique
          je ne sais pas ce que j'ai fait mais ca marche vous etes geniaux
          super continez a aidez un grand merci les ptits loups
          simpsons
          0
          1. Contributeur
            Je suis content pour toi mais n'oublies pas qu'en informatique il faut être très méticuleux dans l'encodage des procédures car la moindre erreur anéanti la meilleure des fonctions.

            Tu as persévéré et j'espère que tu vas continuer et dans quelques semaines, c'est toi qui en aidera des plus débutants.

            C'était temps de réussir car demain nous ne t'aurions pas cru :)
            0