Créer un tableau croisé dynamique sans chiffre [Résolu/Fermé]

Signaler
Messages postés
52
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 novembre 2014
-
Messages postés
23582
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 octobre 2020
-
Bonjour,

je suis en train de regrouper et décrire certaines procédures sur une feuille excel.
En effet, chaque client a ces propres procédures celà fait beaucoup de paprasse ce qui n'est pas très pratique ...

Mon idée est donc la suivante : créer une grande base de données et un tableau récapitulatif de celle-ci. Dans l'idéal mon tableau serait trié par clients et par procédures pour avoir quelque chose de propre et de facil à lire et n'aurait aucune case vide (ce qui n'est pas le cas dans ma base).
En gros il faudrait que mon tableau soit capable à partir d'un nom client de me proposer des procédures, et à la sélection d'une procédure de ne m'afficher que les colonnes qui y correspondent (et donc remplies de données fortes interessantes !)

Ce qui m'embête avec le filtre, c'est que mon tableau est pas mal large, et donc peu commode à lire ...
j'ai essayé de faire un tableau croisée dynamique, mais ça ne va pas car il tient absolument à me faire des sommes (hors je n'ai aucun calcul, c'est juste un tri de données..)

Je ne sais pas vraiment quoi faire .... Alors, si vous avez une idée n'hésitez pas !!!!

CDT


10 réponses

Messages postés
23582
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 octobre 2020
6 414
Bonjour,

Pour moi le TCD ne te sera d'aucun secours.

Ce qui m'embête avec le filtre, c'est que mon tableau est pas mal large, et donc peu commode à lire
Regarde cet exemple si ça t'inspire : https://www.cjoint.com/?BJsqQwXYabl

eric

PS: survoler la colonne C avec la souris

Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Messages postés
52
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 novembre 2014

salut éric

Je suis désolé mais ton fichier ne marche visiblement pas car lorsque je clique sur C le logiciel me demande de faire un deboggage ...
Messages postés
23582
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 octobre 2020
6 414
Re,

effectivement, j'ai fais une modif pour adapter un peu plus à ton cas mais je n'ai pas testé complètement avant de poster.
Version corrigée : https://www.cjoint.com/?BJsrHQb3sDI

eric
Messages postés
52
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 novembre 2014

Re !

Je crois que tu n'as pas compris mon problèmes
J'ai essayer de le reformuler sur le tableur si joint

lien: https://www.cjoint.com/?3JtiM7T8fuO

Camille
Messages postés
23582
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 octobre 2020
6 414
Bonjour,

Ca aurait pu être dû à des colonnes trop larges pour y afficher les données...

Tes cellules sont-elles être réellement vides ?
C'est à dire pas de '-' ni de formules retournant ""
Le code pourra être plus simple et plus rapide.

eric
Messages postés
23582
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 octobre 2020
6 414
Re,

j'avais un peu trop anticipé les restrictions, tu peux avoir dans les données des formules retournant "".

Proposition : https://www.cjoint.com/?BJtloZ2plsf

eric
Messages postés
52
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 novembre 2014

SUPER !!!!! en effet je peut essayer tous de suite cette sollution. Comment as-tu crée ta macro ??

les "-" ne sont absolument pas obligatoire si celà est possible.. et il n'y a aucune formule dans mon tableur.

camille
Messages postés
23582
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 octobre 2020
6 414
Re,

Comment as-tu crée ta macro ??
Avec mes petits doigts sur le clavier... Que dire d'autre ?

Le pb est qu'appliquer un filtre ne génère pas d'évènement interceptable.
D'où l'utilisation d'une formule en A1 et la détection du changement de filtre dans l'évènement Calculate.

eric
Messages postés
52
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 novembre 2014

FELICITATION A TES PETIT DOIGTS !!!
le problème c'est que je n'ai jamais travailler avec les macro (oui c'est un baptême ^^) je suis donc incapable de reproduire ton magnifique travail sur mon fichier ....
Messages postés
23582
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 octobre 2020
6 414
Tu verras, les macros décuples les possibilités (déjà vastes) d'excel.

Clic-droit sur la feuille, choisir 'visualiser le code'.
Tout copier et le coller dans le code de ta feuille concernée.

Pour ajouter un bouton ça dépend de ta version excel.
Sur 2003 : 'affichage / barre d'outils / boite à outils contrôle' (ou /formulaire)
Sur ma feuille : bouton activX de la 'boite à outils contrôle'.
Le nom de ton bouton (BtnAffTout dans ses propriétés) doit se retrouver dans le nom de la macro évènementielle : Private Sub BtnAffTout_Click()

eric
Messages postés
52
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 novembre 2014

j'ai copié les données de :
BJtloZ2plsf_masquercolonnesfiltrevide.xls - feuil1 (code)
sur ma page.
Cependant lorsque je lance ma macro rien ne se passe ... surement que le code a été écrit pour un certains nombres de colonnes ou quelque chose comme ça ...

Y-a-t-il qqc a modifier dans le code ? M'y suis-je bien prise ??
Messages postés
52
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 novembre 2014

ça marche paaaaaaaaaaaaaaaaaaaas

c'est dur excel ... ! Eric au secours !!!!! xD
Messages postés
23582
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 octobre 2020
6 414
Dépose ton fichier (sans trop de données) sur cjoint.com

eric
Messages postés
52
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 novembre 2014

voici mon tableau simplifié : https://www.cjoint.com/?BJwmdoXHFjg
le nombre de lignes, de colonnes et de feuilles sont non constantes.

merci encore pour votre aide
Messages postés
23582
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 octobre 2020
6 414
Bonjour,

Il fallait le dire que tu voulais traiter plusieurs feuilles. Ca change beaucoup de choses...

Est-ce qu'il y a quelque chose de constant qui permette de reconnaitre une feuille client d'une autre.
Par exemple une cellule contient une chaine particulière que tu ne retrouves pas sur les autres feuilles au même emplacement ?
Ou bien leur nom peut-il toujours commencer toujours par 2-3 lettres que n'auront pas les autres feuilles (par exemple c_client1)

eric
Messages postés
23582
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 octobre 2020
6 414
Re,

A la réflexion, comme A1 doit contenir la formule =SOUS.TOTAL(103;B:B) je me base dessus pour traiter la feuille.
Les macros sont dans ThisWorkbook.

https://www.cjoint.com/?BJwpLBg3dLn

eric
Messages postés
52
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 novembre 2014

Est ce que je peux vous appeler, je pense que ça sera bcp plus simple..?

CDC
Messages postés
52
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 novembre 2014

alors, jue ne comprend pas pourquoi ca ne marche pas.
j'ai copié collé les deux cellules rouge, j'ai copié/collé la macro de votre fichier soit :
Option Explicit

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Sh.[A1].FormulaLocal <> "=SOUS.TOTAL(103;B:B)" Then Exit Sub
Cancel = True
If Target.Column = 2 Then
On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
Else
End If
Application.EnableEvents = False
Columns.EntireColumn.Hidden = False
Application.EnableEvents = True
End Sub

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
If Left(Sh.Name, 2) <> "cl" Then Exit Sub
If [A1] <> [A2] Then
masquerColonnes
[A2] = [A1]
End If
End Sub

Sub masquerColonnes()
Dim dercol As Long, col As Long
Columns.EntireColumn.Hidden = False
dercol = Cells(1, Columns.Count).End(xlToLeft).Column
For col = 2 To dercol
If Application.WorksheetFunction.Subtotal(103, Columns(col)) = 1 Then Columns(col).EntireColumn.Hidden = True
Next col
End Sub

[je ne comprend absolument pas le code bien sur]
note sur ce code : lorsque je visualise le code, j'ai toujours wokbook_(le nom normal) alors que sur ton code il y a juste sheetcalculate par exemple
sur toutes mes autres feuilles j'ai écrit le code suivant :

Option Explicit

je peux lancer la macro mis rien ne se passe ....
Messages postés
23582
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 octobre 2020
6 414
Re,

j'ai copié/collé la macro de votre fichier

Dans thisworkbook ?

Tu m'as fourni un classeur exemple que j'ai adapté.
Ca ne serait pas plus simple que tu utilises celui-ci ?

eric
Messages postés
52
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 novembre 2014

Sauf que le classeur semble vérouiller. je ne peux plus rien modifier. (et il n'y a pas de protection à oter oO )

Autre question : la macro fonctionnera tjs si je rajoute des feuilles à mon classeur et des lignes à mes tableaux

CDC
Messages postés
52
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 novembre 2014

ma première remarques est absolument fausse ..... le tableau se modifie parfaitement =D

par contre ma deuixième question est tjs d'actualité ^^
Messages postés
52
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 novembre 2014

a quoi correspond A2 ? parceque lorsque il y a bien une formule pour A1 mais pas pour A2...
Messages postés
23582
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 octobre 2020
6 414
Bonjour,

Sauf que le classeur semble vérouiller. je ne peux plus rien modifier
Bizarrement j'ai eu la même chose à moment donné à partir d'un fichier en ligne (?)

Autre question : la macro fonctionnera tjs si je rajoute des feuilles à mon classeur et des lignes à mes tableaux
Oui dans les 2 cas.
Toutes les feuilles sont balayées, à partir du moment ou tu auras bien mis =SOUS.TOTAL(103;B:B) en A1 la feuille est traitée.

a quoi correspond A2 ?
La macro mémorise le nombre de lignes affichées.
A chaque recalcul de la feuille, si A1 <> A2 elle détecte que tu as appliqué un nouveau filtre et masque les colonnes vides.

eric
Messages postés
52
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 novembre 2014

TOUT FONCTIONNE SUPER !!!!!!!!!!!!

UN GRAND MERCI CAR CE N'ETAIT VRAIMENT PAS GAGNER D'AVANCE !!!!!

Cependant (et oui il fallait bien un "mais"), j'aurai une proposition d'amélioration :
-créer un bouton pour executer la macro "masquer colonne"
Messages postés
23582
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 octobre 2020
6 414
Re,

Pourquoi un bouton ? Tu veux pouvoir les remasquer après les avoir démasquées ?
Un bouton sera ch... à gérer sur les nouvelles feuilles.
Si tu veux je peux faire en sorte que le double-clic (ou un clic-droir si tu préfères) sur une caractéristique soit une bascule afficher/masquer.


eric
Messages postés
52
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 novembre 2014

j'ai reussi a créer un bouton (qu'il faut remettre sur chaque feuille mais ça marche).
C'est un tableau qui doit être utiliser en entreprise, il doit être simple à utiliser, le bouton est donc ce qui va le mieu.

Le tableau fonctionne nickel !! je te remercie pour ta patience.

si jamais je souhaite y faire des modif à l'avenir, je pourrais te contacter ?

CDC
Messages postés
23582
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 octobre 2020
6 414
Dans ce cas tu déposes une nouvelle question ici.
Si ce n'est pas moi ce sera un autre.
Par contre n'oublie pas de mettre un fichier exemple à chacune de tes demandes.

N'oublie pas de mettre en résolu ici (en haut vers ta question)

eric