Activer une macro excel par une formule

Résolu
simpsons -  
gbinforme Messages postés 14946 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

Mytå Messages postés 2973 Date d'inscription   Statut Contributeur Dernière intervention   953
 
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   Statut Contributeur Dernière intervention   4 724
 
bonjour

il faut utiliser la macro événementielle calculate avec un code bien adapté car elle se déclenche souvent.
0
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
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
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
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
Mytå Messages postés 2973 Date d'inscription   Statut Contributeur Dernière intervention   953
 
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
simpsons
 
merci a tous je vais essayer de me debrouiller avec tout ca,merci encore de votre patience
0
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

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

Posez votre question
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
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
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
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
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   Statut Contributeur Dernière intervention   953
 
Re le forum

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

Mytå
0
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
Mytå Messages postés 2973 Date d'inscription   Statut Contributeur Dernière intervention   953
 
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
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
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
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