Activer une macro excel par une formule

Résolu/Fermé
simpsons - 27 mars 2011 à 22:41
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 31 mars 2011 à 21:14
Bonjour,



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

8 réponses

Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
27 mars 2011 à 23:10
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
27 mars 2011 à 23:12
bonjour

il faut utiliser la macro événementielle calculate avec un code bien adapté car elle se déclenche souvent.
0
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
28 mars 2011 à 00:11
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
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
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
Modifié par Mytå le 28/03/2011 à 00:39
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
merci a tous je vais essayer de me debrouiller avec tout ca,merci encore de votre patience
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
29 mars 2011 à 22:04
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
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
29 mars 2011 à 23:13
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
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
29 mars 2011 à 23:15
Re le forum

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

Mytå
0
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
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
Modifié par Mytå le 29/03/2011 à 23:38
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
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
31 mars 2011 à 21:14
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