Les plaisirs de la commande "Sendkeys"
Le
MichD

Bonjour,
Voici un fichier : http://cjoint.com/?CAfrwCd8u9l
L'explication de la problématique est contenue dans le fichier.
Merci de votre participation.
MichD
--
Voici un fichier : http://cjoint.com/?CAfrwCd8u9l
L'explication de la problématique est contenue dans le fichier.
Merci de votre participation.
MichD
--
j'ai remplacé la plage I1:I4 par
21-sept
13-août
28-Jul
11-Jun
le résultat est:
21-09-13
13-08-13
28-07-13
11-07-13
je ne comprend pas le probleme rencontré avec le mois de juin ?
xl2012
isabelle
Le 2013-01-05 11:24, MichD a écrit :
Tu travailles en français ou en anglais?
En français, tu devrais avoir :
28-Jul ===>>>> 28 Juil
11-Jun ===>>>> 11 juin
MichD
--------------------------------------------------------------
anglais,
mais pourquoi cela fonctionne pour "Jul" mais pas pour "Jun" ?
isabelle
Le 2013-01-05 11:50, MichD a écrit :
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.
C'est un automatisme d'Excel...!
MichD
--------------------------------------------------------------
le résultat est:
B1 -01-00
B2 B3 B4
j'en déduit que de les commandes "Sendkeys" ne sont pas
les même sur xl2012
isabelle
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.
MichD
--------------------------------------------------------------
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$
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.
MichD
--------------------------------------------------------------