Mise en forme date

Messages postés
74
Date d'inscription
lundi 24 juillet 2006
Statut
Membre
Dernière intervention
23 décembre 2013
-
Messages postés
61
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
14 septembre 2006
-
Bonjour à tous.

La macro suivante est censé chercher une date dans la case I2 et affecter cette date dans l'un des champs d'un tableau dynamique.

Or, j ai un petit soucis: lorsque dans I2 est inscrit 16/06/2006, la macro va choisir 6/16/2006 dans le tableau dynamique, date bien sur qui n'existe pas.

jour = Range("I2").Value
 
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Date"). _
        CurrentPage = jour

Est ce que qq un sait pq?? Je vous remercie par avance/

10 réponses

Messages postés
61
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
14 septembre 2006

Bonjour,


pour information, le format date des USA est : "mois/jour/année", et ce format est celui par défaut en vba
Messages postés
74
Date d'inscription
lundi 24 juillet 2006
Statut
Membre
Dernière intervention
23 décembre 2013

Donc il faudrait que je repasse toutes mes dates au format US?
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

    Dim dJour As Date
   
dJour = CDate(Range("I2").Value)
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Date"). _
        CurrentPage = dJour

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Messages postés
74
Date d'inscription
lundi 24 juillet 2006
Statut
Membre
Dernière intervention
23 décembre 2013

Merci pour la réponse mais je suis désolé, ca n'a pas l'air de marcher
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
je l'ai essayé comme ça, en simple :
    Dim dJour As Date
   
dJour = CDate(Range("A2").Value)
Range("B2").Value = dJour
' et dans A2 : 08/09/2006
et ça fonctionne, mais en tableau croisé dynamique, je ne sais pas si c'est différent.

As tu un message d'erreur, ou encore le même format ?
Quel est le format de la cellule de destination ?

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Messages postés
74
Date d'inscription
lundi 24 juillet 2006
Statut
Membre
Dernière intervention
23 décembre 2013

Pas de message d'erreur, juste le format US.
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Et avec une méthode, pas très bien, certe, mais qui peut dépanner si fonctionne :

    Dim dJour As Date
   
dJour = CDate(Range("I2").Value)
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Date"). _
        CurrentPage = Format(dJour, "mm/dd/yyyy")

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Messages postés
74
Date d'inscription
lundi 24 juillet 2006
Statut
Membre
Dernière intervention
23 décembre 2013

Ben ca ne marche toujours pas.
Messages postés
74
Date d'inscription
lundi 24 juillet 2006
Statut
Membre
Dernière intervention
23 décembre 2013

Petit up.
Il n'y a personne qui sait ou est le pb??
Messages postés
61
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
14 septembre 2006

bonjour

 ceci marche chez moi :
jour = Range("I2").Value
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Date"). _
        CurrentPage = Format(jour, "dd/mm/yyyy")

explication : comme je le disais précédemment VBA travaille avec le format date US mais dans certaines fonction, il tient compte du format de date paramètré dans Windows.

Ici, le tableau croisé dynamique a convertit en chaine de caratères la donnée "date" (mais dans le format paramétré dans windows i.e fançais)

la propriété CurrentPage demande donc une variable String qui doit être dans le même format que le format précédent)


en mettant seulement    CurrentPage = jour
jour étant une donnée Date, CurrentPage attendant une donnée String, VBA transforme avec son propre format de date. Cette ligne revient à la même chose que       CurrentPage = Format(jour, "mm/dd/yyyy")   or ce n'est pas le format souhaité

J'éspère avoir été clair... (manque de sommeil ...)