Microsoft 365 Remplacement poit . par barre / dans date suite extraction (résultat erroné)

Sb_OS

XLDnaute Junior
Bonjour,
je me permt de soliciter votre aide parce que je bloque sur un code VBA qui me donne un résultat erroné.

j'ai un fichier avec trois onglet (2 où je colle des extractions bruts et 1 onglet de calcule). sur mes onglet d'extractions j'ai des dates qui sont sous format JJ.MM.AAAA hors que pour appliquer des formules dessus elle ne sont pas concidéré comme date vu que elle sont pas sous format J/MM/AAAA.

J'ai besoin de remplacer le points (.) par des barres (/) chose qui fonctionne pas avec mon code parce que une fois exécuté il modifier les dates initiales (il inverse les jours et mois ce qui change mes dates) :(

Pouvez vous m'aider svp sachant que je suis novis en VBA je peux juste adapter les code mais pas les écrire

Merci d'avance ^^
 

Pièces jointes

  • PRIORISATION PREM MECA V3 - Copy.xlsm
    30.5 KB · Affichages: 7

vgendron

XLDnaute Barbatruc
Hello

un exemple de traitement par vba pour la première feuille
VB:
Sub NewFormatDate()
Dim TabDate() As Variant 'on définit un tablo vba
With Sheets("Extract 1") 'dans la feuille "Extract1"
    Fin = .Range("B" & .Rows.Count).End(xlUp).Row 'on récupère le numéro de la dernière ligne non vide de la colonne B
    TabDate = .Range("B5:C" & Fin).Value 'on met les données dans un tablo vba
    
    For i = LBound(TabDate, 1) To UBound(TabDate, 1) 'pour chaque ligne du tablo
        For j = LBound(TabDate, 2) To UBound(TabDate, 2) 'pour chaque colonne du tablo
            TabDate(i, j) = Format(DateSerial(Split(TabDate(i, j), ".")(2), Split(TabDate(i, j), ".")(1), Split(TabDate(i, j), ".")(0)), "dd/mm/yyyy")
            'explication: Split(TabDate,".") ==> la fonction split créer un tableau qu'elle alimente à partir de la date telle que saisie, sépare avec le . comme séparateur
                '==> ca créer donc un tablo de 3 éléments
                'pour récupérer le 1er 2eme ou 3eme élément on écrit (0) (1) (2): un tablo commence à 0
                'on se sert de ces 3 éléments pour recréer une date avec la fonction DateSerial
                'on utilise la fonction "Format" pour afficher la date avec les /
        Next j
    Next i
    .Range("B5:C" & Fin) = TabDate 'on colle le résultat dans la feuille
End With
End Sub
 

Sb_OS

XLDnaute Junior
Hello

un exemple de traitement par vba pour la première feuille
VB:
Sub NewFormatDate()
Dim TabDate() As Variant 'on définit un tablo vba
With Sheets("Extract 1") 'dans la feuille "Extract1"
    Fin = .Range("B" & .Rows.Count).End(xlUp).Row 'on récupère le numéro de la dernière ligne non vide de la colonne B
    TabDate = .Range("B5:C" & Fin).Value 'on met les données dans un tablo vba
   
    For i = LBound(TabDate, 1) To UBound(TabDate, 1) 'pour chaque ligne du tablo
        For j = LBound(TabDate, 2) To UBound(TabDate, 2) 'pour chaque colonne du tablo
            TabDate(i, j) = Format(DateSerial(Split(TabDate(i, j), ".")(2), Split(TabDate(i, j), ".")(1), Split(TabDate(i, j), ".")(0)), "dd/mm/yyyy")
            'explication: Split(TabDate,".") ==> la fonction split créer un tableau qu'elle alimente à partir de la date telle que saisie, sépare avec le . comme séparateur
                '==> ca créer donc un tablo de 3 éléments
                'pour récupérer le 1er 2eme ou 3eme élément on écrit (0) (1) (2): un tablo commence à 0
                'on se sert de ces 3 éléments pour recréer une date avec la fonction DateSerial
                'on utilise la fonction "Format" pour afficher la date avec les /
        Next j
    Next i
    .Range("B5:C" & Fin) = TabDate 'on colle le résultat dans la feuille
End With
End Sub
 

Sb_OS

XLDnaute Junior
Bonjour

Hello

un exemple de traitement par vba pour la première feuille
VB:
Sub NewFormatDate()
Dim TabDate() As Variant 'on définit un tablo vba
With Sheets("Extract 1") 'dans la feuille "Extract1"
    Fin = .Range("B" & .Rows.Count).End(xlUp).Row 'on récupère le numéro de la dernière ligne non vide de la colonne B
    TabDate = .Range("B5:C" & Fin).Value 'on met les données dans un tablo vba
   
    For i = LBound(TabDate, 1) To UBound(TabDate, 1) 'pour chaque ligne du tablo
        For j = LBound(TabDate, 2) To UBound(TabDate, 2) 'pour chaque colonne du tablo
            TabDate(i, j) = Format(DateSerial(Split(TabDate(i, j), ".")(2), Split(TabDate(i, j), ".")(1), Split(TabDate(i, j), ".")(0)), "dd/mm/yyyy")
            'explication: Split(TabDate,".") ==> la fonction split créer un tableau qu'elle alimente à partir de la date telle que saisie, sépare avec le . comme séparateur
                '==> ca créer donc un tablo de 3 éléments
                'pour récupérer le 1er 2eme ou 3eme élément on écrit (0) (1) (2): un tablo commence à 0
                'on se sert de ces 3 éléments pour recréer une date avec la fonction DateSerial
                'on utilise la fonction "Format" pour afficher la date avec les /
        Next j
    Next i
    .Range("B5:C" & Fin) = TabDate 'on colle le résultat dans la feuille
End With
End Sub
Bonjour Vgendron,

Merci beaucoup pour pour cette proposition qui me va très bien mais je vais opter pour la solution avec la formule que je vais incrémenter dans mon code VBA comme ça je lance à la fois ma recherchev et la modification du format.
 

vgendron

XLDnaute Barbatruc
Bonjour


Bonjour Vgendron,

Merci beaucoup pour pour cette proposition qui me va très bien mais je vais opter pour la solution avec la formule que je vais incrémenter dans mon code VBA comme ça je lance à la fois ma recherchev et la modification du format.
D'autant que je ne suis pas sur qu'elle fonctionne correctement.. il me semble que les jours et mois sont toujours inversés..
la solution par formule est effectivement bien plus simple et rapide
 

Discussions similaires

Réponses
7
Affichages
1 K

Statistiques des forums

Discussions
315 091
Messages
2 116 117
Membres
112 665
dernier inscrit
JPHD