> Tous les forums > Forum Bureautique
 Problème EXCEL VBA Pastespecial et date en format anglaisSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Debrief
  Posté le 06/09/2016 @ 11:31 
Aller en bas de la page 
Astucien

Bonjour,

Je colle des données non-Excel (du texte) du clipboard dans une feuille EXCEL en VBA avec Pastespecial.
L'une de ces données est une date qui est fournie en format jj/mm/aaaa.

Le Pastespecial ne peut s'empêcher de la traficoter et la remettre en format anglais. Ce problème est cité sur des forums divers mais je n'ai pas trouvé de réponse.
La seule manière que j'ai trouvé de contourner le problème est de fournir la date directement en format anglais pour que la mise en format anglais du Pastespecial la retourne en format Français. C'est un peu tordu !

La Question: Comment faire Pastespecial de cette date en texte jj/mm/aaaa pour qu'elle soit collée et affichée dans Excel en format date français ?

Voir sur cet exemple http://www.cjoint.com/c/FIgjDr0kJTZ

Merci par avance

D.

Publicité
ferrand
 Posté le 06/09/2016 à 14:52 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

Problème récurrent !

InputBox te renvoie une chaîne (type String) [ou False].

Tu passes cette chaîne à VBA, qui peut l'interpréter comme date (et le fait !), mais qui ne connaît que le format date américain en ce qui concerne la représentation textuelle d'une date. Résultat... il transmet la date correspondant à son interprétation de la chaîne initiale.

Il convient donc de convertir ta chaîne-date en date au moyen d'une fonction utilisant les paramètres régionaux du système pour ce type de conversion. C'est en principe le cas de CDate (peut-être aussi DateValue, à vérifier).

Essaie :

Sub CollerDate()
Dim Dat
Range("f2:g2").ClearContents
Dat = InputBox("Date jj/mm/aaaa ou rien pour " & Date & " ?")
' Date du jour par défaut
If Len(Dat) = 0 Then
Dat = Date
Else
Dat = CDate(Dat)
End If
Range("F2") = Dat
End Sub

Inutile de transiter par le presse-papier pour mettre une valeur dans une cellule...

Cordialement.

Debrief
 Posté le 06/09/2016 à 21:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour Ferrand,

J'ai utilisé le clipboard pour reproduire la capture de mes écritures bancaires sur leur page Web directement (sélection puis copy). J'ai des fonctions pour automatiser l'insertion et gérer mes infos de compte dans l'Excel.

Curieusement, quand le clipboard contient du html issu du copy sur page Web, le .PasteSpecial Format:="HTML" (récupéré d'une macro enregistrée) récupère bien des dates jj/mm/aaaa du clipboard et les insert en cellules correctement en format date et français.

Pour ajouter artificiellement une "fausse" ligne d'écriture dans mes comptes (Relevé CB mensuel) j'ai juste voulu simuler l'insertion d'une écriture issue de la page Web en plaçant dans le clipboard le texte que je récupère du web avec Clipboard.GetText mais sans l'environnement html du clipboard. De fait j'ai dû passer par .PasteSpecial Format:="Texte" car dans ce cas Format:="HTML" plante bien sûr. Et là les dates ne sont pas traitées de la même façon.

Il n'y a effectivement pas de solution car le .PasteSpecial Format:="Texte" reconnait:

  1. Soit une date potentielle en format anglais (c'est le cas d'une date jj/mm/aaaa où jj <= 12) et la traite comme date anglaise pour ensuite l'afficher cadrée à droite en format local dans la cellule, d'où l'inversion mm/jj

  2. Soit une simple chaine de caractères (c'est le cas d'une date jj/mm/aaaa où jj > 12) et la traite comme un chaine de caractères et l'affiche cadrée à gauche.

La seule façon de s'en sortir est de lui passer directement une date en format anglais (mm/jj/aaaa) pour retomber à coup sûr dans le cas 1.
Ou bien évidemment, comme tu le proposes, d'affecter directement la date à la cellule si on colle les données à l'unité.

Reste la spécificité du .PasteSpecial Format:="HTML" d'un clipboard html qui semble procéder différemment.

Cordialement,
D.



Modifié par Debrief le 06/09/2016 22:08
ferrand
 Posté le 07/09/2016 à 02:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Re,

Je crois que je commence assez bien à connaître les problèmes de dates avec VBA et en interaction VBA-Excel... mais par contre j'ignore tout de Worksheet.PasteSpecial, ne l'ayant jamais utilisé . Je n'ai donc aucune idée sur la façon de maîtriser les données en passant par cette méthode.

Tu dis cependant que ton import se fait correctement. Il semble donc que si tu veux rajouter des éléments, tu aurais intérêt à le faire ensuite et séparément, d'une façon que tu peux maîtriser...

Cordialement.

Debrief
 Posté le 07/09/2016 à 09:32 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

En effet, c'est plus sûr de maîtriser les données plutôt que de s'en remettre aux aléas de bidules sur lesquels on n'a pas toute la visibilité nécessaire.
Ceci dit, pour mon petit problème et pour ne pas trop me fatiguer j'ai gardé le .PasteSpecial Format:="Texte" (qui contient plusieurs autres données) en lui passant la date en format anglo-américain.

Car grâce à cette petite discussion j'ai un peu progressé dans la compréhension des dates dans Excel VBA et modifié le fichier de test pour y ajouter 2 ou 3 petites choses pour l'illustrer http://www.cjoint.com/c/FIljpYZ5LiR

Cordialement,
D.

*** Fichier de test modifié / amélioré*** Fichier de test modifié / diagnostique amélioré



Modifié par Debrief le 11/09/2016 11:16
Debrief
 Posté le 07/09/2016 à 09:54 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

@ATTN PC Astuces Team: Je ne reçois plus les notifications de réponses à mes questions sur le Forum !

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
99,99 €Mario Kart Live: Home Circuit à 99,99 €
Valable jusqu'au 17 Avril

Amazon propose actuellement Mario Kart Live: Home Circuit avec le kart Luigi pour Nintendo Switch à 99,99 € au lieu de 109 €. Laissez libre cours à votre imagination et créez vos propres courses dans le monde réel. Imaginez votre salle à manger se transformer en un monde de lave où bananes et carapaces s’échangeraient au rythme des rugissements des moteurs de votre kart, lui aussi réel… les possibilités sont infinies !


> Voir l'offre
224,63 €Disque dur externe Western Digital Elements Desktop USB 3.0 14 To à 224,63 € livré
Valable jusqu'au 18 Avril

Amazon Espagne propose actuellement le disque dur externe Western Digital Elements Desktop USB 3.0 14 To à 218,17 €. Comptez 6,46 € pour la livraison en France soit un total de 224,63 € livré alors qu'on le trouve ailleurs à partir de 300 €. Ce disque dur dispose d'un grande capacité de stockage (14 To) et d'une connectique USB 3.0 qui vous offrira des transferts rapides. Il est compatible USB 2.0. Une très bonne affaire.  Notez que le disque dur n'est pas soudé et que vous pouvez le récupérer pour l'utiliser dans un ordinateur ou un NAS (il s'agit d'un disque dur CMR hélium UltraStar DC HC 530).

Vous pouvez utiliser votre compte Amazon France sur Amazon ES et il n'y a pas de douane.


> Voir l'offre
296,53 € livréeCaméra sportive GoPro HERO8 Black à 296,53 € livrée
Valable jusqu'au 16 Avril

Amazon Allemagne fait une promotion sur la caméra sportive GoPro Hero 8 Black qui passe à 291,43 € (avec la TVA ajustée). Comptez 5,10 € pour la livraison en France soit un total de 296,53 € livrée au lieu de 379 €. Filmez en 4K, profitez d'une stabilisation performante et de modes vidéo toujours aussi complets. Cette caméra sportive est étanche et robuste, possède un écran tactile 2" et des fonctionnalités connectées Wi-Fi et Bluetooth. Créez vos réglages, diffusez en live en 1080p et appréciez le confort de l'application mobile dédiée. 

Vous pouvez utiliser votre compte Amazon FR sur Amazon DE et il n'y a pas de douane.


> Voir l'offre

Sujets relatifs
Publipostage Word/Excel problème de format de date
format date Excel
format date dans en-tête Excel
format date excel
Format date dans en-tete excel
probleme date excel
Excel 2003 - Trier par date au format jj/mm/aaaa
Problème format monétaire dans EXCEL
probleme avec date sur excel
Format date sur excel
Plus de sujets relatifs à Problème EXCEL VBA Pastespecial et date en format anglais
 > Tous les forums > Forum Bureautique