XL 2013 Problème format date dictionnaire

fabi1joret

XLDnaute Junior
Bonjour le forum,

Suite au démarrage d'un nouveau projet pour mon travail, j'ai décidé d'apprendre à utiliser les dictionnaires dans ma méthode de programmation (Connaissances = zéro dans cette méthode). L’intérêt étant d'accélérer les traitements puisque après estimation je devrais avoir environ 40000 lignes.
Mais me voilà bloqué après quelques lignes de commande.
Dans le programme qui suit, j'essaye de récupérer la date d'une cellule
Code:
wsp.[R1].Value
en tant qu'item pour ensuite la recopier dans une base de données
Code:
wsb.Range("A" & lb).Resize(jour.Count) = Application.Transpose(jour.Items)
.
Le problème est que la date est écrite dans la base en format standard et pas moyen de la convertir.

Le programme :

Code:
    Set wsp = Worksheets("Pointages")
    Set wsb = Worksheets("BDD_Affectation")
    
    lp = wsp.Range("D" & Rows.Count).End(xlUp).Row
    lb = wsb.Range("A" & Rows.Count).End(xlUp).Row + 1
    
    
    Set TpsAM = CreateObject("Scripting.Dictionary")
    Set BatAM = CreateObject("Scripting.Dictionary")
    Set TpsAP = CreateObject("Scripting.Dictionary")
    Set BatAP = CreateObject("Scripting.Dictionary")
    Set PrevAM = CreateObject("Scripting.Dictionary")
    Set PrevAP = CreateObject("Scripting.Dictionary")
    Set jour = CreateObject("Scripting.Dictionary")
    
    For Each c In wsp.Range("D4:D" & wsp.[d65000].End(xlUp).Row)
        If c.Offset(, 2).Value = "" Then
            TpsAM.Add c.Value, c.Offset(, 7).Value
            BatAM.Add c.Value, "AC"
            TpsAP.Add c.Value, c.Offset(, 8).Value
            BatAP.Add c.Value, "AC"
        Else
            TpsAM.Add c.Value, c.Offset(, 1).Value
            BatAM.Add c.Value, c.Offset(, 2).Value
            TpsAP.Add c.Value, c.Offset(, 4).Value
            BatAP.Add c.Value, c.Offset(, 5).Value
        End If
        
        PrevAM.Add c.Value, c.Offset(, 11).Value
        PrevAP.Add c.Value, c.Offset(, 12).Value
        jour.Add c.Value, wsp.[R1].Value
    
    Next c
    
    wsb.Range("B" & lb).Resize(TpsAM.Count) = Application.Transpose(TpsAM.keys)
    wsb.Range("C" & lb).Resize(TpsAM.Count) = Application.Transpose(TpsAM.Items)
    wsb.Range("D" & lb).Resize(BatAM.Count) = Application.Transpose(BatAM.Items)
    wsb.Range("E" & lb).Resize(TpsAP.Count) = Application.Transpose(TpsAP.Items)
    wsb.Range("F" & lb).Resize(BatAP.Count) = Application.Transpose(BatAP.Items)
    wsb.Range("G" & lb).Resize(PrevAM.Count) = Application.Transpose(PrevAM.Items)
    wsb.Range("H" & lb).Resize(PrevAP.Count) = Application.Transpose(PrevAP.Items)
    wsb.Range("A" & lb).Resize(jour.Count) = Application.Transpose(jour.Items)

Merci pour vos réponses
 

Efgé

XLDnaute Barbatruc
Re : Problème format date dictionnaire

Bonjour fabi1joret

Un peu à l'aveugle, une proposition:

Au moment de récupérer ta date :
Au lieu de
Code:
wsp.[R1].Value
Utilise
Code:
CDate(wsp.[R1].Value)

Puis pour la restitution utilise
Code:
Wsb.Range("A" & lb).Resize(jour.Count).FormulaLocal = Application.Transpose(jour.Items)
Le .FormulaLocal pourra éviter de voir tes dates passer au format anglais.

Cordialement
 

Statistiques des forums

Discussions
312 305
Messages
2 087 070
Membres
103 453
dernier inscrit
Choupi