XL 2013 - Mise en forme conditionnelle non pris en compte par format

Bonjour à tous,

J'essaye de trouver depuis une bonne petite heure, mais en vain.

J'ai réalisé une macro qui me copie colle les informations d'un userform vers des cellules. Malheureusement, au niveau des cellules dates (Colonne G et H), la mise en forme conditionnelle n'agit pas car j'ai l'impression que le format ou la cellule ne permet pas d'identifier les valeurs comme étant des dates.

Par contre quand je double clique sur la cellule pour saisir ou non, la mise en forme conditionnelle fonctionne.

Quelqu'un pourrait me dire ce qui ne va pas ?

Je vous ai mis en PJ le fichier en question (sans les macros correspondant au copie colle des données, cela va me prendre trop de temps pour enlever les données confidentielles). Je vous ai mis la page avec le résultat du copie colle.

Je vous remercie de votre aide

Namco

Bonjour,

Sans avoir ouvert votre fichier, 99% de chances que ce soit un soucis de reconnaissance de date.

En affectant directement une date saisie au format JJ/MM/AAAA d'une Textbox vers une cellule de votre fichier, la date est stockée sous forme de texte et pas comme une date valide (= convertie en nombre au passage vers le format "Nombre").

Un sujet similaire :

https://forum.excel-pratique.com/viewtopic.php?f=2&t=133357

Fonction VBA pour convertir une date texte en date valide :

DateValide = CDate(DateTexte)

Attention, elle peut inverser les jours et mois dans certains cas (jour <= 12). Plus fiable mais plus complexe :

DateValide = DateSerial(Split(DateTexte,"/")(2)*1,Split(DateTexte,"/")(1)*1,Split(DateTexte,"/")(0)*1)

Si l'année est saisie au format AA et non AAAA :

If Split(DateTexte,"/")(2)*1 < 30 Then Annee = 2000 + Split(DateTexte,"/")(2)*1 Else Annee = Split(DateTexte,"/")(2)*1 + 1900
DateValide = DateSerial(Annee,Split(DateTexte,"/")(1)*1,Split(DateTexte,"/")(0)*1)

Bonjour Pedro,

Je te remercie pour ton retour.

Dois-je remplacer :

DateValide = CDate(DateTexte)

par

DateValide = CDate(DateTextbox3)

??

Si c'est le cas, cela ne fonctionne toujours pas.

La mise en forme conditionnelle reste le même, cela ne fait rien à moins que j'aille directement sur la cellule.

Merci pour ton aide

Namco

Bonjour Pedro,

Je te remercie pour ton retour.

Dois-je remplacer :

DateValide = CDate(DateTexte)

par

DateValide = CDate(DateTextbox3)

??

Si c'est le cas, cela ne fonctionne toujours pas.

La mise en forme conditionnelle reste le même, cela ne fait rien à moins que j'aille directement sur la cellule.

Merci pour ton aide

Namco

Les exemples que j'ai transmis sont très génériques, il ne suffit donc pas de remplacer un élément, mais bien d'adapter ça à ton propre code. Globalement, ce que je propose est d'ajouter une étape au moment d'affecter la valeur saisie dans une textbox du userform dans sa cellule de destination. Car comme son nom l'indique, le contenu d'une textbox est du texte. Donc si tu fais juste quelque chose du genre MaCellule = MaTextbox, ça ne donnera pas une date valide.

Rechercher des sujets similaires à "2013 mise forme conditionnelle pris compte format"