J'ai déjà donné l'explication dans le message précédent.
Exemple :
Soit une date : 02/05/2013 Si toi tu ne connais pas le format que l'usager utilise, comment fais-tu pour savoir si l'auteur signifie : le 2 mai 2013 ou le 5 février 2013 ?
Pour VBA, le format de date qu'il utilise par défaut est Américain. Si tu ne donnes pas de spécification particulière à Excel en utilisant des fonctions comme "Format()", DateSerial()... la date qu'Excel perçoit est le 5 février 2013.
Cependant, si la date de départ est : 28/07/2013, Excel sait que cette date au format américain : le 7 du 28e mois de l'année 2013, est impossible. Alors pour tenter d'interpréter la chaîne de caractères soumise, il regarde dans le panneau de configuration de Windows s'il n'y a pas un format "Date" susceptible de correspondre à l'information que tu lui présentes. Dans ce cas, il affiche le 28 juillet 2013.
J'ai déjà donné l'explication dans le message précédent.
Exemple :
Soit une date : 02/05/2013
Si toi tu ne connais pas le format que l'usager utilise,
comment fais-tu pour savoir si l'auteur signifie :
le 2 mai 2013 ou le 5 février 2013 ?
Pour VBA, le format de date qu'il utilise par défaut est Américain.
Si tu ne donnes pas de spécification particulière à Excel en utilisant des
fonctions comme "Format()", DateSerial()... la date qu'Excel perçoit
est le 5 février 2013.
Cependant, si la date de départ est : 28/07/2013, Excel sait que cette
date au format américain : le 7 du 28e mois de l'année 2013, est
impossible. Alors pour tenter d'interpréter la chaîne de caractères
soumise, il regarde dans le panneau de configuration de Windows
s'il n'y a pas un format "Date" susceptible de correspondre à l'information
que tu lui présentes. Dans ce cas, il affiche le 28 juillet 2013.
J'ai déjà donné l'explication dans le message précédent.
Exemple :
Soit une date : 02/05/2013 Si toi tu ne connais pas le format que l'usager utilise, comment fais-tu pour savoir si l'auteur signifie : le 2 mai 2013 ou le 5 février 2013 ?
Pour VBA, le format de date qu'il utilise par défaut est Américain. Si tu ne donnes pas de spécification particulière à Excel en utilisant des fonctions comme "Format()", DateSerial()... la date qu'Excel perçoit est le 5 février 2013.
Cependant, si la date de départ est : 28/07/2013, Excel sait que cette date au format américain : le 7 du 28e mois de l'année 2013, est impossible. Alors pour tenter d'interpréter la chaîne de caractères soumise, il regarde dans le panneau de configuration de Windows s'il n'y a pas un format "Date" susceptible de correspondre à l'information que tu lui présentes. Dans ce cas, il affiche le 28 juillet 2013.
Le code utilisé : à mettre dans un module standard : Lancé la procédure "test" à partir de l'interface de la feuille de calcul.
'------------------------------------------------ Sub test() ActiveCell.Copy Application.OnTime (Now() + TimeValue("00:00:01")) / 100, "Convertir_Le_Format_Date_Cellules" End Sub '------------------------------------------------ Sub Convertir_Le_Format_Date_Cellules()
'Tu adaptes le nom de la feuille au besoin With Worksheets("Feuil1") .Activate 'Plage de cellules à adapter au besoin With .Range("B1:B" & .Range("B65536").End(xlUp).Row) 'Le format date à appliquer .NumberFormat = "DD/MM/YY" 'sélection de la plage à convertir .Select End With
'Tu places 1 dans une cellule de ton choix .Range("H1") = 1
'Copie le contenu de H1 dans le presse-papier .Range("H1").Copy
'Séquence des commandes que tu ferais si tu utilisais ' les lettres du menu pour effectuer le collage special 'Valide pour les versions françaises d'Excel If Val(Application.Version) < 12 Then 'à tester SendKeys "%egvm" & "~" Else 'Testé pour les versions Excel 2010 et 2013 : OK SendKeys "%LVG" & "{DOWN 2}" & "{TAB}" & "{DOWN 3}" & "~" End If DoEvents .Range("H1") = "" .Range("B1").Select End With Application.CutCopyMode = False End Sub '------------------------------------------------
MichD -------------------------------------------------------------- "MichD" a écrit dans le message de groupe de discussion : kca35l$cf0$
Le code utilisé : à mettre dans un module standard :
Lancé la procédure "test" à partir de l'interface de la feuille de calcul.
'------------------------------------------------
Sub test()
ActiveCell.Copy
Application.OnTime (Now() + TimeValue("00:00:01")) / 100, "Convertir_Le_Format_Date_Cellules"
End Sub
'------------------------------------------------
Sub Convertir_Le_Format_Date_Cellules()
'Tu adaptes le nom de la feuille au besoin
With Worksheets("Feuil1")
.Activate
'Plage de cellules à adapter au besoin
With .Range("B1:B" & .Range("B65536").End(xlUp).Row)
'Le format date à appliquer
.NumberFormat = "DD/MM/YY"
'sélection de la plage à convertir
.Select
End With
'Tu places 1 dans une cellule de ton choix
.Range("H1") = 1
'Copie le contenu de H1 dans le presse-papier
.Range("H1").Copy
'Séquence des commandes que tu ferais si tu utilisais
' les lettres du menu pour effectuer le collage special
'Valide pour les versions françaises d'Excel
If Val(Application.Version) < 12 Then
'à tester
SendKeys "%egvm" & "~"
Else
'Testé pour les versions Excel 2010 et 2013 : OK
SendKeys "%LVG" & "{DOWN 2}" & "{TAB}" & "{DOWN 3}" & "~"
End If
DoEvents
.Range("H1") = ""
.Range("B1").Select
End With
Application.CutCopyMode = False
End Sub
'------------------------------------------------
MichD
--------------------------------------------------------------
"MichD" a écrit dans le message de groupe de discussion : kca35l$cf0$1@speranza.aioe.org...
Voilà un fichier avec la solution : http://cjoint.com/?CAfvMiKCLY3
Il est impératif de lancer la procédure test à partir de l'interface de la
feuille de calcul pour obtenir le résultat désiré.
La procédure a été testée seulement pour les versions Excel 2010 et 2013.
Le code utilisé : à mettre dans un module standard : Lancé la procédure "test" à partir de l'interface de la feuille de calcul.
'------------------------------------------------ Sub test() ActiveCell.Copy Application.OnTime (Now() + TimeValue("00:00:01")) / 100, "Convertir_Le_Format_Date_Cellules" End Sub '------------------------------------------------ Sub Convertir_Le_Format_Date_Cellules()
'Tu adaptes le nom de la feuille au besoin With Worksheets("Feuil1") .Activate 'Plage de cellules à adapter au besoin With .Range("B1:B" & .Range("B65536").End(xlUp).Row) 'Le format date à appliquer .NumberFormat = "DD/MM/YY" 'sélection de la plage à convertir .Select End With
'Tu places 1 dans une cellule de ton choix .Range("H1") = 1
'Copie le contenu de H1 dans le presse-papier .Range("H1").Copy
'Séquence des commandes que tu ferais si tu utilisais ' les lettres du menu pour effectuer le collage special 'Valide pour les versions françaises d'Excel If Val(Application.Version) < 12 Then 'à tester SendKeys "%egvm" & "~" Else 'Testé pour les versions Excel 2010 et 2013 : OK SendKeys "%LVG" & "{DOWN 2}" & "{TAB}" & "{DOWN 3}" & "~" End If DoEvents .Range("H1") = "" .Range("B1").Select End With Application.CutCopyMode = False End Sub '------------------------------------------------
MichD -------------------------------------------------------------- "MichD" a écrit dans le message de groupe de discussion : kca35l$cf0$