Inversion de dates

cp4

XLDnaute Barbatruc
Bonsoir,

Confronter aux problèmes d'inversion de dates, Boisgontier propose une solution sur son site. ICI
Au bas de la page
Mais je n'arrive pas à la mettre en œuvre. J'ai cette erreur
upload_2018-2-18_22-28-13.png

Je n'ai pas compris pourquoi. J'ai coché Microsoft Scripting Runtime.

Merci pour votre aide et explications.

Bonne soirée.
 

Pièces jointes

  • InversionDate.xlsm
    15.7 KB · Affichages: 30

laetitia90

XLDnaute Barbatruc
bonsoir cp4:),JM:)

tu as mal recopier l'exemple caractére a effacer avant

???? d(c.Value) = c.Offset(, 1).Value2

tu declares

Set d = CreateObject("scripting.dictionary")
donc tu utilise une liaison tardive
donc coché Microsoft Scripting Runtime sert a rien

par contre si tu coche la Microsoft Scripting Runtime il fait declarer comme cela
Dim d As New Scripting.Dictionary & non object
et la ligne si dessous tu la supprime sert plus a rien
Set d = CreateObject("scripting.dictionary")

pour value 2 date avant excel 2007 pb...inversion plus apres .....perso je l'utilise souvent
seulement pour la rapidité execution du code seulement dans certains cas!!!

ps l'action de passer par une liaison "precoce" execution du code plus rapide dans beaucoup de cas:rolleyes:
 

Staple1600

XLDnaute Barbatruc
Bonsoir leti

Comme ceci, Excel ne bronche plus chez moi ;)
VB:
Sub Test()
Dim d As Object, t, j
t = [A2:A13].Value
Set d = CreateObject("Scripting.Dictionary")
For j = 1 To UBound(t)
d.Item(t(j, 1)) = Cells(j + 1, 1).Value2
Next
[D2].Resize(d.Count) = Application.Transpose(d.keys)
[E2].Resize(d.Count) = Application.Transpose(d.items)
[E2].Resize(d.Count).NumberFormatLocal = "jj/mm/aaaa"
End Sub

PS: L'exemple est tel que mis par cp4
(voir le lien vers le site de JB dans son 1er message)
 

cp4

XLDnaute Barbatruc
Bonsoir Laetitia90:),

Très gentil de ta part. En effet, j'ai fait un copier coller.
D'après ce que tu m'expliques, l'inversion de dates ne se fait qu'avec les versions antérieures à 2007.
Or, dans cette exemple je constate que les dates s'inversent avec cette ligne de code (ci-dessous)
[d2].Resize(d.Count) = Application.Transpose(d.keys)

et pour les 2 lignes ci-dessous, je n'ai pas de résultats sur la feuille
[E2].Resize(d.Count) = Application.Transpose(d.items)
'Ou à la restitution, utiliser FormulaLocal
[F2].Resize(d.Count).FormulaLocal = Application.Transpose(d.items)

Franchement, cette histoire de dates me rend 'chèvre'. Dés qu'il y a transfert, par exemple d'une feuille vers un tableau et ensuite vers la feuille les dates s'inversent. Ou de l'importation d'un fichier csv vers excel idem.
Enfin, c'est ce que j'ai constaté. Je m'y prends sûrement très mal.

J'avoue que je galère avec les dates. Merci beaucoup.:D
 

Staple1600

XLDnaute Barbatruc
Re

Effectivement, j'avais pas remarqué le mauvais caractère du caractère surnuméraire qui faisait tousser Excel.
Je l'ai supprimé et le code initial fonctionne chez moi.

Par contre je ne comprends pas ceci
d(c.Value) = c.Offset(, 1).Value2

Avec c.Offset(, 1) on va en colonne B, or celle-ci est vide?

Donc comment ça marche cette histoire ?

PS: Pour ma version, voir mon profil XLDien ;)
 

cp4

XLDnaute Barbatruc
Re

Effectivement, j'avais pas remarqué le mauvais caractère du caractère surnuméraire qui faisait tousser Excel.
Je l'ai supprimé et le code initial fonctionne chez moi.

Par contre je ne comprends pas ceci
d(c.Value) = c.Offset(, 1).Value2

Avec c.Offset(, 1) on va en colonne B, or celle-ci est vide?

Donc comment ça marche cette histoire ?

PS: Pour ma version, voir mon profil XLDien ;)
Plus que tu en parles, là aussi comment ça marche
For j = 1 To UBound(t)
d.Item(t(j, 1)) = Cells(j + 1, 1).Value2
Next

quand j=1 ----> d.item(t(1,1) = cells(2,1) là pas compris 1ère ligne de t on prend 2ème ligne feuille?
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 898
Membres
101 834
dernier inscrit
Jeremy06510