Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

formule pour lancer une macro

  • Initiateur de la discussion stéphane
  • Date de début
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
 
@

@+Thierry

Guest
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
 
S

stéphane

Guest
merci mille fois pour ce code, en effet cela facilite le traitement et réduit considérablement la compléxité des formules dans les cellule.

merci le Forum, bonjour chez vous !
 
@

@+Thierry

Guest
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
 

Discussions similaires

Réponses
6
Affichages
249
Réponses
2
Affichages
530
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…