formule pour lancer une macro

  • Initiateur de la discussion Initiateur de la discussion stéphane
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

stéphane

Guest
Bonjour à tous, merci pour votre attention.

J’aimerai insérer dans un la valeur VRAI d'une formule SI (si(condition;vrai;faux) l'ordre pour excel de lancer une macro.

Je m'explique :
Dans la cellule A1 je peux avoir 2 valeurs (1;2)
Si la valeur est 1 la cellule B1 prend la valeur de la cellule C1
Si la valeur est 2, une MSGBOX s'ouvre pour rentrer directement dans la cellule B1 la valeur saisie.

Voila merci d'avance pour vos lumières.

Stef
 
Salut Stéphane, le Forum

Voici une solution par macro évènementielle à placer dans le Private Module de la Feuille en Question :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Data As String

If Application.Intersect(Target, Range("A1")) Is Nothing Then Exit Sub

With Me
If .Range("A1") = 1 Then
.Range("B1") = .Range("C1")
ElseIf .Range("A1") = 2 Then
Data = InputBox("Veuillez saisir une valeur", "Information Demandée", 10)
.Range("B1") = Data
End If
End With
End Sub


Bon Aprèm
@+Thierry
 
Bonsoir le Forum et Stéphane

Stéphane n'a pas bien compris le principe du Forum, en même temps qu'il postait cette réponse sympa il me questionnait en BAL :


-----Message d'origine-----
De : Stéphane
Envoyé : jeudi 28 août 2003 16:25
À : @+Thierry
Objet : Re: formule pour lancer une macro [1:47109:47131]

merci mille fois Thierry, le code est lumineux.

Pourtant, et c'est pourquoi j'aimerai pouvoir lancer l'ordre d'exécution de la macro dans une formule d'un cellule, comment puis-je reproduire la macro que vous m'avez transmise dans une zone importante (A1:A300) ?

pour finir et si ce n'est pas abuser de votre temps , quel est la signification du "Me" dans la procédure With.

merci beaucoup


Donc, comme le principe ici est de tout partager je vais donc répondre dans le Forum pour perpétuer ce partage de connaissance...

Le "Me", ce n'est pas "Moi" (lol) mais c'est une constante sympa et très pratique pour travailler en Private Module afin de préciser à VBA où on travaille...
Par exemple dans un Private Module de Feuille ou de UserForm, tape => Me.

Immédiatement la saisie semi-auto va te proposer une Liste Déroulante des Objets disponibles.... C'est très très pratique... Et plus simple que de taper :
With Sheets("MaFeuille").Range("A1")... Blah blah


Pour étendre ce code sur une plage (A1:A300) il faut une peu changer la procédure en s'appuyant sur Offset (décaler) de la Target (la cellule Cible qui vient d'être modifiée) comme suit :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Data As String

If Application.Intersect(Target, Range("A1:A300")) Is Nothing Then Exit Sub

If Target = 1 Then
Target.Offset(0, 1) = Target.Offset(0, 2)
ElseIf Target = 2 Then
Data = InputBox("Veuillez saisir une valeur", "Information Demandée", 10)
Target.Offset(0, 1) = Data
End If
End Sub


Pour Info Offset(0, 1) = Décaler de zéro ligne et d'une colonne...

Bonne NUit
@+Thierry
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
200
Réponses
2
Affichages
174
Réponses
7
Affichages
176
Retour