Microsoft 365 Conversion date et heure en vu d'un export en csv

  • Initiateur de la discussion Initiateur de la discussion ivan27
  • Date de début Date de début

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 !

ivan27

XLDnaute Occasionnel
Bonjour à tous,

J'ai un problème sur un sujet pour lequel j'ai probablement la réponse sous le nez sans la voir !
Je souhaite convertir des dates et heures sous ces formats :
aaaammjj pour les dates
hhmmss pour les heures
Ca je sais faire mais il y a un problème lors de l'export dans un fichier séquentiel puisque les dates et heures sont exportées dans leur format d'origine (celui qui est visible dans la barre de formule) or je veux exporter dans le nouveau format.
Merci d'avance pour votre aide de préférence en vba.
Bonne fin de journée à tous
Ivan
 

Pièces jointes

Bonjour Ivan,
Un essai en PJ avec les fonctions persos :
Code:
Function ConvertD(Chaine)
    T = Split(Chaine, "/")
    For i = UBound(T) To 0 Step -1
        ConvertD = ConvertD & CStr(T(i))
    Next i
End Function
Function ConvertH(Chaine)
    T = Split(Format(Chaine, "hh:mm:ss"), ":")
    For i = 0 To UBound(T)
        ConvertH = ConvertH & CStr(T(i))
    Next i
End Function
 

Pièces jointes

Bonjour Ivan, Hasco,
Et si vous voulez convertir toute une plage :
VB:
Sub Convertir()
    Application.ScreenUpdating = False
    DL = Range("B65500").End(xlUp).Row
    For Ligne = 2 To DL
        If Cells(Ligne, "B") Like "*/*" Then Cells(Ligne, "B") = ConvertD(Cells(Ligne, "B"))
        If Cells(Ligne, "C") < 1 Then Cells(Ligne, "C") = ConvertH(Cells(Ligne, "C"))
    Next Ligne
    Range("B2:B" & DL).NumberFormat = "General"
    Range("C2:C" & DL).NumberFormat = "000000"
    [B1] = "Après conversion"
End Sub
Voir PJ.
 

Pièces jointes

Re,
Mais il y a infiniment plus simple comme l'a suggéré Hasco :
VB:
Sub Convertir()
    Application.ScreenUpdating = False
    DL = Range("B65500").End(xlUp).Row
    Range("B2:B" & DL).NumberFormat = "yyyymmdd"
    Range("C2:C" & DL).NumberFormat = "hhmmss"
    [B1] = "Après conversion"
End Sub
 

Pièces jointes

Dernière édition:
Bonjour le forum, sylvanu,
Avec ta dernière proposition, le 1er zéro des heures n'est pas pris en compte dans un export csv.
Par exemple : 08:43:00 après conversion j'ai bien dans la cellule 084300 mais dans la barre de formule j'ai 84300 et c'est cette valeur qui est exportée en csv.
Bien cordialement,
 
Bonjour,
Désolé. Alors utilisez la V3 si elle marche. La V4 était simplement plus rapide et plus "esthétique".
Les exports, comme les imports, sont toujours un peu pointilleux sur les formats, comme les imports qui donnent des nombres sous forme de texte.
 
Bonjour,

Il vous faut inclure le 'PrefixCharacter' des cellules dans la chaîne de texte :
VB:
Sub TrucChouette()
    Dim i As Integer, j As Integer, r As Integer
    Dim Valeurs
 
    With Feuil1.Range("B1").CurrentRegion
        With .Offset(1).Resize(.Rows.Count - 1)
            Valeurs = .Value
            r = UBound(Valeurs)
            For i = 1 To r
                Valeurs(i, 1) = "'" & Format(Valeurs(i, 1), "yyyymmdd")
                Valeurs(i, 2) = "'" & Format(Valeurs(i, 2), "hhmmss")
            Next
            .Value = Valeurs
        End With
    End With

End Sub

N'oubliez pas non plus qu'une cellule a une propriété .Text pour vous donner le texte afficher après formatage :

Si vous avez 12589 (valeur numérique) dans en A1 au format personnalisé : "000000" pour afficher sur 6 caractères avec des zéros en début pour les caractères manquants,

[A1].Value donnera 12589
[A1].Text donnera 012589

Avec 365 vous pouvez également préparer vos lignes par formules :
=JOINDRE.TEXTE(";";FAUX;TEXTE(B2;"aaaammjj");TEXTE(C2;"hhmmss"))

Cordialement
 

Pièces jointes

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

Retour