VBA dates au format français

Bonjour le Forum,

J'ai fait une macro pour copier un tableau dans un autre onglet.

Pas de problème....sauf pour la date, qui n'est pas au bon format dans le 2é onglet.

Par exemple si j'ai

08/02/2015

cela devient

02/08/2015

ce n'est plus du tout la même date.

J'ai essayé plusieurs formules dans la macro.

A chaque fois, la copie se fait, mais à chaque fois la date n'est pas dans le bon format.

Merci d'avance pour votre aide.

141classeur2.xlsm (19.17 Ko)

Bonjour Jaco, bonjour le forum,

Peut-être comme ça :

Dim fa As Worksheet, faf As Worksheet, tabloR(), i&, j&, k&, NombreColonnes&, NumeroColonneDate&

Private Sub Worksheet_Activate()
Set fa = Sheets("Feuil1")
Set faf = Sheets("Feuil2")

faf.Range("A1").CurrentRegion.Offset(1, 0).Clear
k = 0
NumeroColonneDate = 2   'n° de colonne où il y a la date
NombreColonnes = 8 ' Nombre de colonne à prendre en compte
For i = 2 To fa.Range("A65536").End(xlUp).Row
    If fa.Rows(i).Hidden = False Then
        ReDim Preserve tabloR(NombreColonnes, k + 1)
        For j = 1 To NombreColonnes
            If j = NumeroColonneDate Then
                tabloR(j - 1, k) = CLng(DateSerial(Year(fa.Cells(i, j).Value), Month(fa.Cells(i, j).Value), Day(fa.Cells(i, j).Value)))
            Else
                tabloR(j - 1, k) = Left(fa.Cells(i, j).Value, 255)
            End If
        Next j
        k = k + 1
    End If
Next i
faf.Range("A2").Resize(UBound(tabloR, 2), NombreColonnes) = Application.Transpose(tabloR)
faf.Columns(2).NumberFormat = "dd/mm/yyyy"
End Sub

Merci ThauThème pour cette réponse, mais cela ne fonctionne pas

Ca donne

Date

42005

42043

42081

42119

42157

42195

42233

42271

42309

42347

42385

Les dates ne sont toujours pas au bon format.

Quelqu'un a une idée?

Re,

Chez moi ça fonctionne impec. En fait ça te renvoie les dates sous forme d'entier long donc impossible d'inverser les jours/mois. Puis, la dernière ligne de code applique un format date à la colonne 2 de l'onglet faf et ça fait s'afficher les dates correctement.

Je te renvoie ton fichier exemple avec la macro modifiée pour tu puisses vérifier que ça fonctionne!

126jaco-v01.xlsm (17.14 Ko)

Re-merci ThauThème,

J'ai (enfin) réussi à faire fonctionner mon fichier , à une exception près

Lorsque je demande un nombre trop important de colonne via la variable

NombreColonnes

Le message suivant apparaît

Erreur d'exécution '13':

Incompatibilité de type

et la ligne suivant est surlignée

ReDim Preserve tabloR(NombreColonnes, k + 1)

Sur le fichier exemple, le bug apparaît à partir de :

NombreColonnes = 41

et sur mon vrai fichier cela apparaît seulement à

NombreColonnes = 26

Comprends-tu pourquoi?

Merci d'avance

Re,

Je n'ai jamais su (ou plutôt ça m'a toujours gavé de savoir) à quoi correspondait le symbole & dans la déclaration des variables. Quand je code, je fais en sorte que l'aide F1 puisse être utilisée sur tous les mots clés !...

Peut-être que tu dépasses la limite imposée par NombreColonnes& ?...

Bonsoir, Salut ThauThème !

Je trouve que ça fait une mobilisation de beaucoup d'éléments pour un simple transfert de tableau...

Là sans doute qu'un copier-coller aurait été plus économique...

Mais bon on peut conserver le transfert par tableau en simplifiant tout de même un peu :

Private Sub Worksheet_Activate()
    Dim Tablo, n%, k%, d%
    With Worksheets("Feuil1")
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        k = .Cells(1, .Columns.Count).End(xlToLeft).Column
        For d = 1 To k
            If .Cells(1, d) Like "Date*" Then Exit For
        Next d
        Tablo = .Range("A1").Resize(n, k).Value2
    End With
    Application.ScreenUpdating = False
    With Me.Range("A1")
        .CurrentRegion.Clear
        With .Resize(n, k)
            .Value = Tablo
            .Columns(d).NumberFormat = "dd/mm/yyyy"
            .HorizontalAlignment = xlCenter
            .Rows(1).Interior.Color = vbYellow
            With .Borders
                .LineStyle = xlContinuous: Weight = xlThin
            End With
        End With
    End With
End Sub

J'ai allongé un peu en faisant la mise en forme à la fin sur le modèle de l'original... mais justement tu peux à la place en faire une autre....

Et au début, on dimensionne et on recherche la colonne Date (pas besoin de l'indiquer en dur donc).

Mais j'appelle ton attention sur le point qui te posait problème. Ici : Value2, élément qui te garantit la conservation des dates...

Cordialement.

117jaco-classeur2.xlsm (19.90 Ko)
Rechercher des sujets similaires à "vba dates format francais"