Exécuter une macro sous conditions

bonjour à toutes et tous,

j'ai besoin de votre aide pour faire que ma macro s'exécute automatiquement quand la condition requise est exact.

La macro fonctionne mais je suis obligé de faire Exécuter pour qu'elle déclenche.

Je joins un tout petit fichier pour plus de compréhension.

Par avance merci pour votre aide.

29test-copy.xlsm (13.43 Ko)

Il faut ajouter une macro évènementielle, portant sur une des feuilles du classeur.

Par exemple, dans "enquete", si j'ai bien compris ta demande :

Private Sub Worksheet_Change(ByVal Target As Range)

If not intersect(Target, ActiveSheet.Range("XXX")) is Nothing then

If Target.value = "Demande" Then

Call MACRO_A_EXECUTER

end if

end if

end sub

Il faut bien sûr adapter avec la cellule et la macro qui t'intéressent.

Salut pskyl,
Salut 3GB,

ça, pour être sibyllin comme exemple mais je rejoins l'interprétation de 3GB.
Il te faut une macro événementielle, qui réagit vraisemblablement à un changement en colonne [B:B].
Maintenant, il faut vérifier très certainement d'autres détails en cours d'utilisation...

Bref, en fonction de [A1], teste en encodant quelque chose en regard de "Client", en [B:B].

Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim iRow%
'
Application.EnableEvents = False
'
If Not Intersect(Target, Columns(2)) Is Nothing Then _
    iRow = Range("A" & Rows.Count).End(xlUp).Row: _
    If Target <> "" And [A1] = "Demande" Then _
        Range("A" & iRow).Offset(4, 0).Value = Range("A" & iRow).Value: _
        Range("B" & iRow).Offset(4, 0).Select
'
Application.EnableEvents = True
'
End Sub


A+

13test-copy.xlsm (16.32 Ko)

Salut et merci à vous 2 pour votre aide.

je vais tester, mais je pense que à va me prendre un certain temps pour comprendre.

j'ai regarder le fichier. en fait c'est le client que je veux récupéré soit "B2" si "A1" est égal à "demande" si autre ou vide je fais rien. si A1 redevient vide ou autre que demande alors B2 = " "

Bonne journée.

Rien compris...

Pas étonnant,

Une partie de la macro originelle ne fonctionne pas correctement en vert.

j'espère que se sera un peu plus clair.

15test-copy.xlsm (15.18 Ko)

Il faudrait que tu précises les cas et les étapes clairement.

A première vue, de ce que je comprends, il te faut seulement :

If Range("Requete").value = "demande" then

Range("Client").copy

Range("Destination").PasteSpecial Paste:=xlTypeValues

'ou Range("Destination").value = Range("Client").value à la place des 2 autres

Range("Requete").ClearContents

else: Range("Client").value = "" 'ou .ClearContents

end if

En fait ton fichier est nu, donc on ne comprend pas du tout. Si on connaissait l'objectif, ça pourrait nous orienter.

Et ici, "Requete", "Client" et "Destination" correspondent respectivement aux cellules A1, B2 et B6. Tu devrais donc leur attribuer un nom, ça serait plus simple.

Merci pour ton aide,

Peux-tu me montrer ton idée avec le fichier joint? sinon je peux essayer de faire un fichier simplifier du celui sur lequel je travail mais ça va être long

merci.

Tiens, je t'envoie le fichier avec ce que j'ai compris de ta demande.

NB : Je te précise que je ne connais pas la finalité mais si cette opération est à répéter plusieurs fois à partir d'une base de clients dans laquelle figurent déjà les types de requête ("demande", ...), alors ce code n'est pas approprié.

10test-copy.xlsm (16.74 Ko)

bonjour 3GB,

désolé pour cette réponse tardive. Cela correspond à mes attentes, juste à adapter un peu.

merci pour ton aide très utile.

bonne journée

Rechercher des sujets similaires à "executer macro conditions"