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

Dzair57 Messages postés 8 Date d'inscription lundi 17 août 2009 Statut Membre Dernière intervention 17 août 2009 - 17 août 2009 à 13:15
Dzair57 Messages postés 8 Date d'inscription lundi 17 août 2009 Statut Membre Dernière intervention 17 août 2009 - 17 août 2009 à 17:24
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

cs_Zock Messages postés 38 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 15 avril 2010
17 août 2009 à 13:54
Bonjour, pourrais tu mettre ta lacro sur le forum, ça serait plus simple pour trouver l'erreur

Zock[size=50]
/size
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 août 2009 à 14:06
TOUJOURS enregistrer les dates en international: yyyy-mm-dd

t'auras plus ce genre de soucis

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
Dzair57 Messages postés 8 Date d'inscription lundi 17 août 2009 Statut Membre Dernière intervention 17 août 2009
17 août 2009 à 15:52
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 août 2009 à 15:57
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Zock Messages postés 38 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 15 avril 2010
17 août 2009 à 16:15
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
0
Dzair57 Messages postés 8 Date d'inscription lundi 17 août 2009 Statut Membre Dernière intervention 17 août 2009
17 août 2009 à 16:22
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 août 2009 à 16:24
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
0
Dzair57 Messages postés 8 Date d'inscription lundi 17 août 2009 Statut Membre Dernière intervention 17 août 2009
17 août 2009 à 17:06
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?
0
Dzair57 Messages postés 8 Date d'inscription lundi 17 août 2009 Statut Membre Dernière intervention 17 août 2009
17 août 2009 à 17:13
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
0
Dzair57 Messages postés 8 Date d'inscription lundi 17 août 2009 Statut Membre Dernière intervention 17 août 2009
17 août 2009 à 17:24
Vous comprenez la différence entre un coller classique directement sous excel
et la fonction Vb ActiveSheet.Paste?
0
Rejoignez-nous