Microsoft 365 Problème de formatage de dates au format EUR

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

R1-

XLDnaute Junior
Bonjour,

J'ai une macro de traitement de données, je vous épargne le code complet, voici la partie qui va nous intéresser :

VB:
Function ProcessFDG(inputData As Variant, headers As Object, outputHeaders As Variant) As Variant
    Dim outputData() As Variant
    Dim i As Long, j As Long
    Dim outputRow As Long

    ' Initialiser le tableau de sortie avec les en-têtes
    ReDim outputData(1 To UBound(inputData, 1), 0 To UBound(outputHeaders))
    For j = 1 To UBound(outputHeaders)
        outputData(1, j) = outputHeaders(j)
    Next j
    
    outputRow = 1

    ' Remplir le tableau de sortie en fonction des en-têtes
    For i = 2 To UBound(inputData, 1) ' Ignorer la première ligne (en-têtes)
        For j = 0 To UBound(outputHeaders)
        
            If inputData(i, headers("Pièce comptable/Zone")) = "FSAS direct" Or inputData(i, headers("Pièce comptable/Zone")) = "FINC" Then GoTo NextIterration
        
            Select Case outputHeaders(j)
                Case "Country"
                    outputData(outputRow, j) = inputData(i, headers("Pièce comptable/Adresse de livraison/Pays"))
                Case "Entity/Zone"
                    outputData(outputRow, j) = inputData(i, headers("Pièce comptable/Zone"))
                Case "Date"
                    outputData(outputRow, j) = inputData(i, headers("Pièce comptable/Date de facturation"))
                Case "Product Reference"
                    outputData(outputRow, j) = inputData(i, headers("Article/Référence"))
               [...]
            End Select
        Next j
        
        outputRow = outputRow + 1
        
NextIterration:
    Next i

    ProcessFDG = outputData
End Function

J'ai ajouté quelques "Cases" pour le contexte, mais celui qui nous intéresse, c'est la case "Date".

L'objectif de la macro est de prendre un tableau d'entrée chargé en cache et de remplir un tableau de sortie, lui aussi en cache. Cependant, le format de la date reste toujours en format US, même si toutes mes dates sont en format européen en entrée. Impossible d'obtenir des dates au format européen en sortie.

Dois-je formater le tableau en cache au moment de sa création ? Car même en formatant mes dates au moment de leur insertion dans le tableau, cela ne change rien.
C'est d'autant plus problématique que les dates inférieures à 12 sont mal interprétées : par exemple, le 5 janvier 2025 ressort en tant que 1er mai 2025. En revanche, toutes les dates supérieures à 12 ressortent normalement, mais sous format texte.

Bref, j'ai tout essayé, mais il m'est impossible d'obtenir des dates en cache au format européen.

Merci d'avance pour votre aide.
 
Solution
Bonjour,
inputData étant un tableau variant, il suffit de retyper (en date puis en double-entier):
VB:
Case "Date"
    outputData(outputRow, j) = cdbl(cdate(inputData(i, headers("Pièce comptable/Date de facturation"))))
Bonjour,
inputData étant un tableau variant, il suffit de retyper (en date puis en double-entier):
VB:
Case "Date"
    outputData(outputRow, j) = cdbl(cdate(inputData(i, headers("Pièce comptable/Date de facturation"))))
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
74
Retour