XL 2013 Mauvais affichage des dates sur un export

tontonexcel

XLDnaute Occasionnel
Bonjour à tous

J'ai construit un programme sur le principe des variables tableaux fonctionnant parfaitement sauf lors de l'export ou les dates sont affichées au format Standard (à priori comme du texte) et au format correct Date ; ceci à l'air de se produire de manière aléatoire
Capture1.JPG
Je précise que la feuille qui sert à l'export est systématiquement recréée à chaque fois et que la source est bien au format Date unifiée pour la colonne
J'ai essayé de convertir la date avec Cdate avant de l'enregistrer dans ma variable sans succès

Je ne comprends pas non plus l'affichage de ma variable en mode débogage avec les 2 #
Capture.JPG


Tous les commentaires sont joints dans le programme

Merci d'avance si vous avez une solution et passez de bonnes fêtes !
 

Pièces jointes

  • variables_tableaux.xlsm
    131.4 KB · Affichages: 7

tontonexcel

XLDnaute Occasionnel
Bonsoir JM27

Exact pour les dates je ne me souvenais plus de l'inversion jour / mois (je viens de le remarquer dans ma variable :eek:) C'est toujours mieux que rien pour la solution proposée !Je vais voir si je peux trouver une autre piste par une conversion de donnée
Merci
 

patricktoulon

XLDnaute Barbatruc
apres je vois pas pourquoi tu t'ennuie avec une variable tableau
filtre et copy les lignes visible tel quel et voilà tout
vire moi ton code et met celui ci a la place
VB:
Option Explicit

Sub extraction_copie()
    Dim nom$, p As Range
    With ThisWorkbook.Sheets("DYNAMIQUES").Range("C1", Cells(Rows.Count, "J").End(xlUp))
        .AutoFilter Field:=2, Criteria1:=.Parent.[L2].Text
        Set p = .SpecialCells(xlVisible)
        nom = "Extraction " & .Parent.[L2].Text

        ' peut etre un test ici pour tester si la feuille (nom)existe
        'voir la supprimer si c'est une mise a jour recurente qui est faite

        ' Ajouter feuille à la fin nommée "Extraction" suivant nom importé
        With ThisWorkbook.Sheets.Add(after:=Sheets(ThisWorkbook.Sheets.Count))
            .Name =  nom
            p.Copy .[A1]
        End With
        .AutoFilter
    End With
End Sub
A+
 

tontonexcel

XLDnaute Occasionnel
Bonsoir PatrickToulon

il faut faire la différence entre le string d'une date est une date dans une cellule
quand une date s'inverse format(FR to US)dans une cellule c'est que c'est le string d'une date qui y a été mis et non une date
Ok pour cette idée à voir

apres je vois pas pourquoi tu t'ennuie avec une variable tableau
filtre et copy les lignes visible tel quel et voilà tout
vire moi ton code et met celui ci a la place

Je m'ennuie avec une variable tableau parce je voulais simplement comprendre l'utilité et le but ; il ne s'agit pas d'une application destinée à l'entreprise

Merci
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir :)

Si on veut travailler avec un tableau, on peut aussi faire comme suit:
VB:
Sub extract()
Dim nom, t, i&, j&, n&
   Application.ScreenUpdating = True
   With Sheets("Dynamiques")
      nom = .Range("L2")
      On Error Resume Next: Application.DisplayAlerts = False
      Sheets("Extraction " & nom).Delete
      Application.DisplayAlerts = True
      Worksheets.Add After:=Sheets(Sheets.Count)
      ActiveSheet.Name = "Extraction " & nom
      n = Application.CountA(.Columns("c:c"))
      t = .Range("c1:h1").Resize(n): n = 1
      For i = 2 To UBound(t)
         If t(i, 2) = nom Then n = n + 1: For j = 1 To UBound(t, 2): t(n, j) = t(i, j): Next
      Next i
      Sheets("Extraction " & nom).Range("a1").Resize(n, UBound(t, 2)) = t
   End With
End Sub
 
Dernière édition:

tontonexcel

XLDnaute Occasionnel
Bonjour mapomme

J'ai bien décortiqué ta soluce (avant de comprendre la logique !) effectivement le fait de stocker la base entière avant traitement est intéressant et je ne connaissais pas bien l'emploi de Resize. C'est d'autant mieux que les dates sont traitées telles quelles
Merci
 

Discussions similaires

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 183
dernier inscrit
angelique76120