Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Les plaisirs de la commande "Sendkeys"

7 réponses
Avatar
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
--------------------------------------------------------------

7 réponses

Avatar
isabelle
bonjour Denis,

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 :
Bonjour,

Voici un fichier : http://cjoint.com/?CAfrwCd8u9l

L'explication de la problématique est contenue dans le fichier.

Merci de votre participation.

MichD
--------------------------------------------------------------
Avatar
MichD
Bonjour Isabelle,

Tu travailles en français ou en anglais?

En français, tu devrais avoir :

28-Jul ===>>>> 28 Juil
11-Jun ===>>>> 11 juin

MichD
--------------------------------------------------------------
Avatar
isabelle
je travaille en français, mais j'ai des rapports téléchargés qui sont en
anglais,

mais pourquoi cela fonctionne pour "Jul" mais pas pour "Jun" ?

isabelle

Le 2013-01-05 11:50, MichD a écrit :
Bonjour Isabelle,

Tu travailles en français ou en anglais?

En français, tu devrais avoir :

28-Jul ===>>>> 28 Juil
11-Jun ===>>>> 11 juin

MichD
--------------------------------------------------------------

Avatar
MichD
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.

C'est un automatisme d'Excel...!


MichD
--------------------------------------------------------------
Avatar
isabelle
j'ai effacé la plage B1:B4, et exécuter la macro,
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
Avatar
MichD
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
--------------------------------------------------------------
Avatar
MichD
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$

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
--------------------------------------------------------------