Panneau de commande pour masquer des colonnes

Bonjour à tous

Avant tout, merci pour le temps que vous m'accorderez

Voici ce dont j'aurai besoin :

J'ai un fichier excel, avec deux onglets qui représentent deux bases de données de deux sites industriels (construit exactement de la même façon), il s'agit donc de faire deux fois la même manip

J'aimerai avoir pour les onglets ou sont répertorié mes données, un second onglet avec une boite de dialogue qui me propose plusieurs choix, et dont je ne pourrai en cocher qu'un seul à la fois. Selon le choix coché, n’apparaîtront sur l'onglet de données, seulement une partie des colonnes qui existe

Les colonnes qui devront apparaître seront toujours les mêmes selon ce qui sera coché dans la boite de dialogue

Ainsi, la base de données étant assez lourde (colonne de A jusque BJ), cela me permettra de n'avoir que les données concernées selon ce que j'aurai coché, et ainsi me permettre de faire des modèle d’impression moins lourds !

Ca, c'est dans un premier temps

Dans un second, je voudrai que le dernier choix proposé dans la boite de dialogue, ne me fasse pas apparaître toutes les lignes (alors que les autres choix doivent toutes les faire apparaître), mais seulement les lignes ou un "x" apparaitra en colonne B

Est-ce possible selon vous ? Car de mon coté, je n'ai aucune connaissance en VBA !

Dans le cas ou ce serait possible, je vous prépare les colonnes à faire apparaître selon le choix coché

En vous remerciant par avance !

Bonsoir JuLhot et le forum

Sans fichier joint ce n'est pas facile.

En toute modestie un essai. Bien entendu à adapter.

Cdt

Henri

15test-julhot.xlsm (26.15 Ko)

Bonjour Henri

Merci beaucoup pour ta réponse, c'est un très bon début de ce que je recherche à faire

Je voudrai cependant ne pas donner le choix des colonnes à masquer lors de l’exécution de la macro

Je t'ai joint le fichier en PJ

Dans les onglet "VBA" tu trouvera précisément ce que je voudrai que les macro cachent

Merci encore

Bonsoir

Voila un début

Sub Macro1()
Application.ScreenUpdating = False
    Cells.EntireColumn.Hidden = False
    Cells.EntireRow.Hidden = False
' A, B, C, D, E, F, H, I, K, L, M, N
    Range("A:F,H:I,K:N").EntireColumn.Hidden = True
End Sub

Sub Decache()
Application.ScreenUpdating = False
    Cells.EntireColumn.Hidden = False
    Cells.EntireRow.Hidden = False
End Sub

A+

Maurice

re et je ferme pour se soir

pour les lignes et colonnes

A+

Maurice

Sub CacheLigneCol()
Application.ScreenUpdating = False
    Cells.EntireColumn.Hidden = False
    Cells.EntireRow.Hidden = False
        For L = 3 To Range("B" & Rows.Count).End(xlUp).Row
            If Range("B" & L).Value = "x" Then Rows(L).EntireRow.Hidden = True
        Next
'C, D, E, H, O à V
    Range("C:E,H:H,O:V").EntireColumn.Hidden = True
End Sub

Bonjour Maurice

Merci pour ton aide

C'est maintenant un mélange de vos deux réponse dont j'ai besoin !

J'ai essayer de bricoler un truc, sans grand succès

Sub LISTE_PRODUITS()
'
Sheets("Données ENR+").Select
Application.ScreenUpdating = False
    Cells.EntireColumn.Hidden = False
    Cells.EntireRow.Hidden = False
' A, B, C, D, E, F, H, I, K, L, M, N
    Range("G,J,O:BP").EntireColumn.Hidden = True
Sheets("VBA ENR+").Select
End Sub

Dans cet essais, j'essaye de laisser apparente les colonnes que toi tu avais caché (ça ce n'est qu'un détail), mais sur un onglet différent de celui ou se trouve la commande

Mais visiblement il y a une erreur lors de l’exécution !

Bonjour

attention au fautes de syntaxe

A+

Maurice

Sub LISTE_PRODUITS()
  Sheets(Feuil2.Name).Select
Application.ScreenUpdating = False
    Cells.EntireColumn.Hidden = False
    Cells.EntireRow.Hidden = False
Range("G:G,J:J,O:BP").EntireColumn.Hidden = True
  Sheets(Feuil1.Name).Select
End Sub

Effectivement, ça fonctionne beaucoup mieux, c'est parfait

En ce qui concerne la dernier bouton, celui ou il faut en plus cacher les lignes qui n'ont pas de "x" en colonne B, j'ai essayé ça

Sub DECLARATION_PERFORMANCES()
'
Sheets("Données ENR+").Select
Application.ScreenUpdating = False
    Cells.EntireColumn.Hidden = False
    Cells.EntireRow.Hidden = False
    For L = 3 To Range("B" & Rows.Count).End(xlUp).Row
            If Range("B" & L).Value = "x" Then Rows(L).EntireRow.Hidden = True
        Next
' C, D, E, H, O à V
    Range("A:B,F:G,I:N,W:BQ").EntireColumn.Hidden = True
Sheets("VBA ENR+").Select
End Sub

Le problème est que c'est l'inverse qui se produit, ce sont les lignes avec un"x" qui disparaissent

Bonjour

mettre un x a la fin de la colonne B pour le contage des lignes

Sub DECLARATION_PERFORMANCES()
'
Sheets(Feuil2.Name).Select ' = Sheets("Données ENR+").Select
' Mettre un x en "B60"
Application.ScreenUpdating = False
    Cells.EntireColumn.Hidden = False
    Cells.EntireRow.Hidden = False
    For L = 3 To Range("B" & Rows.Count).End(xlUp).Row
            If Range("B" & L).Value <> "x" Then Rows(L).EntireRow.Hidden = True
        Next
' C, D, E, H, O à V
    Range("A:B,F:G,I:N,W:BQ").EntireColumn.Hidden = True
Sheets(Feuil1.Name).Select  ' = Sheets("VBA ENR+").Select
End Sub

A+

Maurice

Tout fonctionne parfaitement !

Merci beaucoup

Bonjour JuLhot et archer et le forum,

Voici ma modeste contribution en phase avec archer.

Cdt

Henri

6test-julhot2.xlsm (69.62 Ko)

Bonjour

j'ais un peux modifier ton programme Henri

mes ton idée est bonne HI

a toi de voir "JuLhot "

A+

Maurice

4test-onglet.xlsm (68.15 Ko)

Bonjour à tous,

Effectivement mes colonnes masquées doivent être affichées et l'inverse.

Dans les onglet "VBA" tu trouvera précisément ce que je voudrai que les macro cachent

Autre modification dans "DECLARATIONS PERFORMANCES" pour garder les lignes 1 et 2 visibles.

Range("A3:BP" & derligne).Select
        Selection.AutoFilter
        ActiveSheet.Range("$A$3:$BP$" & derligne).AutoFilter Field:=2, Criteria1:="x"

Voici la version3.

Bon WE

Henri

6test-julhot3.xlsm (69.91 Ko)
Rechercher des sujets similaires à "panneau commande masquer colonnes"