Activer une macro excel par une formule

Résolu
simpsons -  
gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   -
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. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
     
    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
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    il faut utiliser la macro événementielle calculate avec un code bien adapté car elle se déclenche souvent.
    0
    1. simpsons
       
      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. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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
  3. simpsons
     
    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. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
       
      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. simpsons
       
      merci a tous je vais essayer de me debrouiller avec tout ca,merci encore de votre patience
      0
  4. simpsons
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  7. simpsons
     
    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. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
       
      Re le forum

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

      Mytå
      0
  8. simpsons
     
    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. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
       
      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
  9. simpsons
     
    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. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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