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

ChTi160

XLDnaute Barbatruc
Bonjour cp4
Bonjour le Fil , le Forum
Pour participer pendant que vous récupérez Lol
tu dis :
Quand
VB:
 j= 1 ----> d.item(t(1,1) = cells(2,1) ' là pas compris 1ère ligne de t on prend 2ème ligne feuille?
soit :
Cells(2,1)= Cells(J+1,1)
J+1 pour prendre la Deuxième Ligne de la Colonne A ou se trouve la première Date .
en espérant avoir compris la question Lol
Bonne fin de Nuit LOL
Amicalement
Jean marie
 

Si...

XLDnaute Barbatruc
Bon_jour

Pour l'erreur signalée par l'image, cp4, ton 'VBA' a dû subir comme parfois, une modification.

En supprimant ton code et en le remplaçant par

VB:
Private Sub CommandButton1_Click()
'Dim D
Set d = CreateObject("Scripting.Dictionary")
  For Each C In [A2:A13]: d(C.Value2) = "": Next
  [D2:D13] = ""
  [D2].Resize(d.Count) = Application.Transpose(d.keys)
  [D2].Resize(d.Count).NumberFormat = "m/d/yyyy"  'si la colonne n'est pas formatée
End Sub

il n'y a plus, chez moi, d'erreur décelée sauf dans certains cas avec la transposition (problème connu n'est-ce pas Léti :), JM 1 ;), JM 2 ;)?).

On peut alors passer par un filtre avancé
VB:
Private Sub CommandButton2_Click()
  [F2:F13] = ""
  [A2:A13].AdvancedFilter 2, , [F2], 1
End Sub
mais la vitesse d'exécution peut s'en ressentir.

Nota : Dim D est un passe-partout (avec Option Explicit) que j'utilise quand j'ai les doigts engourdis.
 

Pièces jointes

  • Dico Filtre Dates.xlsm
    21.8 KB · Affichages: 27

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

MADAME Leti ;)
J'y peux rien , j'y suis obligé ;)

Sinon, personne pour éclairer ma lanterne sur mon questionnement du message#12, svp ?

ChTi160 a répondu à ta question cp4 ;)
(qu'il en soit remercié)
Je confirme: le décalage c'est à cause de Dates en A1 (qui n'est pas une date ;)

Si...: Même question:
Why d(C.Value2) = "" ?
 

laetitia90

XLDnaute Barbatruc
bonsoir tous:)

MADAME Leti:mad::mad::mad: ;) a plusieurs explications possible dans ce cas de figure

code test on remarque beaucoup de chose intére.....
VB:
Sub es()
Dim d As Object,a,b,i as long
Set d = CreateObject("scripting.dictionary")
For Each C In [A2:A13]
d(C.Value) = C.Offset(, 1).Value2
'd(C.Value2) = C.Offset(, 1).Value2
'd(C.Value) = ""
Next C
     a = d.keys: b = d.items
   For i = 0 To d.Count - 1
   MsgBox a(i)
   MsgBox b(i)
   Next i
d.RemoveAll
End Sub

que remarque col b vide mais pas d'importance!!!

d(C.Value) = C.Offset(, 1).Value2

d(C.Value) avec offset ou pas ..... chargera quand meme le dico. keys .....items vide col2 vide
bien sur sans offset d(C.Value) = ""

msgbox a(i) nous avons no clés & pas d'inversion de date avant transpose
MsgBox b(i) vide
on peut confirmer que c'est transpose qui fout le ca..
.
dans le cas 2

d(C.Value2) = C.Offset(, 1).Value2
d(C.Value2) = ""

msgbox a(i) nous avons no clés mais sous forme standard..... chiffre
puis transpose en date

le mieux eviter d' utiliser transpose surtout depuis 2007 limitation ect..

voila:) voilou:)

d(C.Value2) = d(C.Value2) + 1 idem d(C.Value2)=""
 
Dernière édition:

cp4

XLDnaute Barbatruc
Bonjour,:D:D:D

Je constate suite à cette discussion très instructive que encore beaucoup de choses à apprendre en VBA et même Excel. Je ne me suis pas encore habitué à utiliser les tableaux vba et les dictionnaires, que je me trouve confronter à cette histoire de dates. Quelle chance, ils ont les anglophones, un souci en moins.

Merci à vous pour toutes vos explications et votre patience.

Bonne journée:cool:
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 889
Membres
101 831
dernier inscrit
gillec