Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

TCD tri alphabétique [XL2000] PJ Cjoint

5 réponses
Avatar
J
Bonjour michdenis
Je n'avais pas vu ton message du 13 déc. Excuses.
Ton code coince sous Excel 2000.
****
Set Pt = Pc.CreatePivotTable(TableDestination:=Range(Dest), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)

argument introuvable : DefaultVersion en gras
****

Voici mon fichier (réduit) sur Cjoint, précisant le problème.
En fiat ce n'est pas un tri alphabétique, mais dans l'ordre des mois de
l'année.

http://cjoint.com/?0msvUkxOPIK

Merci pour ton aide
@+
J@@


Le 13/12/2010 00:48, michdenis a écrit :
> Je t'ai mis un fichier exemple pour que tu puisses tester si le
> code est pertinent sous une version Excel 2000
>
> http://cjoint.com/?0mmnLc5eU6X
>
> Dans l'affirmative, si tu pouvais publier une partie de ton
> fichier en utilisant cijoint.fr , cela aiderait grandement pour
> voir ce qui se passe.
>
>
> MichD
> --------------------------------------------
> "J@@" a écrit dans le message de groupe de discussion :
ie1jpe$909$1@speranza.aioe.org...
>
> Re-bonjour
> J'ai une erreur 1004:
> "Impossible de déterminer le champ du TCD sur lequel le tri doit être
> effectué."
>
> With ActiveSheet.PivotTables("Analyse_GA").PivotFields("GA.Mois")
> .Orientation = xlRowField
> .Position = 2
> .LabelRange.Sort Key1:=.LabelRange.Item(1, 1), order1:=xlAscending
> End With
>
> As-tu une idée?
> merci
> @+
> J@@
>
>
> Le 11/12/2010 15:44, michdenis a écrit :
>> .LabelRange.Sort Key1:=.LabelRange.Item(1, 1), order1:=xlAscending

5 réponses

Avatar
michdenis
Bonjour,

================================= Ton code coince sous Excel 2000.
****
Set Pt = Pc.CreatePivotTable(TableDestination:=Range(Dest), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)
================================= **** Exécuter comme tel, c'est assez évident à cause de ceci :
DefaultVersion:=xlPivotTableVersion10
Sous Excel 2000, la version est sûrement différente de "xPivotTableVersion10"

**** J'ai modifié l'emplacement du code pour effectuer le tri...il faut s'assurer que
le DC est construit avant d'effectuer un tri.

**** Dans la feuille "AuxFeuil", j'ai modifié le champ GA.MOIS en format date.
Le résultat c'est que chaque cellule représente le "premier" jour du mois
et de l'année indiquée. Ce cette manière, tu peux faire un tri croissant ou
décroissant, car le "contenu" des cellules est "numérique" et non pas "texte"

Le code proposé dans ton fichier retour fonctionne très bien avec Excel 2003 et 2007.

http://cjoint.com/?0mtoVcwtOYw


MichD
--------------------------------------------
"J@@" a écrit dans le message de groupe de discussion : ieja8r$ldb$

Bonjour michdenis
Je n'avais pas vu ton message du 13 déc. Excuses.
Ton code coince sous Excel 2000.
****
Set Pt = Pc.CreatePivotTable(TableDestination:=Range(Dest), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)

argument introuvable : DefaultVersion en gras
****

Voici mon fichier (réduit) sur Cjoint, précisant le problème.
En fiat ce n'est pas un tri alphabétique, mais dans l'ordre des mois de
l'année.

http://cjoint.com/?0msvUkxOPIK

Merci pour ton aide
@+
J@@


Le 13/12/2010 00:48, michdenis a écrit :
Je t'ai mis un fichier exemple pour que tu puisses tester si le
code est pertinent sous une version Excel 2000

http://cjoint.com/?0mmnLc5eU6X

Dans l'affirmative, si tu pouvais publier une partie de ton
fichier en utilisant cijoint.fr , cela aiderait grandement pour
voir ce qui se passe.


MichD
--------------------------------------------
"J@@" a écrit dans le message de groupe de discussion :


ie1jpe$909$

Re-bonjour
J'ai une erreur 1004:
"Impossible de déterminer le champ du TCD sur lequel le tri doit être
effectué."

With ActiveSheet.PivotTables("Analyse_GA").PivotFields("GA.Mois")
.Orientation = xlRowField
.Position = 2
.LabelRange.Sort Key1:=.LabelRange.Item(1, 1), order1:=xlAscending
End With

As-tu une idée?
merci
@+
J@@


Le 11/12/2010 15:44, michdenis a écrit :
.LabelRange.Sort Key1:=.LabelRange.Item(1, 1), order1:=xlAscending
Avatar
J
Bonjour michdenis
et merci
Cela marche parfaitement sous Excel 2000 aussi.
La solution était bien de passer le champ GA.mois au format date;
Encore merci.

Désolé pour l'ouverture d'un nouveau fil.
J'ai pensé que l'affaire était déjà ancienne, disparue au tréfonds du forum.

@+
J@@


Le 19/12/2010 03:56, michdenis a écrit :
Bonjour,

================================= > Ton code coince sous Excel 2000.
****
Set Pt = Pc.CreatePivotTable(TableDestination:=Range(Dest), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)
================================= > **** Exécuter comme tel, c'est assez évident à cause de ceci :
DefaultVersion:=xlPivotTableVersion10
Sous Excel 2000, la version est sûrement différente de "xPivotTableVersion10"

**** J'ai modifié l'emplacement du code pour effectuer le tri...il faut s'assurer que
le DC est construit avant d'effectuer un tri.

**** Dans la feuille "AuxFeuil", j'ai modifié le champ GA.MOIS en format date.
Le résultat c'est que chaque cellule représente le "premier" jour du mois
et de l'année indiquée. Ce cette manière, tu peux faire un tri croissant ou
décroissant, car le "contenu" des cellules est "numérique" et non pas "texte"

Le code proposé dans ton fichier retour fonctionne très bien avec Excel 2003 et 2007.

http://cjoint.com/?0mtoVcwtOYw


MichD
--------------------------------------------
"J@@" a écrit dans le message de groupe de discussion : ieja8r$ldb$

Bonjour michdenis
Je n'avais pas vu ton message du 13 déc. Excuses.
Ton code coince sous Excel 2000.
****
Set Pt = Pc.CreatePivotTable(TableDestination:=Range(Dest), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)

argument introuvable : DefaultVersion en gras
****

Voici mon fichier (réduit) sur Cjoint, précisant le problème.
En fiat ce n'est pas un tri alphabétique, mais dans l'ordre des mois de
l'année.

http://cjoint.com/?0msvUkxOPIK

Merci pour ton aide
@+
J@@


Le 13/12/2010 00:48, michdenis a écrit :
Je t'ai mis un fichier exemple pour que tu puisses tester si le
code est pertinent sous une version Excel 2000

http://cjoint.com/?0mmnLc5eU6X

Dans l'affirmative, si tu pouvais publier une partie de ton
fichier en utilisant cijoint.fr , cela aiderait grandement pour
voir ce qui se passe.


MichD
--------------------------------------------
"J@@" a écrit dans le message de groupe de discussion :


ie1jpe$909$

Re-bonjour
J'ai une erreur 1004:
"Impossible de déterminer le champ du TCD sur lequel le tri doit être
effectué."

With ActiveSheet.PivotTables("Analyse_GA").PivotFields("GA.Mois")
.Orientation = xlRowField
.Position = 2
.LabelRange.Sort Key1:=.LabelRange.Item(1, 1), order1:=xlAscending
End With

As-tu une idée?
merci
@+
J@@


Le 11/12/2010 15:44, michdenis a écrit :
.LabelRange.Sort Key1:=.LabelRange.Item(1, 1), order1:=xlAscending





Avatar
J
Bonjour
Pour passer du format texte (mois) en format numérique, l'enregistreur
me donne :

'****
Range("H1").Select 'H1 contient le chiffre 1
Selection.Copy
Range("D2:D10").Select
Range("D10").Activate
Selection.PasteSpecial Paste:=xlAll, Operation:=xlMultiply, SkipBlanks:= _
False, Transpose:úlse
'****
Mais quand ensuite je lance ce code, sans aucune modification, il ne se
passe rien, que je le lance depuis VBE ou depuis la feuille concernée.

Quelle bêtise ai-je encore faite??
Merci pour l'aide
J@@


Le 19/12/2010 06:26, J@@ a écrit :
Cela marche parfaitement sous Excel 2000 aussi.
La solution était bien de passer le champ GA.mois au format date;

Le 19/12/2010 03:56, michdenis a écrit :

**** Dans la feuille "AuxFeuil", j'ai modifié le champ GA.MOIS en
format date.
Le résultat c'est que chaque cellule représente le "premier" jour du mois
et de l'année indiquée. Ce cette manière, tu peux faire un tri
croissant ou
décroissant, car le "contenu" des cellules est "numérique" et non pas
"texte"

Le code proposé dans ton fichier retour fonctionne très bien avec
Excel 2003 et 2007.

http://cjoint.com/?0mtoVcwtOYw

MichD
Avatar
michdenis
Bonjour,

Une des nombreuses particularités d'Excel, lorsqu'il s'agit de date.

Explication sommaire : Lorsque tu exécutes la séquence de ta procédure
en vba, tous savent qu'en vba cela se passe en anglais à la sauce
américaine. Le hic, c'est que le contenu des cellules (nom des mois)
est écrit en français donc indéchiffrable par l'interface VBA. Quand tu
exécutes la séquence via l'interface de calcul, Excel utilise les paramètres
régionaux et il s'adapte et il est à même de comprendre ce que tu tentes
de faire et il s'exécute sans problème !

Dans ce cas précis, on peut alors employer la commande "Sendkeys" pour
simuler une série de commandes que l'usager ferait via l'interface de calcul.
Et là, Excel comprend de toi tu parles et il fait le boulot. Je ne comprends
pas que tu n'as pas saisi tout de suite ce qui se passait... ;-)))

La procédure suivante doit être exécutée à partir de l'interface de la
feuille de calcul soit par un bouton de commande ou par la fenêtre
où sont listées les macros.

'-------------------------------------------
Sub Tester_Excel_2003_Français()
'Tu adaptes le nom de la feuille
With Worksheets("Feuil1")
.Select
'Tu places 1 dans une cellule de ton choix
.Range("H1") = 1
With .Range("D1:D" & .Range("D65536").End(xlUp).Row)
.NumberFormat = "MMMM-YYYY"
.Select
End With
.Range("G1").Copy
'Séquence des commandes que tu ferais
'si tu utilisais les lettres du menu pour
'effectuer le collage special
SendKeys "%egvm" & "~"
DoEvents
.Range("H1") = ""
.Range("D1").Select
End With
Application.CutCopyMode = False
End Sub
'-------------------------------------------

MichD
--------------------------------------------
"J@@" a écrit dans le message de groupe de discussion : iem7qm$2na$

Bonjour
Pour passer du format texte (mois) en format numérique, l'enregistreur
me donne :

'****
Range("H1").Select 'H1 contient le chiffre 1
Selection.Copy
Range("D2:D10").Select
Range("D10").Activate
Selection.PasteSpecial Paste:=xlAll, Operation:=xlMultiply, SkipBlanks:= _
False, Transpose:úlse
'****
Mais quand ensuite je lance ce code, sans aucune modification, il ne se
passe rien, que je le lance depuis VBE ou depuis la feuille concernée.

Quelle bêtise ai-je encore faite??
Merci pour l'aide
J@@


Le 19/12/2010 06:26, J@@ a écrit :
Cela marche parfaitement sous Excel 2000 aussi.
La solution était bien de passer le champ GA.mois au format date;

Le 19/12/2010 03:56, michdenis a écrit :

**** Dans la feuille "AuxFeuil", j'ai modifié le champ GA.MOIS en
format date.
Le résultat c'est que chaque cellule représente le "premier" jour du mois
et de l'année indiquée. Ce cette manière, tu peux faire un tri
croissant ou
décroissant, car le "contenu" des cellules est "numérique" et non pas
"texte"

Le code proposé dans ton fichier retour fonctionne très bien avec
Excel 2003 et 2007.

http://cjoint.com/?0mtoVcwtOYw

MichD
Avatar
J
Bonjour michdenis
Il y a des pièges partout !!!
Comme tu dis, très évident ;-)
Merci
@+
J@@

Le 19/12/2010 17:58, michdenis a écrit :
Bonjour,

Une des nombreuses particularités d'Excel, lorsqu'il s'agit de date.

Explication sommaire : Lorsque tu exécutes la séquence de ta procédure
en vba, tous savent qu'en vba cela se passe en anglais à la sauce
américaine. Le hic, c'est que le contenu des cellules (nom des mois)
est écrit en français donc indéchiffrable par l'interface VBA. Quand tu
exécutes la séquence via l'interface de calcul, Excel utilise les paramètres
régionaux et il s'adapte et il est à même de comprendre ce que tu tentes
de faire et il s'exécute sans problème !

Dans ce cas précis, on peut alors employer la commande "Sendkeys" pour
simuler une série de commandes que l'usager ferait via l'interface de calcul.
Et là, Excel comprend de toi tu parles et il fait le boulot. Je ne comprends
pas que tu n'as pas saisi tout de suite ce qui se passait... ;-)))

La procédure suivante doit être exécutée à partir de l'interface de la
feuille de calcul soit par un bouton de commande ou par la fenêtre
où sont listées les macros.

'-------------------------------------------
Sub Tester_Excel_2003_Français()
'Tu adaptes le nom de la feuille
With Worksheets("Feuil1")
.Select
'Tu places 1 dans une cellule de ton choix
.Range("H1") = 1
With .Range("D1:D"& .Range("D65536").End(xlUp).Row)
.NumberFormat = "MMMM-YYYY"
.Select
End With
.Range("G1").Copy
'Séquence des commandes que tu ferais
'si tu utilisais les lettres du menu pour
'effectuer le collage special
SendKeys "%egvm"& "~"
DoEvents
.Range("H1") = ""
.Range("D1").Select
End With
Application.CutCopyMode = False
End Sub
'-------------------------------------------

MichD
--------------------------------------------
"J@@" a écrit