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