VBA - Changer mise en forme date et la répercuter sur toute la colonne

Bonjour cher forum

J'apprends un peu plus tous les jours en parcourant les différents sujets mais force est de constater que je reste encore trop débutant pour me débrouiller tout seul

$

Je bloque sur un sujet :

J'ai des fichiers qui sont toujours les mêmes et je dois pouvoir faire la chose suivante -> Dans ma colonne C, je souhaiterais changer la manière dont apparaisse mes dates et avoir uniquement la date au lieu d'un CPO + ou J :.... (surligné en jaune sur le screen ci-dessous). Par exemple "CPO+5 : 14/06/2021" deviendrait alors "14/06/2021"

image

L'objectif serait donc d'avoir ce changement de date en format classique XX/XX/XXXX mais qui en plus se répercuterait sur chaque lignes avec un résultat qui serait donc idéalement le suivant :

image

Je ne parviens pas à créer une boucle qui, en plus, prendrait en compte les lignes vides et grisées qui elles doivent malheureusement restées présentes.

9vba.xlsm (16.86 Ko)

Je vous remercie mille fois pour le temps que vous me consacrerez et je suis preneur de tout ce que pourrez me dire pour m'aider ! Je vous laisse ci-joint le fichier.

Bien à vous

Salut Temprano,

une solution VBA : un double-clic en colonne [C] démarre la macro.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Cancel = True
'
If Not Intersect(Target, Columns(3)) Is Nothing Then
    For x = 2 To Range("C" & Rows.Count).End(xlUp).Row
        If InStr(Range("C" & x), ":") > 0 Then _
            If IsDate(Split(Range("C" & x).Value, ": ")(1)) Then _
                Range("C" & x).Value = CDate(Split(Range("C" & x).Value, ": ")(1))
    Next
End If
'
End Sub
8vba.xlsm (16.93 Ko)


A+

Hello Curulis,

Super merci pour ton aide très rapide !! Petite question, comment faire maintenant pour répliquer les dates sur les cellules d'en dessous car pour l'instant on obtient avec ta macro le résultat suivant :

image

Et je t'avoue que l'idéal serait d'obtenir le résultat suivant :

image

Merci d'avance si tu as la solution. Sinon je te remercie déjà pour ton aide précieuse.

Salut Temprano,

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Cancel = True
'
If Not Intersect(Target, Columns(3)) Is Nothing Then
    For x = 2 To Range("D" & Rows.Count).End(xlUp).Row
        If InStr(Range("C" & x), ":") > 0 Then _
            If IsDate(Split(Range("C" & x).Value, ": ")(1)) Then _
                Range("C" & x).Value = CDate(Split(Range("C" & x).Value, ": ")(1))
        If Range("C" & x).Value = "" And Range("C" & x).Interior.Color = RGB(255, 255, 255) And IsDate(Range("C" & x - 1).Value) Then _
            Range("C" & x).Value = CDate(Range("C" & x - 1).Value)
    Next
End If
'
End Sub


A+

Incroyable, merci beaucoup et très bonne fin de journée à toi !

Rechercher des sujets similaires à "vba changer mise forme date repercuter toute colonne"