Créer un tableau croisé dynamique sans chiffre

Résolu
kmile Messages postés 52 Statut Membre -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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.
    0
  2. kmile Messages postés 52 Statut Membre
     
    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 ...
    0
  3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    0
  4. kmile Messages postés 52 Statut Membre
     
    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
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    0
  7. kmile Messages postés 52 Statut Membre
     
    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
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
      0
    2. kmile Messages postés 52 Statut Membre
       
      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 ....
      0
    3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
      0
    4. kmile Messages postés 52 Statut Membre
       
      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 ??
      0
  8. kmile Messages postés 52 Statut Membre
     
    ça marche paaaaaaaaaaaaaaaaaaaas

    c'est dur excel ... ! Eric au secours !!!!! xD
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Dépose ton fichier (sans trop de données) sur cjoint.com

      eric
      0
  9. kmile Messages postés 52 Statut Membre
     
    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
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
      0
    3. kmile Messages postés 52 Statut Membre
       
      Est ce que je peux vous appeler, je pense que ça sera bcp plus simple..?

      CDC
      0
  10. kmile Messages postés 52 Statut Membre
     
    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 ....
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
      0
    2. kmile Messages postés 52 Statut Membre
       
      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
      0
    3. kmile Messages postés 52 Statut Membre
       
      ma première remarques est absolument fausse ..... le tableau se modifie parfaitement =D

      par contre ma deuixième question est tjs d'actualité ^^
      0
    4. kmile Messages postés 52 Statut Membre
       
      a quoi correspond A2 ? parceque lorsque il y a bien une formule pour A1 mais pas pour A2...
      0
    5. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
      0
  11. kmile Messages postés 52 Statut Membre
     
    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"
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
      0
    2. kmile Messages postés 52 Statut Membre
       
      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
      0
    3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
      0