Macro affichage en fonction de liste déroulante

Bonjour à tous !

Ayant déjà pu résoudre mes petits problèmes de macro sur ce forum, je me permets de revenir aujourd’hui pour un nouveau problème, tout frais, en ce lundi matin !

Voilà mon problème (simplifié à l’extrême) : mon fichier de travail comporte de très nombreuses colonnes, et je voudrais faire en sorte qu’en fonction de ce que je choisi dans une liste de choix, certaines colonnes soient affichées et d’autres masquées. J'ai cherché pas mal ce week-end, et j'ai encore rien réussi à faire...

J’ai créé un petit fichier pour que vous puissiez bien comprendre ce que je souhaite faire… j'y ai mis une liste déroulante, et au moment d'affecter la macro je bloque à l'étape suivante :

Sub Zonecombinée1_QuandChangement()

End Sub

J’ai déjà réalisé, plus tôt dans mon ‘projet’ des boutons qui réalisent ce que je veux, mais je ne peux pas me permettre d'avoir 40 boutons... Du coup, j’ai déjà les « lignes » qui vont bien pour faire ce que je veux, mais je ne sais pas comment les intégrer...

Range("E:BE").EntireColumn.Hidden = False
Range("A:D").EntireColumn.Hidden = True

Merci d’avance au(x) forumer(s) qui vont me sortir de là !

Et bonne journée !

838prob-mareelo54.xlsm (16.86 Ko)

Bonjour,

Une solution

2'154prob-mareelo54.xlsm (20.04 Ko)

A+

Merci pour la rapidité de réponse !

Mais... je n'arrive pas à comprendre comment tu as fait...

Dans vba je vois ça :

Private Sub ComboBox1_Change()
Dim Cel As Range
    Application.ScreenUpdating = False
    Cells.EntireColumn.Hidden = False
    If ComboBox1.Value <> "Tous" Then
        For Each Cel In Range("En_tete")
            If Cel.Value <> ComboBox1.Value Then Cel.EntireColumn.Hidden = True
        Next Cel
    End If
End Sub

et je n'arrive pas à situer où tu as pu déterminer quelles colonnes masquer... Il y a une histoire de combobox, animal que je n'ai jamais croisé jusqu'ici... Pourrais-tu me donner quelques explications supplémentaires ?

Merci d'avance

je n'arrive pas à situer où tu as pu déterminer quelles colonnes masquer... Il y a une histoire de combobox, animal que je n'ai jamais croisé jusqu'ici... Pourrais-tu me donner quelques explications supplémentaires ?

Le contrôle utilisé (ComboBox =Zone de liste modifiable) est contrôle ActiveX qui permet de créer une liste de choix dans un menu déroulant. Tu peux le visualiser en cliquant sur Contrôles / Inserer / Contrôles ActiveX. La liste est alimentée avec la propriété ListFillRange de la ComboBox en faisant référence à la plage A1:A3 de la feuille "Base".

La plage contenant les en-têtes (Audit A ... Audit B) a été nommée "En_tete" et correspond à la plage Feuil1!$E$7:$J$7.

Le programme balaye cette plage "En_tete" et cache toutes les colonnes dont l’en-tête ne correspond pas au nom sélectionné dans la ComboBox.

En espérant que ces quelques explications t’aideront à apprivoiser la bête .

Cordialement.

Génial merci !!

Je n'ai pas le temps de me plonger dedans tout de suite, mais je pense avoir compris d'où vient mon incompréhension : j'ai trop simplifié mon fichier et du coup le nom de mes colonnes sont tous différents... Mais je vais me débrouiller ça devrait aller !

Par contre, je comptais faire la même chose pour l'impression de mes tableaux... J'avais créé dans mon fichier de travail des boutons permettant l'impression de tableaux avec les colonnes que je souhaite, avec mise en forme, zoom et compagnie.

Aurais-tu une solution pour avoir le même schéma tout en pouvant indiquer clairement les colonnes que je souhaite imprimer ? Par exemple si je veux imprimer la partie audit A, mais aussi toutes les colonnes à gauche... ? Ci-après un exemple de macro que j'avais créée, si ça peux donner de l'inspiration...

Private Sub Bouton_impression_VR_Click()

Rows("1:28").Hidden = True
Range("E:BE").EntireColumn.Hidden = False
Range("A:D").EntireColumn.Hidden = True

  With ActiveSheet
    .Columns("S:BE").Hidden = True
    .PageSetup.PrintArea = .Range("E29:R" & .Range("E" & Rows.Count).End(xlUp).Row).Address
    .PageSetup.Orientation = xlLandscape
    .PrintPreview
    .Columns.Hidden = False
  End With

Merci encore pour ton aide, je vais regarder tout ça cette après-midi et je reviens pour dire que j'ai réussi (j'espère !)

Bon... fausse joie...

En fait mon fichier de travail est trop complexe, et je n'arrive pas à adapter ta solution à mon fichier... j'ai plus d'une centaine de colonnes avec des noms différents, et la combobox ne se laisse pas apprivoiser comme je le voudrais...

Je vais reformuler mon problème, histoire de régler ce problème rapidement, si c'est possible.

Comment faire pour, à partir d'une liste déroulante, associer une macro à chaque choix ? Par exemple "Choix 1" qui me lance la macro 1, etc... Quitte à mettre quelque chose du genre :

Sub "Liste de choix"

If "Choix1" Then

Macro1

Macro1

End If

If "Choix2" Then

Macro2

Macro2

End If

End Sub

Je ne suis pas sûre des termes utilisés, mais j'espère que quelqu'un sur ce forum a compris....

Merci d'avance !

Si tu souhaites régler ce problème rapidement, tu as plutôt intérêt à poster un fichier qui soit représentatif de la réalité et expliquer quel est le résultat que tu souhaites obtenir.

La solution avec une macro distincte pour chaque choix me parait très risquée si tu dois effectuer une sélection parmi une centaine de colonnes avec des noms différents.

A+

Rebonjour,

J'ai créé un nouveau fichier simplifié qui représente plus fidèlement mon fichier de travail. J'ai indiqué en haut du tableau ce que je souhaite avoir comme résultat (colonnes à afficher ou à imprimer)

Les groupes de colonnes "Audit" sont tous identiques, (sauf le tout premier "audit service qualité"), et se répètent une bonne vingtaine de fois à la suite. Dans ce fichier j'ai tout allégé, mais sur la forme c'est strictement la même chose.

Pour ce qui est d'une macro distincte je l'ai déjà fait... Quand mon tableau ne contenait qu'une cinquantaine de colonnes j'avais créé des boutons et des macros qui faisaient ce que je voulais. La je n'aurai que des noms de colonnes à modifier pour chaque macro, que ce soit affichage ou impression, et j'ai encore un peu de temps devant moi pour le faire... Et comme la combobox reste un mystère pour moi, je préférerai si c'est possible rester sur mon idée de macros distinctes...

Cela paraît plus clair ? C'est vrai que j'ai essayé de simplifier mon problème au maximum et finalement ça m'a joué des tours...

668prob-mareelo2.xlsx (10.60 Ko)

Plus personne ?

Je pensais avoir bien expliqué pourtant

Re-bonjour,

Je trouve dommage que tu envisages de te priver de la ComboBox avec les fonctionnalités associées car elle semble répondre parfaitement à ton projet.

Regarde le résultat avec une liste de choix possibles.

1'674prob-mareelo2.xlsm (42.21 Ko)

A+

Bonjour,

je déterre ce poste car je cherche a faire un tri similaire, mais en ligne.

je n y connais rien en VBA, donc si vous avez une solution pour moi, donnez des explications pour que je puisse me l'approprier.

grand merci par avance.

PS: je souhaite isoler chaque "machine" (grinding, sheeter ...)en fonction du choix dans le menu déroulant. simple pour beaucoup, mais hors de porté pour moi.!

55classeur1.xlsx (11.07 Ko)

Bonjour,

Ton fichier en retour

154classeur1.xlsm (24.14 Ko)

Il aurait été plus correct de créer un nouveau sujet

D'un autre coté, puisque Mareelo54 n'a pas pris la peine de répondre, il ne s'offusquera pas d'un post parasite

A+

tres fort!

merci bien ^^

je vais tenter de l'intégrer dans mon tableau ^^

Rechercher des sujets similaires à "macro affichage fonction liste deroulante"