Si cellule contient x OU y alors ne pas

bonjour à tous

Dans cette macro, je souhaite indiqué que si la cellule K1 contient "S01" ou "S02" alors elle n'applique pas la commande.

Je n'arrive pas à y mettre la notion "et S02"

j'ai essayé or, else, la virgule, etc rien ne fonctionne

Pouvez-vous me corriger ?

Je vous remercie !!

'Macro pour (STOCK N-1) via semaine precedente. Actualise l'ensemble des onglets
 If Range("K1") <> "S01" Then
    Sheets(I).Cells.Replace What:="2015\S01", Replacement:=Sheets("calendrier").Range("G14").Value, LookAt:=xlPart, _
                SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
  End If
  Next I

Bonjour

If Range("K1") = "S01" Or Range("K1")="SO2" Then Exit Sub

Cordialement

bonsoir

'Macro pour (STOCK N-1) via semaine precedente. Actualise l'ensemble des onglets
 If Range("K1") <> "S01" or Range("K1") <> "S02"Then
    Sheets(I).Cells.Replace What:="2015\S01", Replacement:=Sheets("calendrier").Range("G14").Value, LookAt:=xlPart, _
                SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
  End If
  Next I

Edit bonsoir Amadeus

oui à la place de <> le = est bien mieux!!!

CB60 a écrit :

bonsoir

'Macro pour (STOCK N-1) via semaine precedente. Actualise l'ensemble des onglets
 If Range("K1") <> "S01" or Range("K1") <> "S02"Then
    Sheets(I).Cells.Replace What:="2015\S01", Replacement:=Sheets("calendrier").Range("G14").Value, LookAt:=xlPart, _
                SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
  End If
  Next I

Edit bonsoir Amadeus

oui à la place de <> le = est bien mieux!!!

Excellent ca fonctionne !!!

Merci beaucoup !

bonsoir

If Range("K1") <> "S01" or Range("K1") <> "S02"Then

cette condition est toujours vraie et l'instruction replace sera toujours exécutée.

il faut remplacer le Or par un And ou prendre la formule proposée par Amadeus qui arrête la macro si k1 contient S01 ou S02

If Range("K1") <> "S01" AND Range("K1") <> "S02"Then

Bonjour,

Excellent ca fonctionne !!!

Tu es sûr ?

K1 sera toujours différent "S01" ou différent de "S02" puisque s'il est l'un il ne sera pas l'autre.

J'aurai plutôt mis :

If not (Range("K1") = "S01" or Range("K1") = "S02") Then

eric

eriiic a écrit :

Bonjour,

Excellent ca fonctionne !!!

Tu es sûr ?

K1 sera toujours différent "S01" ou différent de "S02" puisque s'il est l'un il ne sera pas l'autre.

J'aurai plutôt mis :

If not (Range("K1") = "S01" or Range("K1") = "S02") Then

eric

Oui c'est normal car il peut etre S03/S04 etc jusqu'à S52 (cette cellule représente le nombre de semaine par an) !


h2so4 a écrit :

bonsoir

If Range("K1") <> "S01" or Range("K1") <> "S02"Then

cette condition est toujours vraie et l'instruction replace sera toujours exécutée.

il faut remplacer le Or par un And ou prendre la formule proposée par Amadeus qui arrête la macro si k1 contient S01 ou S02

If Range("K1") <> "S01" AND Range("K1") <> "S02"Then

Bon finalement après plusieurs test je me suis apercu que la formule d'Amadeus fonctionnait mais elle faisait sauter la macro qui etait située à la suite de celle-ci.

Du coup j'ai testé la tienne, avec le "And" et ca semble fonctionner.

Je ferais davantage de tests demain au bureau.

Merci à tous! Je posterai un commentaire dans tous les cas!

Oui c'est normal car il peut etre S03/S04 etc jusqu'à S52

Je ne te parlais pas de ça, je t'expliquais pourquoi ton test est toujours VRAI, donc erroné.

Ce que te disais également h2so4.

eric

Si je met = alors la macro ne s'applique que si K1 contient S01 ou S02

si je met des <> alors la macro ne s'applique pas si K1 contient S01 ou S02, ce que je souhaitais obtenir comme résultat.

J'ai testé sur environ une dizaine de fiches différentes et le coup des <> fonctionnent (meme si je ne connais pas la signification de <>).

Rechercher des sujets similaires à "contient pas"