XL 2013 Problème format Date sur Excel

Landry225

XLDnaute Nouveau
Bonsoir!
J'ai un soucis avec un fichier Excel exporté d'une application je dois retraiter les données sauf que les colonnes comportant les dates colonne I et J ne sont pas au format date, j'ai 500 lignes a traiter sur plusieurs mois pour chacune des colonnes ce qui fait 1000 par feuilles depuis janvier.

Quelqu'un pourrait il m'aider svp ?
le fichier est en pièce jointe.

Merci pour votre assistance
 

Pièces jointes

  • Fichier de producion SA - JUILLET 2020 - AOUT 2020.XLS
    295.5 KB · Affichages: 29

Rouge

XLDnaute Impliqué
Bonjour,

J'ai remis les dates au format d'origine avant d'appliquer la macro suivante
VB:
Sub Convertir_Dates()
    Dim i As Long, j As Long, c As Long
    Dim DerLig As Long, DerCol As Long
    Dim f As Worksheet
    Application.ScreenUpdating = False
    For i = 1 To Sheets.Count
        Set f = Sheets(i)
        DerLig = f.Range("A" & Rows.Count).End(xlUp).Row - 1
        DerCol = f.Range("A3").End(xlToRight).Column
        For c = 1 To DerCol
            If Left(f.Cells(3, c), 4) = "DATE" Then
                For j = 4 To DerLig
                    If Not IsDate(f.Cells(4, c)) Then
                        If Len(f.Cells(j, c)) = 7 Then
                            f.Cells(j, c) = CDate(Left(f.Cells(j, c), 1) & "/" & Mid(f.Cells(j, c), 2, 2) & "/" & Right(f.Cells(j, c), 4) * 1)
                        ElseIf Len(f.Cells(j, c)) = 8 Then
                            f.Cells(j, c) = CDate(Left(f.Cells(j, c), 2) & "/" & Mid(f.Cells(j, c), 3, 2) & "/" & Right(f.Cells(j, c), 4) * 1)
                        End If
                    End If
                Next j
            End If
        Next c
    Next i
    Set f = Nothing
End Sub

Le code parcourt toutes les colonnes de toutes les feuilles , pour chaque colonne dont le titre commence par "DATE", les dates sont converties au format "JJ/MM/AAAA".
Il y a un bouton pour lancer la macro sur la feuille de Juillet, vous pouvez le déplacer sur la feuille de votre choix ou le duppliquer.
Sécurité: Une fois les dates traitées, elles ne sont plus modifiées par une seconde lecture.

Cdlt
 

Pièces jointes

  • Landry225_Problème format Date sur Excel.XLS
    303.5 KB · Affichages: 4
C

Compte Supprimé 979

Guest
Bonjour le fil,

En passant par un tableau ça devrait être plus rapide ;)
Attention, ce sont les colonnes H à J qui ne sont pas au bon format

VB:
Sub MàJ_Dates()
  Dim Col As Long, dLig As Long, Ind As Long
  Dim MaDate As String, TabDate() As Variant
  Dim Sht As Worksheet
  ' Pour chaque feuille du classeur
  For Each Sht In ThisWorkbook.Sheets
    ' Pour chaque colonne
    For Col = 8 To 12
      ' Dernière ligne de la colonne
      dLig = Sht.Cells(Rows.Count, Col).End(xlUp).Row
      ' Mettre les valeurs dans un tableau
      TabDate = Sht.Range(Sht.Cells(4, Col), Sht.Cells(dLig, Col)).Value
      ' Pour chaque donnée du tableau
      For Ind = 1 To UBound(TabDate)
        ' Mettre la date au bon format mm/dd/yyyy
        MaDate = TabDate(Ind, 1)
        ' Vérifier le format
        If IsDate(MaDate) Then GoTo SuiteInd
        ' Si ce n'est pas le bon, on transforme
        If Len(MaDate) = 7 Then
          MaDate = Mid(MaDate, 2, 2) & "/" & "0" & Left(MaDate, 1) & "/" & Right(MaDate, 4)
        Else
          MaDate = Mid(MaDate, 3, 2) & "/" & Left(MaDate, 2) & "/" & Right(MaDate, 4)
        End If
        TabDate(Ind, 1) = MaDate
SuiteInd:
      Next Ind
      ' Réinscrire les dates au bon format
      With Sht.Cells(4, Col).Resize(UBound(TabDate))
        .NumberFormat = "dd/mm/yyyy"
        .Value = TabDate
      End With
    Next Col
  Next Sht
End Sub

@+
 
Dernière modification par un modérateur:

Landry225

XLDnaute Nouveau
Bonjour Bruno!
Toute mes excuses

bien sur que si je l'ai copié mais il a changer tout le fichier et même les colonnes comportant des nombres. le fichier est trop volumineux et je ne peux pas l'envoyer ici je vais le zipper puis te mettre le fichier
je ne parviens pas à utiliser directement la macro que tu m'a mis que j'ai trouver très sympa. j'ai pourtant bien désactiver la sécurité des macros
 

Landry225

XLDnaute Nouveau
Bonjour Bruno!
Toute mes excuses

bien sur que si je l'ai copié mais il a changer tout le fichier et même les colonnes comportant des nombres. le fichier est trop volumineux et je ne peux pas l'envoyer ici je vais le zipper puis te mettre le fichier
je ne parviens pas à utiliser directement la macro que tu m'a mis que j'ai trouver très sympa. j'ai pourtant bien désactiver la sécurité des macros
 

Pièces jointes

  • RECAP-ASSISTANCE-AUTO-GAA-2020-_1_.zip
    300.3 KB · Affichages: 2

Landry225

XLDnaute Nouveau
Je te prie de trouver le fichier en entier à ce jour j'ai du travailler manuellement de janvier à Juin.
c'est que tout les mois je reçois le fichier j'ai pris fonction que depuis le mois dernier l'équipe le faisait manuellement.

Merci pour ton aide et pour vos commentaires et solution à tous
 

soan

XLDnaute Barbatruc
Inactif
Bonjour @Landry225, le fil,

1) sur ton post #5 : « les macros sont désactivées à l'ouverture du fichier »

* si tu as une version Excel 2007 (ou ultérieur), je te laisse lire mon post #28.
* comme ton fichier est un .xls tu as plus probablement Excel 2003 (ou une
version antérieure), il faut mettre en place et utiliser un self-certificat ; je te
laisse trouver toi-même des infos là-dessus.

2) j'ai vu que tu as transmis ton fichier zippé ; pour info, en passant par un
site de partage de fichiers tel que mon-partage.fr (gratuit ; taille du fichier
jusqu'à 200 Mo), c'est inutile de zipper le fichier ; tu le sauras pour une
prochaine fois. ;)

je laisse la suite aux autres intervenants de cette conversation.


soan
 

Landry225

XLDnaute Nouveau
Bonjour le fil,

En passant par un tableau ça devrait être plus rapide ;)
Attention, ce sont les colonnes H à J qui ne sont pas au bon format

VB:
Sub MàJ_Dates()
  Dim Col As Long, dLig As Long, Ind As Long
  Dim MaDate As String, TabDate() As Variant
  Dim Sht As Worksheet
  ' Pour chaque feuille du classeur
  For Each Sht In ThisWorkbook.Sheets
    ' Pour chaque colonne
    For Col = 8 To 12
      ' Dernière ligne de la colonne
      dLig = Sht.Cells(Rows.Count, Col).End(xlUp).Row
      ' Mettre les valeurs dans un tableau
      TabDate = Sht.Range(Sht.Cells(4, Col), Sht.Cells(dLig, Col)).Value
      ' Pour chaque donnée du tableau
      For Ind = 1 To UBound(TabDate)
        ' Mettre la date au bon format mm/dd/yyyy
        MaDate = TabDate(Ind, 1)
        ' Vérifier le format
        If IsDate(MaDate) Then GoTo SuiteInd
        ' Si ce n'est pas le bon, on transforme
        If Len(MaDate) = 7 Then
          MaDate = Mid(MaDate, 2, 2) & "/" & "0" & Left(MaDate, 1) & "/" & Right(MaDate, 4)
        Else
          MaDate = Mid(MaDate, 3, 2) & "/" & Left(MaDate, 2) & "/" & Right(MaDate, 4)
        End If
        TabDate(Ind, 1) = MaDate
SuiteInd:
      Next Ind
      ' Réinscrire les dates au bon format
      With Sht.Cells(4, Col).Resize(UBound(TabDate))
        .NumberFormat = "dd/mm/yyyy"
        .Value = TabDate
      End With
    Next Col
  Next Sht
End Sub

@+

Peut tu stp m'aider avec le tableau dont tu fais allusion plus haut?

Cordialement,
 

Landry225

XLDnaute Nouveau
Bonjour @Landry225, le fil,

1) sur ton post #5 : « les macros sont désactivées à l'ouverture du fichier »

* si tu as une version Excel 2007 (ou ultérieur), je te laisse lire mon post #28.
* comme ton fichier est un .xls tu as plus probablement Excel 2003 (ou une
version antérieure), il faut mettre en place et utiliser un self-certificat ; je te
laisse trouver toi-même des infos là-dessus.

2) j'ai vu que tu as transmis ton fichier zippé ; pour info, en passant par un
site de partage de fichiers tel que mon-partage.fr (gratuit ; taille du fichier
jusqu'à 200 Mo), c'est inutile de zipper le fichier ; tu le sauras pour une
prochaine fois. ;)

je laisse la suite aux autres intervenants de cette conversation.


soan
Bonjour Soan,

Merci pour ton intervention et tes conseils
 

Discussions similaires

Statistiques des forums

Discussions
312 163
Messages
2 085 860
Membres
103 006
dernier inscrit
blkevin