Format de date pour TCD

  • Initiateur de la discussion AlainM
  • Date de début
A

AlainM

Guest
Bonjour tout le monde

J'ai un tableau ordinaire dans lequel j'ai une colonne avec la date au format JJ/MM/AA, dans la colonne d'à côté je l'ai mise au format "mois.-04" pour que celà puisse être pris en compte dans un tableau croisé dynamique afin de faire des statistiques mensuelles.
Le problème dans ma macro que voili, que voilou :
If Response2 = vbNo Then
'
Sheets("Situation").Activate
numligne = ActiveSheet.Range("N__fiche").Row
numcolonne = ActiveSheet.Range("N__fiche").Column
'
fin2 = Cells(65536, numcolonne).End(xlUp).Row + 1
numos2 = "=Tableau!" & numtab
Cells(fin2, numcolonne).Value = numos2
Cells(fin2, numcolonne).Select
zlien = "Tableau!" & numtab
ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:=zlien

Cells(fin2, numcolonne).Offset(0, 1).Value = Worksheets("Saisie").Range("Lieu").Value
Cells(fin2, numcolonne).Offset(0, 2).Value = Worksheets("Saisie").Range("Achèvement").Value

'Sélection du format de la date
Cells(fin2, numcolonne).Offset(0, 3).NumberFormat = "[$-40C]mmm-yy;@"
Cells(fin2, numcolonne).Offset(0, 3).FormulaR1C1 = "=RC[-1]"
Cells(fin2, numcolonne).Offset(0, 7).FormulaR1C1 = "=SUM(RC[-3]:RC[-1])"

'
Sheets("Saisie").Activate
End If

j'ai récupéré en colonne 3 la valeur de la colonne 2 en y imposant un format. Dans mon TCD il ne prend que le format JJ/MM/AA car j'ai fait uné égalité et seulemen,t en changeant le format dans la colonne 3.
Mon TCD me prend donc à chaque fois la date de la colonne 2 et me classe mes données par date et non par mois.
Quelqu'un pourrait il me renseigner ?

Je vous remercie beaucoup.

Bonne journée à tous
@lain
 
D

Dan

Guest
Bonjour AlainM,

Oui, par défaut ton TCD va toujours prendre en compte la date dans ce format.
La solution consiste à grouper les données en plaçant ton pointeur de la souris sur le champ date puis clique droite et choisir l'option "grouper". Là choisir par "Mois", "année"...

Via macro cela pourrait donner ceci :

Selection.Group Start:=True, End:=True, Periods:=Array(False, False, False,False, True, False, False)
Selection.NumberFormat = "mmmm-yy"

Le mieux est d'utiliser l'enregistreur automatique et de corriger par la suite.

Bon travail

@+

Dan
 
A

AlainM

Guest
Bonjour Dan,

Merci pour l'ensemble de ces renseignements, je vais tester ca tout de suite et je te tiens au courant.

J'avais essayer déjà le click sur le champ j'avais du mal m'y prendre.

Encore merci.

Bon week end à tous
@lain
 
A

AlainM

Guest
Bonjour Dan, bonjour à tout le monde

Dan j'ai bien réussi à faire ce que tu m'as expliqué seulement il me colle un message comme quoi il ne peut pas prendre la sélection car j'ai quand même compris, pas tout de suits, mais j'ai compris : dans mon tableau je ne prends pas que des dates. Tans que mes travaux ne sont pas achevés je mets une étoile "*" et je remplace celle ci par la date réelle d'achèvement.
Il me faudrait trouver le moyen de remplacer cette étoile par quelque chose qui serait pris en compte dans le classement du tableau.

Merci de ton aide, le fait du clique droit sur le champ fonctionne parfaitement bien.

Bon week end à vous tous
@lain
 
D

Dan

Guest
Salut Alain,

Normal ce message puisque tu utilises ce signe * en lieu et place d'une date. Il serait mieux de ne rien mettre dans la colonne si tu n'as pas de date.

Une solution pour contourner cela serait par exemple de mettre une couleur si la cellule est vide. En utilisant une mise en forme conditionnelle, cela ne devrait pas poser de pb.

Dans l'attente de te lire

@+

Dan
 
A

AlainM

Guest
Bonjour tout le monde, bonjour Dan

En fait j'ai le problème de la sélection dans mon tableau dynamique, lorsque je clique à droite sur le champs Date il ne veut pas me prendre mon groupage car j'ai soit une *, soit 0/0/0 soit une cellule vide c'est pour celà que j'avais un peu essayer de trouver une solution de remplacement afin de pouvoir grouper les champs.
Mon idée était de supprimer des lignes, mais Celeda me dit que ce n'est pas judicieux et me propose de transformer mes valeurs en 1 pour janvier, 2 pour février, etc. ce qui pourrait me perrmettre de faire un classement par mois dans mon tableau croisé dynamique.
De ce fait l'ensemble de ces questions est un peu lié puisque ce sont des solutions que je recherche pour un même but.
J'avais ouvert un autre post car je ne voulais pas emmêler les choses mais je m'apperçois que c'est le contraire qui se produit :)
A la suite des conseils de Celeda et des tiens puisque l'ensemble est lié j'essaie en vain de tranformer ma saisie du chmaps date qui est sous la forme jj/mm/aaaa en numéro et je fais de la façon suivante :

If Range("Achèvement").Value >= "01/01/2004" And Range("Achèvement").Value <= "31/01/2004" Then
Cells(fin2, numcolonne).Offset(0, 3).Value = "janvier"
End If

et ainsi de suite jusqu'à Décembre. Mais lorsque je valide je retrouve dans ma cellule la valeur du dernier mois même si je saisis 10/01/2004 par exemple je vais me retrouver avec décembre ou 12 suivant que je mette le mois ou le numéro du mois.
Y a-t-il une possibilité d'extraire, dans cette cellule, colonne D de mon tableau uniquement le mois (01, 02, 03, 04, etc). je sais qu'avec les instruction mid on peut extraire a partir d'une position x caractères, mais je n'arrive pas à l'appliquer dans mon source !!! ;(

Désolé si j'ai été un peu long et aussi pour le malentendu.
Merci et bonne journée
@lain
 
C

Celeda

Guest
Bonjour,

Non Alain tu n'as pas crée de malentendu du tout et pour ma part tu as demandé deux actions différentes et maintenant comme tu continues dans ton développement tu en demandes une troisième distincte et qui vaudrait elle aussi la peine d'ouvrir un autre post puisque cela concerne un problème sur des dates en VBA (mais tu aurais pu aussi aller à la pêche et voir si en formule on était pas capable de ramener le mois aussi)
Donc pour ma part, il n'y a aucune confusion dans des deux posts.

Pour résumer tu avais ouvert ce post pour un problème de format de dates rencontré dans un TCD dans lequel effectivement il n'y avait pas que des dates et tu as eu des réponses. Cela n'a pas résolu le probléme.

Puis tu as ouvert le second Lien supprimé qui correspondait à un nouveau besoin compte tenu de ton cheminement qui lui aussi a évolué et normal puisque si tu ne peux résoudre le probléme 1 et bien tu l'as contourné. Et c'est ainsi que je l'ai compris.

Et maintenant tu progresses en cherchant à résoudre une autre énigme de format de date en VBA suite à l'évolution de ton nouveau besoin.

Et bien moi je trouve cela super car tu es un parfait exemple de celui qui essaye de solutionner son problème plutot que de pietinier et quand tu auras fini dans ta démarche tu auras permis d'engrenger pour les autres une solution prête à l'emploi pour tout le monde.Merci

Celeda

(et moi de mon côté je vais voir si on ne peut pas trouver un renvoi de date automatique en formule car je ne me suis pas penchée sur le probléme, je dois te l'avouer)
 
C

Celeda

Guest
Bonjour,

Alain : voila ce que je te propose en formule dans le fichier cijoint (Vba tu sais que c'est pas mon fort mais on devrait aussi y arriver) :

=SI(B2="0/0/0";14;SI(B2="*";13;SI(B2="";"";TEXTE(B2;"mm"))))

Je t'ai placé un vide pour faire un essai et si tu te trompes tu le verras de suite dans le TCD (tu pourras cacher aussi avec les filtres)

Celeda
 

Pièces jointes

  • Tableau-Alain-V3.zip
    26.9 KB · Affichages: 25
A

AlainM

Guest
re re c'est encore moi

Alors voilà Celeda, j'ai repris la formule que tu m'avais donnée et je l'ai rentrée avec le magnéto des macros et j'ai obtenu la formule suivante :

"=IF(RC[-1]=""0/0/0"",14,IF(RC[-1]=""*"",13,IF(RC[-1]="""","""",TEXT(RC[-1],""mm""))))"

Je l'ai inséré dans ma ligne de commande pour obtenir celà :

Cells(fin2, numcolonne).Offset(0, 3).FormulaR1C1 = "=IF(RC[-1]=""0/0/0"",14,IF(RC[-1]=""*"",13,IF(RC[-1]="""","""",TEXT(RC[-1],""mm""))))"

et maintenant à chaque fois que je valide j'ai le numéro du mois qui s'inscrit automatiquement dans la colonne et la cellule désirée.

Sans ta formule je n'y serais pas arrivé !!!
Merci et bonne soirée.
@lain
 
A

AlainM

Guest
Bonjour à tous, bonjour Celeda,

Merci pour tes renseignements, ils m'ont été très pratiques comme d'habitude.

J'ai en fait recopié ta formule dans la cellule qui contenait les mois sous la form mm.-aa, comme ca je n'ai pas de colonne supplémentaire et ce format de date ne m'est plus utile.

Tant mieux si je n'ai pas créé de confusion dans mes demandes, et surtout tant mieux si les explications qui ont été données gentiment par tous ont profitées aux personnes qui ont lu les posts.

Je vais opérer comme ca pour l'instant mais je pense que je vais continuer à chercher une formule dans une macro pour que les mois s'inscrivent automatiquement dans la colonne D.

Merci encore pour ton aide, et bien sur si tu trouves une formule avant moi tiens moi au courant :)

Bonne semaine
@lain
 
D

Dan

Guest
Salut Alain,

Non, il n'y a pas de confusion. Je me suis simplement demandé s'il s'agissait du même problème en voyant que tu parlais d'* et de date 0/0/0.

Mais comme tu l'expliques les deux sont liés.

Comme nous avons placés tous les deux des liens réciproques, le prochain forumeur qui viendra éventuellement te lire aura une solution globale.

Bonne journée

@+

Dan
 

Discussions similaires

Réponses
3
Affichages
346

Statistiques des forums

Discussions
312 213
Messages
2 086 302
Membres
103 174
dernier inscrit
OBUTT