Modification des données lors d'un copier coller avec une macro

Signaler
Messages postés
8
Date d'inscription
lundi 17 août 2009
Statut
Membre
Dernière intervention
17 août 2009
-
Messages postés
8
Date d'inscription
lundi 17 août 2009
Statut
Membre
Dernière intervention
17 août 2009
-
Bonjour a tous merci d'avance pour vos différentes solutions,

Voici mon problème

Je souhaite enregistrer une macro qui colle des données copier d'un fichier texte ou du presse papier.

Quand j'effectue l'enregistrement de ma macro aucun problème mes données restent similaires avec le fichier txt

Lorsque je lance la macro que je viens d'enregistrer les données changent

exemple

une date du fichier txt 06/01/09 devient 01/06/09 par contre les dates dont le jour est > 13 ne changent pas

et dans les cellules ou j'ai des chiffres se terminant par 1111,00 un rapport d'erreur apostrophe devant le chiffre alors qu'il n'y a rien

Merci de votre aide

10 réponses

Messages postés
38
Date d'inscription
mercredi 5 novembre 2008
Statut
Membre
Dernière intervention
15 avril 2010

Bonjour, pourrais tu mettre ta lacro sur le forum, ça serait plus simple pour trouver l'erreur

Zock[size=50]
/size
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
TOUJOURS enregistrer les dates en international: yyyy-mm-dd

t'auras plus ce genre de soucis

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
8
Date d'inscription
lundi 17 août 2009
Statut
Membre
Dernière intervention
17 août 2009

Bonjour Renfield, Merci de ta réponse par contre je tire ces infos d'un système mis en place depuis plusieurs années.

Bonjour Zock,

Voici la partie de la macro qui pose problème

Sub BdOF()

Sheets("OF").Select
Columns("A:W").Select
Selection.ClearContents
Range("A1").Select
ActiveSheet.Paste

End sub
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
plus interessant de voir la lecture de ces données et leur ecriture dans le fichier en question


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
38
Date d'inscription
mercredi 5 novembre 2008
Statut
Membre
Dernière intervention
15 avril 2010

Alors je sais comment t'aider. Je peux te proposer un truc, c'est pas de l'art en matière d'informatique mais je pense que ça peut le faire. L'idée c'est de mettre en forme ta colonne Date une fois la copie terminée. (ouais c'est de la bidouille) . Voici le code, je l'ai aps test mais ça doit le faire.
en gros :
30/10/2002 ==> 30/10/2002
01/12/2002 ==> 12/01/2002
*les dates sont transformées tant que les cellules de la colonne date n'est pas nulle

Dim Annee, Mois, Jour As String
Dim Temp, Num_ligne, num_colonne As Integer

num_colonne = 1 'Numéro de la colonne où tu as tes dates
Num_ligne = 1 'Numéro de la ligne où commence les valeurs
Do
   Temp = CInt(Mid(Cells(Num_ligne, num_colonne).Value, 1, 2))
  If Temp > 12 Then
   Jour = CInt(Mid(Cells(Num_ligne, num_colonne).Value, 1, 2))
   Mois = CInt(Mid(Cells(Num_ligne, num_colonne).Value, 4, 2))
   Annee = CInt(Mid(Cells(Num_ligne, num_colonne).Value, 7, 11))
  Else
   Mois = CInt(Mid(Cells(Num_ligne, num_colonne).Value, 1, 2))
   Jour = CInt(Mid(Cells(Num_ligne, num_colonne).Value, 4, 2))
   Annee = CInt(Mid(Cells(Num_ligne, num_colonne).Value, 7, 10))
  End If

  Cells(Num_ligne, num_colonne).Value = CDate(Jour & "/" & Mois & "/" & Annee)

  Num_ligne = Num_ligne + 1
Loop Until Cells(Num_ligne, num_colonne).Value = ""
'

J'espere que j'ai pu t'aider, après je peut plus faire grand chose
Zock[size=50]
/size
Messages postés
8
Date d'inscription
lundi 17 août 2009
Statut
Membre
Dernière intervention
17 août 2009

Ok pas de problème voici l'exemple

Dans le presse papier ou fichier txt j'ai la date qui est 05/12/2007
Dans excel après exécution de la macro j'ai 12/05/2007

Je peux joindre des fichiers au forum excusez moi pour ces questions de débutants
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
NON !!!!!
CDate(Jour & "/" & Mois & "/" & Annee)
on utilise DateSerial pour faire ca, on ne magouille pas ainsi !


Dim Annee, Mois, Jour As String
Dim Temp, Num_ligne, num_colonne As Integer
ici, Annee, Mois, Temp, Num_Ligne seront des VARIANT


Annee = CInt(Mid(Cells(Num_ligne, num_colonne).Value, 7, 11))
pas confondre le dernier argument de Mid, c'est la longueur, pas la position de fin.
reste que ce genre de magouille n'est pas acceptable non plus (Mid sur les Dates...)


En clair:

ecriture d'une date dans un fichier:
MaSuperFonctionPourEcrire Format$(DateAEcrire, "yyyy-mm-dd")

la lecture se fera sans souci, quels que soient les parametres regionnaux.

voir:
http://blogs.codes-sources.com/renfield/archive/2009/04/14/param-tres-r-gionnaux-en-g-n-ral-et-avec-vb6.aspx



Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
8
Date d'inscription
lundi 17 août 2009
Statut
Membre
Dernière intervention
17 août 2009

Merci Zock c'est pour ta proposition en fait je voulais comprendre pourquoi le copie colle avec la macro ne me donne pas le meme résultat que le copie colle normal avec clic droit?
Messages postés
8
Date d'inscription
lundi 17 août 2009
Statut
Membre
Dernière intervention
17 août 2009

Renfield ou Zock,

Vous savez pourquoi quand je colle sans passer par une macro je n'ai pas ce souci?
Si vous pouvez m'eclairer sur ce sujet

Merci de votre aide
Messages postés
8
Date d'inscription
lundi 17 août 2009
Statut
Membre
Dernière intervention
17 août 2009

Vous comprenez la différence entre un coller classique directement sous excel
et la fonction Vb ActiveSheet.Paste?