Problème Macro format cellule

pygos Messages postés 202 Statut Membre -  
pygos Messages postés 202 Statut Membre -
Bonjour,

Lorsque j'ouvre un fichier *.xlcs et que je procède au changement de format/cellule/nombre sur les colonnes C et D, pas de problème...

Lorsque je veux faire la même chose en macro, la le résultat change.....

Date saisie Date en cours
30-06-2010 28-06-2010
30-06-2010 28-06-2010
30-06-2010 28-06-2010
30-06-2010 29-06-2010
30-06-2010 25-06-2010
30-06-2010 28-06-2010
30-06-2010 25-06-2010

1ère opération Edition/remplacer :

- par /

2ème opération Format/cellule/nombre :

j/m/aa;@

En manuel, cela fonctionne......

Résultat :

Date saisie Date en cours
30/6/10 1/7/10
30/6/10 30/6/10
30/6/10 1/7/10
30/6/10 30/6/10
30/6/10 30/6/10
30/6/10 1/7/10

En automatique avec une macro enregistrée :

Date saisie Date en cours
30/06/2010 7/1/10
30/06/2010 30/06/2010
30/06/2010 7/1/10
30/06/2010 30/06/2010
30/06/2010 30/06/2010
30/06/2010 7/1/10

Cela ne fonctionne pas ???

En fait pour les dates inférieures au 10 du mois cela fonctionne et pour les autres cela reste au format texte.....

Merci de me dire si vous trouvez une explication....cela me pose des problèmes en suite sur access...

Cordialement,

Pygos

4 réponses

  1. Patrice67
     
    Bonjour pygos,

    Je pense que c'est à cause de la lecture des dates en anglais.

    français jj/mm
    anglais mm/jj

    Quand on passe par la macro, il inverse les chiffres (anglais) et la variable ne comprend pas des mois qui dépassent la valeur 12 donc renvoie en texte.

    Solution dans la macro il faut traiter la date en inversant le mois et le jour.

    Cordialement
    Patrice67
    0
  2. pygos Messages postés 202 Statut Membre
     
    Merci mais cela ne fonctionne pas malheureusement.....

    Voici la macro rectifiée :

    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 21/12/2010 par
    '
    Range("C2:d50").Select
    Selection.Replace What:="-", Replacement:="/", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Selection.NumberFormat = "m/d/yy;@"
    Range("A1").Select

    Merci d'avance,

    Pygos
    0
  3. patrice67
     
    Salut

    Essaie cette macro à la place de la tienne:

    Sub TraitDate()
    For lig = 2 To 8
    For col = 3 To 4
    DaT = Cells(lig, col)
    jour = Int(Left(DaT, 2))
    mois = Int(Mid(DaT, 4, 2))
    annee = Int(Right(DaT, 2))
    Cells(lig, col) = jour & "/" & mois & "/" & annee
    Next col
    Next lig
    End Sub

    Cordialement
    Patrice67
    0
  4. Patrice67
     
    Salut

    J'avais envoyé un post comme je ne le vois pas je l'envoie à nouveau.

    Je te propose cette macro à la place de la tienne.
    Sub TraitDate()

    For lig = 2 To 8

    For col = 3 To 4
    DaT = Cells(lig, col)
    jour = Int(Left(DaT, 2))
    mois = Int(Mid(DaT, 4, 2))
    annee = Int(Right(DaT, 2))
    Cells(lig, col) = jour & "/" & mois & "/" & annee
    Next col

    Next lig

    End Sub

    Cordialement Patrice67
    0
    1. pygos Messages postés 202 Statut Membre
       
      Bonjour,

      Merci pour cette macro mais malheureusement voici le résultat :

      Date saisieDate en cours
      30/6/10 28/6/10
      30/6/10 28/6/10
      30/6/10 28/6/10
      30/6/10 29/6/10
      30/6/10 25/6/10
      30/6/10 28/6/10
      30/6/10 25/6/10
      30/6/10 25/6/10
      30/6/10 30/6/10
      30/6/10 30/6/10
      30/6/10 30/6/10
      30/6/10 30/6/10
      30/6/10 30/6/10
      30/6/10 30/6/10
      30/6/10 30/6/10
      30/6/10 30/6/10
      30/6/10 30/6/10
      30/6/10 07/01/2010
      30/6/10 30/6/10
      30/6/10 07/01/2010
      30/6/10 30/6/10
      30/6/10 30/6/10
      30/6/10 07/01/2010
      30/6/10 30/6/10
      30/6/10 22/6/10
      30/6/10 30/6/10
      30/6/10 30/6/10
      30/6/10 30/6/10
      30/6/10 25/6/10
      30/6/10 25/6/10
      30/6/10 07/01/2010

      Les dates avant le 10 du mois , c'est ok ! mais après ....

      Sub DATETRAIT ()

      For lig = 2 To 32
      For col = 3 To 4
      DaT = Cells(lig, col)
      jour = Int(Left(DaT, 2))
      mois = Int(Mid(DaT, 4, 2))
      annee = Int(Right(DaT, 2))
      Cells(lig, col) = jour & "/" & mois & "/" & annee
      Next col
      Next lig

      end sub

      Merci d'avance !!
      Pygos
      0