XL 2016 Formater les dates

vanin

XLDnaute Occasionnel
Bonjour, j'ai besoin de votre aide à propos du formatage des dates de mon fichier. en effet sur la feuille devis j'ai une facture et les informations de cette facture sont importées vers la feuille données lorsqu'on clique sur le bouton envoi. Les dates sur la facture sont au format jj/mm/aaaa. Le souci est que les dates (colonnes A, S et T) sont inversées : 6/22/2021 au lieu du 22/06/2021. comment modifier le code du bouton afin que les dates s'affichent correctement comme sur la facture? merci

le code du bouton

VB:
Sub histo()

Dim fDv As Worksheet, fH As Worksheet, cel, col

Dim i&, j&, derln&, lgn&, lnDL&


 

    Set fDv = Sheets("Devis")

    Set fH = Sheets("données")

 

    cel = Array("C13", "G2", "G3", "G4", "G5", "G6", "G7", "D8")

    col = Array("A", "B", "E", "F", "G", "H", "I", "J", "K")

    lnDL = fDv.Range("C" & Rows.Count).End(xlUp).Row

 

    i = 20

    While fDv.Range("B" & i).Formula <> ""

        i = i + 1

    Wend

    derln = i - 1

    For i = 20 To derln

        lgn = fH.Range("A" & Rows.Count).End(xlUp)(2).Row

        fH.Range("A" & lgn) = fDv.Range("H12")

           'fH.Range("A" & lgn).Value = DateValue(format(fDv.Range("H12").Value, "dd/mm/yyyy"))

     

     

         'If IsDate(fDv.Range("H12")) Then fH.Range("A" & lgn) = CDate(fDv.Range("H12"))

   

     

     

     

 

        If Left(fDv.Range("B17"), 13) = "Commercial : " Then

            fH.Range("B" & lgn) = Split(fDv.Range("B17"), " ")(2)

        Else

            fH.Range("B" & lgn) = fDv.Range("B17")

        End If

        For j = 0 To 7

            fH.Cells(lgn, j + 3) = fDv.Range(cel(j))

         

        Next j

        For j = 0 To 8

            fH.Cells(lgn, j + 11) = fDv.Range(col(j) & i)

        Next j

        fH.Range("T" & lgn) = fDv.Range("D" & lnDL)

        fH.Range("U" & lgn) = fDv.Range("H" & lnDL)

        fH.Range("T" & lgn) = fDv.Range("D41")

        fH.Range("U" & lgn) = fDv.Range("H41")

        fH.Range("V" & lgn) = fDv.Range("H43")

    Next i

End Sub
 
Dernière modification par un modérateur:
Solution
Bonjour le fil, le forum

Bonjour merci pour votre réponse. Mais j'ai déjà essayé votre solution, j'ai formaté ces colonnes en format date mais lors de l'ajout d'une nouvelle ligne, les dates s'affichent en m/j/aaaa (6/22/2021) au lieu du 22/06/2021.
@vanin , votre feuille de données est un tableau structuré, affichez d'abord toutes vos lignes et appliquez ensuite le format date sur l'ensemble de la colonne de façon à impacter l'ensemble des lignes du tableau structuré et cela fonctionnera.

Bien cordialement, @+

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour Vanin, le forum

Précise un format date pour tes trois colonnes et tout reviendra à la normale.

Bien cordialement, @+
Anim_2.gif
 
Dernière édition:

vanin

XLDnaute Occasionnel
Bonjour merci pour votre réponse. Mais j'ai déjà essayé votre solution, j'ai formaté ces colonnes en format date mais lors de l'ajout d'une nouvelle ligne, les dates s'affichent en m/j/aaaa (6/22/2021) au lieu du 22/06/2021.
 

vanin

XLDnaute Occasionnel
Bonjour,

Dans ta feuille "Devis", les dates sont-elles bien des dates et non du texte ?
Bonjour, j'obtiens la date de la cellule H12 par =AUJOURDHUI() et cette cellule est formater en date

j'obtiens la date de la cellule K20 par

ThisWorkbook.Worksheets("devis").Cells(lignef, 11).Value = TextBox4.Value
ThisWorkbook.Worksheets("devis").Cells(lignef, 11).Value = CDate(TextBox4.Value) et cette cellule est formater en date

j'obtiens la date de la cellule D41 par
.Range("D41").Value = TextBoxpaiement.Value
If IsDate(TextBoxpaiement.Value) Then .Range("D41").Value = CDate(TextBoxpaiement.Value) et cette cellule est formater en date

lorsque je formate les cellules de la feuille données en date, lors de l'ajout de nouvelles lignes il arrive que les dates affichent correcte. mais lorsque j'enregistre et je ferme puis j'ouvre à nouveau le problème recommence
 

TooFatBoy

XLDnaute Barbatruc
j'obtiens la date de la cellule K20 par

ThisWorkbook.Worksheets("devis").Cells(lignef, 11).Value = TextBox4.Value
ThisWorkbook.Worksheets("devis").Cells(lignef, 11).Value = CDate(TextBox4.Value)
La première ligne ne sert à rien et en plus elle me semble ne pas convenir.

La deuxième ligne me semble correcte, mais d'après ce que j'ai compris VBA traite les dates à la façon anglo-saxonne quand il y a litige (date < 13)...
Il semblerait que .FormulaLocal à la place de .Value puisse résoudre le problème. 🤔
 
Dernière édition:

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour le fil, le forum

Bonjour merci pour votre réponse. Mais j'ai déjà essayé votre solution, j'ai formaté ces colonnes en format date mais lors de l'ajout d'une nouvelle ligne, les dates s'affichent en m/j/aaaa (6/22/2021) au lieu du 22/06/2021.
@vanin , votre feuille de données est un tableau structuré, affichez d'abord toutes vos lignes et appliquez ensuite le format date sur l'ensemble de la colonne de façon à impacter l'ensemble des lignes du tableau structuré et cela fonctionnera.

Bien cordialement, @+
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Pour les dates utilisez la propriété Value2 des cellules, qui a été spécialement créée pour ça:

ThisWorkbook.Worksheets("devis").Cells(lignef, 11).Value2 = CDate(TextBox4.Value)

Value2 contient TOUJOURS la valeur en nombre de la date, si une date lui ai passée cette dernière sera convertie en nombre.

Formater ensuite votre colonne et tout ira bien.

Cordialement
 

Membres actuellement en ligne

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 105
dernier inscrit
Joffrette