Condition si contient mot alors

Bon jour le forum j'aimerai m'aider de vos lumières.

J'ai un bout de code très simple mais visiblement il y a un problème.

Je n'ai pas d’erreur mais la macro ne se lance pas.

Pour faire simple :

J'ai une cellule avec le jour d'aujourd’hui qui est la référence.

Je souhaite que si cette cellule contient "vendredi" par exemple, que la selection T160:t258 soit copier puis collé à partir de "o160".

J'ai fais ça pour chaque jour de la semaine ensuite ...

Mais je n'ai aucune action ...

If Range("r155") = "vendredi" Then
    Range("T160:T258").Select
    Selection.Copy
    Range("O160").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        End If

J'ai tenter aussi comme cela :

If Range("r155").Value Like "VENDREDI" Then
    Range("T160:T258").Select
    Selection.Copy
    Range("O160").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        End If

Sans le bloc if ça fonctionne alors c'est ma condition qui ne fonctionne pas.

Merci d'avance !

Bonjour,

je présume que la date du jour se trouve en R155... Et qu'il y est inscrit "Vendredi" puisque nous sommes vendredi...

et que ce vendredi est du à la mise en forme personnalisée de la cellule avec pour règle "JJJJ"

le problème vient de là, car dans votre cellule la valeur n'est pas VENDREDI mais 43203 !

Sous Excel les date sont des nombres qui se suivent et ce depuis la date du 0/0/1900 = 0 et plus 1 pour chaque jour passés...

Donc votre condition devrait plutôt se porter sur le weekday de la date du jour et peu importe la date dans la cellule.

Votre cheminement :

cellule, avec date du jour - sous VBA prendre cette date et regarder si c'est un vendredi

le cheminement "correcte":

sous VBA aujourd'hui est-ce un vendredi ?

If Weekday(Date, vbMonday)=5 Then

où je suis parti du fait que le premier jour de la semaine est un lundi.

@ bientôt

LouReeD

Merci pour ta réponse rapide. Oui en effet c'est bien une cellule personnalisé en "jjj" avec =aujourd'hui().

Par contre je n'ai pas compris ton code et ton raisonnement.

Est ce possible de faire ce que je souhaite faire pour finir ?

Au final je laisse la cellule avec la date au format date et non un format perso "jjj" ?!

Vous dites que votre code fonctionne mais pas le test pour le lancer, alors changez le test avec ce que je vous propose :

If Weekday(Date, vbMonday)=5 Then
    Range("T160:T258").Select
    Selection.Copy
    Range("O160").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        End If

en gros le test se fait "uniquement" sous VBA, plus de référence à votre cellule R155, puisque aujourd'hui sous VBA c'est Date

WeekDay renvoie le numéro du jour d'une date en fonction du jour de début de semaine, ici j'ai signifié que le premier jour de la semaine était le lundi, donc pour faire le test si c'est un vendredi on le compare avec 5 car lundi = 1, mardi = 2 etc à vendredi = 5

Donc en français le test dit :

si le jour de la semaine de la date "aujourd'hui", en partant du fait que le premier jour de la semaine est le lundi,est égale au 5ième jour alors l'égalité est bonne on exécute le code après le "then".

@ bientôt

LouReeD

Ha oui ok donc plus de référence à une cellule je comprend.

Merci beaucoup !

Merci @ vous pour vos remerciements !

@ bientôt (sur le forum )

LouReeD

Rechercher des sujets similaires à "condition contient mot"