Tri et actualisation auto d'un TCD

Kiriko

XLDnaute Occasionnel
Tri et actualisation auto d'un TCD [Résolu]

Bonjour,
Je me tourne vers vous, car malgré les nombreux posts traitant du sujet, et ayant l'impression d'avoir bien suivi les instructions, je n'y arrive pas. Voici la situation.
Mon but étant d'actualiser (l'ensemble) et de trier automatiquement (sur une colonne déterminée qui n'est pas la première) un TCD à l'ouverture de l'onglet. J'ai bien trouvé la méthode pour l'actualisation automatique (saisir :
Private Sub Worksheet_Activate()
ThisWorkbook.RefreshAll
End Sub

dans la source de la page, mais pour la fonction trier, avant même de chercher à l'automatiser, je n'y arrive pas "à la main". Le tri s'obstine à rester uniquement sur la première colonne, quoique je fasse... Je tourne en rond sur ce problème qui est sans doute très bête (une option "cachée"??) depuis 2 jours et je deviens fou.... Auriez-vous une idée sur mon erreur potentielle ? Une fois cela résolu, comment automatiser ce tri à l'ouverture de l'onglet (rajouter un code dans la source de la page?). Je joins un extrait du fichier en exemple...

Merci d'avance...
 

Pièces jointes

  • Essai tri TCD par nom.zip
    28.1 KB · Affichages: 90
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : Tri et actualisation auto d'un TCD

Bonjour à tous,

Pour l'actualisation :

Code:
Private Sub Worksheet_Activate()
ActiveWorkbook.RefreshAll
End Sub
Il faut redéfinir ta plage =tablo qui est défini en =tabl

Pour le tri : il se fait sur la première colonne donc déplace la colonne à trier en première position avec la souris en te positionnant sur MAT et en le ramenant en première colonne

Par VBA et InputBox:
Code:
Private Sub Worksheet_Activate()
Dim Choix As String
Choix = InputBox("Choisir : N° Enq, Mat, NOM, PRENOM", "Choisir le champ de tri", "N° Enq")
ActiveWorkbook.RefreshAll
On Error Resume Next
With ActiveSheet.PivotTables("monTCD").PivotFields(Choix)
        .Orientation = xlRowField
        .Position = 1
End With
End Sub
A+ à tous
 
Dernière édition:

Kiriko

XLDnaute Occasionnel
Re : Tri et actualisation auto d'un TCD

Bonjour JCGL et merci de ta réponse rapide.
Mon problème était justement de faire un tri sur une colonne qui n'est pas et ne doit pas être en premier. N'y a t'il aucun moyen autre que recopier les valeurs de ce tableau dans un autre onglet et de le trier à ce moment là?
Comment adapter la formule de tri proposée sur un onglet sans TCD afin de trier automatiquement la colonne B puis C par exemple ?

Sinon, pour info, l'utilisation de =tabl au lieu de =tablo dans mon fichier était un moyen alambiqué de me servir de la fonction "décaler" (je n'ai pas réussi à utiliser directement "décaler" dans la définition des plages du TCD) afin de définir "dynamiquement" ma plage, à laquelle je peux être amené à rajouter des lignes et colonnes, mais surtout, ou je veux conserver mes lignes de calculs (séparées par une ligne vide) en bas de "Heures enquêteurs"...
 

JCGL

XLDnaute Barbatruc
Re : Tri et actualisation auto d'un TCD

Bonjour à tous,

Bonjour JCGL et merci de ta réponse rapide.
Mon problème était justement de faire un tri sur une colonne qui n'est pas et ne doit pas être en premier. N'y a t'il aucun moyen autre que recopier les valeurs de ce tableau dans un autre onglet et de le trier à ce moment là?
Comment adapter la formule de tri proposée sur un onglet sans TCD afin de trier automatiquement la colonne B puis C par exemple ?

Il me semble que la méthode donnée n'est pas très contraignante : tu déplaces le champ de lignes que tu souhaites trier... ou tu inclues le bout de code déposé (dans le code la feuille du TCD

Sinon, pour info, l'utilisation de =tabl au lieu de =tablo dans mon fichier était un moyen alambiqué de me servir de la fonction "décaler" (je n'ai pas réussi à utiliser directement "décaler" dans la définition des plages du TCD) afin de définir "dynamiquement" ma plage, à laquelle je peux être amené à rajouter des lignes et colonnes, mais surtout, ou je veux conserver mes lignes de calculs (séparées par une ligne vide) en bas de "Heures enquêteurs"...

Entièrement d'accord mais dans ce ne fait pas appel à tablo comme source du TCD alors que le nom défini n'existe pas...
Pour tes lignes de calculs, je te conseille de les placer au dessus de ton tableau

A+ à tous
 

Kiriko

XLDnaute Occasionnel
Re : Tri et actualisation auto d'un TCD

Bonjour à tous,



Il me semble que la méthode donnée n'est pas très contraignante : tu déplaces le champ de lignes que tu souhaites trier... ou tu inclues le bout de code déposé (dans le code la feuille du TCD

Je suis désolé, je ne comprends pas, ou mal : Mon besoin est d'avoir un tableau où les deux premières colonnes sont impérativement "Enq" et "Mat", mais que ce tableau soit trier par "Nom". Et lorsque je rentre le bout de code, il ne se passe rien (à part une erreur due au "nom ambigue").

Ceci mis à part, je serais également intéressé par le code permettant de trier automatiquement dans un onglet sans TCD les colonnes B et C par exemple....

Entièrement d'accord mais dans ce ne fait pas appel à tablo comme source du TCD alors que le nom défini n'existe pas...
Je ne comprends pas non plus, je trouve bien, dans "gestionaire de noms", tab et tablo !!

Désolé si je suis long à la comprenette, je suis un grand débutant qui essaye de comprendre.....
Merci de ta patience en tout cas...
 
Dernière édition:

chris

XLDnaute Barbatruc
Re : Tri et actualisation auto d'un TCD

Bonjour

Dans les TCD la hiérarchie prime sur le tri.

Si tu mets une colonne en premier et une autre en 3ème : elle se trie mais dans le sous ensemble de la colonne 1.

Il semble que Enq et mat et nom et prénom concernent une seule et même personne donc si c'est la cas il n'y a pas de réelle hirarchie

Donc sauf à ajouter une colonne avant Enq pour tricher ... ou bien effectuer un tri manuel (via VBA)...
 
Dernière édition:

chris

XLDnaute Barbatruc
Re : Tri et actualisation auto d'un TCD

Re

Vérification faite le tri manuel ne peut être fait que sur les données par les champs de colonne. C'est vrai que ce ne serait pas logique.

Donc ne reste que l'ajout d'une colonne : dans les données sources =NON&PRENOM

à placer en 1ère colonne de ton TCD et à masquer : sous réserve qu'effectivement il y est bien 1 seule et même personne derrière ENQ MAT NOM PRENOM
 

Kiriko

XLDnaute Occasionnel
Re : Tri et actualisation auto d'un TCD

Merci Chris, mais ça ne marche pas. J'obtiens le message :
"Impossible de déplacer une partie d'un rapport de tableau croisé dynamique ou d'insérer des cellules, des lignes ou des colonnes d'une feuille de calcul dans un rapport de tableau croisé dynamique."
Je pense qu'il ne me reste plus qu'à créer un nouvel onglet qui copie les valeurs du TCD et là, ça sera plus "souple". Me reste à trouver le code pour trier automatiquement les colonnes souhaitées.... A votre bon coeur..

Merci..
 

Kiriko

XLDnaute Occasionnel
Re : Tri et actualisation auto d'un TCD

Merci JCGL, ça marche assez bien en effet.
Je n'ai pas réussi à adapter tes codes pour que l'ensemble d'un onglet (quelque soit la taille de la plage) se tri automatiquement à son ouverture sur la colonne C par exemple, mais sans choix, ni interface, uniquement en sélectionnant l'onglet....
Merci d'avance...
 

JCGL

XLDnaute Barbatruc
Re : Tri et actualisation auto d'un TCD

Bonjour à tous,

Ajout de :

Code:
Private Sub Worksheet_Activate()
Dim DerL As Long
DerL = Feuil3.Range("L1")
Feuil3.Range("A1:I" & DerL).Sort Key1:=Range("C2"), Order1:=xlAscending, Header:=xlGuess
Range("J1").Select
End Sub

Dans le code la feuille

A+ à tous
 

Pièces jointes

  • JC V2 Essai Trii TCD et Tableau.xls
    173.5 KB · Affichages: 105

Kiriko

XLDnaute Occasionnel
Re : Tri et actualisation auto d'un TCD

Merci bien, JCGL, mais j'ai dû mal m'expliquer.
On y est presque si tu as encore la patience de me supporter . Je reformule :
Mon souhait :
Je prends un classeur tout neuf, complètement vierge de tout code. Dans un onglet, je rempli un tableau, qui a une taille non définie, qui peut variée.
Je souhaite rentrer un code sur cet onglet qui me permette, automatiquement à chaque ouverture de cet onglet de trier l'ensemble de tout ce qu'il y a sur cet onglet (quelque soit la taille donc) sur le critère alphabétique de la colonne C. Tous les éléments que tu m'as donné permettent certainement de retrouver la méthode pour arriver à ceci, mais je n'ai pas trouvé...

Cordialement.
 

chris

XLDnaute Barbatruc
Re : Tri et actualisation auto d'un TCD

Bonjour
Bise à JCGL

Merci Chris, mais ça ne marche pas. J'obtiens le message :
"Impossible de déplacer une partie d'un rapport de tableau croisé dynamique ou d'insérer des cellules, des lignes ou des colonnes d'une feuille de calcul dans un rapport de tableau croisé dynamique."

Partant du classeur de JC (je n'ai pas touché au code) j'ai ajouté une colonne dans le tableau source, modifié la définition du nom source du TCD pour inclure cette colonne qui peut être masquée après avoir tiré la formule assez bas, ajouté cette colonne dans le tcd : étant la 1ère elle permet de trier le TCD comme tu le veux et peut aussi être masquée.
 

Pièces jointes

  • TCD_JC_Chris.zip
    38.5 KB · Affichages: 58

JCGL

XLDnaute Barbatruc
Re : Tri et actualisation auto d'un TCD

Bonjour à tous,

Utilise le code donné précédemment...

Si tu n'y arrives pas, dépose un classeur avec deux feuilles :


  • tes données sur une feuille
  • une feuille vierge pour la deuxième

A+ à tous

Edition : Bises à Chris :)
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 653
Messages
2 111 579
Membres
111 207
dernier inscrit
max008