Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

lancer une macro dans une formule SI()

4 réponses
Avatar
Arnaud
Bonjour tout le monde,
J'aimerai lancer une macro par la bar de formule grace une formule logique du type:
SI ( A2=1; "lancer la macro1" ; "lancer la macro2")
Je ne connait pas la syntaxe pour lancer une macro.
Merci
Arnaud,

4 réponses

Avatar
pascal engelmajer
Salut,
il te faut écrire une macro qui elle teste A2
.../...
if [A2].Value=1 then
macro1
elseif [A2].value =2 then
macro2
end if
.../...

Si tu utilise un bouton dans une barre d'outil place cette macro dans un
module standard.
avec personnaliser/commandes/Bouton macro
crée ton bouton en le faisant glisser vers ta barre d'outil, clic droit etc.

Sinon crée un bouton avec formulaire ...

Amicalement
Pascal
"Arnaud" a écrit dans le message de
news:
Bonjour tout le monde,
J'aimerai lancer une macro par la bar de formule grace une formule logique
du type:

SI ( A2=1; "lancer la macro1" ; "lancer la macro2")
Je ne connait pas la syntaxe pour lancer une macro.
Merci
Arnaud,


Avatar
Chris MICHEL
Bonjour,

Ca dépend un peu du code de ta macro, mais il est
probablement possible de faire de ta macro une fonction
personnalisé. Déclare la en function biduletruc() as
variant et finit par biduletruc=leresultat à la fin de ta
fonction (juste avant le end function).

après, tu pourras écrire = si(A2="";"";biduletruc(A2))

Voila,

Chris.
-----Message d'origine-----
Bonjour tout le monde,
J'aimerai lancer une macro par la bar de formule grace
une formule logique du type:

SI ( A2=1; "lancer la macro1" ; "lancer la macro2")
Je ne connait pas la syntaxe pour lancer une macro.
Merci
Arnaud,
.



Avatar
Chris MICHEL
Mouais, après test, le conseil que je t'ai donné marche
moyen. Si tout ce que tu veux, c'est une macro qui donne
un résultat numérique, c'est OK d'utiliser une fonction.
Tu peux aussi lancer des MessageBox et ce genre de chose,
mais tu ne peux pas modifier le format de la feuille par
exemple. Le conseil de Pascal reste plus sage et plus
logique.
-----Message d'origine-----
Bonjour tout le monde,
J'aimerai lancer une macro par la bar de formule grace
une formule logique du type:

SI ( A2=1; "lancer la macro1" ; "lancer la macro2")
Je ne connait pas la syntaxe pour lancer une macro.
Merci
Arnaud,
.



Avatar
Michel Gaboly
Bonjour,

Une formule ne peut pas directement appeler une "Sub". Seule une
"Function" peut l'être. Par contre, rien empêche d'utiliser une
procédure événementielle lorsque le contenu de la cellule est
modifiée.

Utilise l'événement Change de la feuille. Voici un exemple :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim c As Range
For Each c In Target
If c.Address(False, False) = "A2" Then
If c = "1" Then
Macro1
Else
Macro2
End If
End If
Next c
End Sub

Private Sub Macro1()
MsgBox "Le contenu de A2 est 1."
End Sub

Private Sub Macro2()
MsgBox "Le contenu de A2 est différent de 1."
End Sub


Target représente l'ensemble des cellules dont la valeur est modifiée.
"c" permet de les parourir. Un test permet de ne déclencher une macro
que pour pour la cellule A2. Un second test :

If c = "1" then

permet de lancer une macro si A2 est égal à 1 et une autre dans le cas
contraire.

Dans ce second test, j'emploie "1" et non 1, car avec certaines versions
d'Excel au moins (testé avec Excel 98), si le contenu de A2 n'est pas
numérique, le test

If c = 1 then

renvoie une erreur 13 (incompatibilité de type).



Bonjour tout le monde,
J'aimerai lancer une macro par la bar de formule grace une formule logique du type:
SI ( A2=1; "lancer la macro1" ; "lancer la macro2")
Je ne connait pas la syntaxe pour lancer une macro.
Merci
Arnaud,


--
Cordialement,

Michel Gaboly
http://www.gaboly.com