Lancement macro si cellule est égal a

Bonjour forum,

J'ai une petite macro dans une feuille, mais seulement j'ai l'impression qu'elle tourne en boucle. Dès que je met 2 chiffres en même temps (avec un copier coller) la macro tourne en boucle. Ce que j'aimerais c'est si C3 = 1 on execute la macro qu'une fois alors je ne sais pas si le code est bon ou si on peu le modifier. Ou si je supprime avec suppr les cellules C3,D3,E3 il lance la macro 3 fois.

Il y a aussi que si la cellule C3 ou D3 ou E3 est le produit d'une somme cela ne fonctionne pas.

Exemple en E3 si la valeur est 3 et que dans la cellule la formule est =SOMME(E4:E5) en E4 on met 1 et en E5 on met 2 la somme fait bien 3.

Merci de vôtre aide

Private Sub Worksheet_Change(ByVal Target As Range)
 On Error Resume Next
If Target.Address = "$C$3" And Target.Value = "1" Then Macro 1
If Target.Address = "$D$3" And Target.Value = "2" Then Macro 1
If Target.Address = "$E$3" And Target.Value = "3" Then Macro 1
End Sub

Salut stepaustras,

à tester

Private Sub Worksheet_Change(ByVal Target As Range)
 On Error Resume Next
with Target
If (.Address = "$C$3" And .Value = "1") OR (.Address = "$D$3" And .Value = "2") OR (.Address = "$E$3" And .Value = "3") Then Macro 1
End With
End Sub

Merci pour la réponse m3ellem1 j'avais édité donc je ne sais pas si tu avais lu.

Concernant si la cellule est la somme d'un produit si egal a 3 pour E3 cela ne lance pas la macro.

Ajoute cette ligne dans ton code

ActiveSheet.Range("E3 ").Calculate

tu le met a quel endroit cette ligne ?

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Range("E3 ").Calculate
 On Error Resume Next
with Target
If (.Address = "$C$3" And .Value = "1") OR (.Address = "$D$3" And .Value = "2") OR (.Address = "$E$3" And .Value = "3") Then Macro 1
End With
End Sub

Pas l'air de fonctionner j'ai fais un fichier avec 4 petite macros pour simuler ce que j'essaie de faire la macro principal ouvrira IE pour voir si cela fonctionne a tort ou a raison. On peu tester les petites macro de haut en bas une par une.

40test-macro.xlsm (19.68 Ko)

Sinon j'ai trouvé une autre solution qui semble mieux fonctionner, il me faudrait rajouter pour les cellules C3 et D3. Le seul hic c'est dès qu'on change n'importe quelle valeur d'une cellule quelconque la macro se lance si E3=3

Sub Worksheet_Change(ByVal Target As Range)
Set Target = Range("E3")
If Target.Value = "3" Then
 Call Macro1
End If
If Target.Value = "" Then Exit Sub
End Sub

Je pense que je vais rester sur ceci dans un module, le seul truc c'est que j'aimerais que si il trouve 1 en C3 mais qu'il y a une formule sur D3 et E3 mais que la somme n'est pas 2 (D3) ou 3 (E3) qu'il ne m'efface pas mes formules. Est ce possible ? Car le code dans l'état il va effacer tout.

Sub macro10()
If Range("C3").Value Like "*1*" Then Macro1
Range("C3").Activate
Selection.ClearContents

If Range("D3").Value Like "*2*" Then Macro1
Range("D3").Activate
Selection.ClearContents

If Range("E3").Value Like "*3*" Then Macro1
Range("E3").Activate
Selection.ClearContents

End Sub

Re,

essaie comme ca

Private Sub Worksheet_Calculate()
   Worksheet_Change Range("E3")
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
 On Error Resume Next
With Target
If (.Address = "$C$3" And .Value = 1) Or (.Address = "$D$3" And .Value = 2) Or (.Address = "$E$3" And .Value = 3) Then
Call Macro1
End If
End With
End Sub
38test-macro-der.xlsm (19.95 Ko)

Merci j'ai essayé mais cela ne fonctionne pas a 100%, par exemple si je supprime deux cellules en même temps C3 et D3 ça ouvre une page, du coup j'ai mis ça dans un simple module plutôt que dans la feuille avec private sub. La macro1 ouvre une page google et la macro2 une page lycos, si une formule existe (C3 ou D3 ou E3) cela fonctionne, si je supprime le contenu d'une cellule ou plus cela n'ouvre pas de page et je supprime le contenu de la cellule une fois la macro exécuté pour être sur qu'il ne fasse pas deux fois la macro et je ne suis pas sur que la suppression soit correct. car si C3 = 1 et D3 = une formule mais le produit ne donne pas 2 il lance macro et supprime le contenu de C3 mais aussi de D3 ou j'ai une formule par exemple donc pas bon.

Sub macro10()

If Range("C3").Value Like "*1*" Then Macro1
If ActiveCell.Value <> "1" Then Range("C3").Value = ""

If Range("D3").Value Like "*2*" Then Macro2
If ActiveCell.Value <> "2" Then Range("D3").Value = ""

If Range("E3").Value Like "*3*" Then Macro1
If ActiveCell.Value <> "3" Then Range("E3").Value = ""

End Sub

Ou si je supprime avec suppr les cellules C3,D3,E3 il lance la macro 3 fois.

Maintenant tu veux l‘inverse c‘est realisable aussi, mais bon c‘est toi qui decide!

En faite non je ne veux pas l'inverse, je reste comme au début si C3 = 1 alors il lance la macro1 mais supprime le 1 de C3 pour pas avoir deux macro (deux fois C3) qui se lance au cas ou. Mais le truc c'est que si je supprime C3 et D3 manuellement pour comme réinitialiser et refaire un test en mettant 1 dans C3 et 2 dans D3 j'aimerais que si je supprime C3 et D3 il ouvre pas une page (lance la macro) puisque C3 n'est pas egal a 1 je ne comprend pas pourquoi il ouvre une page !

Bon cette fois je crois que c'est le bon ça sera dans un module et ça donne ça. Si le produit de C3 est 1 il lance la macro et ensuite supprime sont contenu et sans toucher au autre contenu si D3 ou E3 ne serait pas égal a leur propre contenu et ne lance pas non plus leur propre macro. Et je préfère avoir plusieurs choix de macro pour chaque cellule que un seul avec des ou pour une seule macro. Donc je pense que ceci serait mieux adapter. Merci m3ellem1 pour ton aide, le private sub j'ai l'impression qu'il est plus compliqué a contrôler qu'une macro dans un module.

Sub macro10()

If Range("C3").Value Like "*1*" Then Macro1
If Range("C3").Value = "1" Then Range("C3").Value = ""

If Range("D3").Value Like "*2*" Then Macro8
If Range("D3").Value = "2" Then Range("D3").Value = ""

If Range("E3").Value Like "*3*" Then Macro1
If Range("E3").Value = "3" Then Range("E3").Value = ""

End Sub
Rechercher des sujets similaires à "lancement macro egal"