Masquer certaines colonnes dans plusieurs feuilles

Bonjour,

Pour une manipulation que je dois répéter souvent et sur de nombreux fichiers, j'ai voulu créer une macro... C'est ma première macro, donc soyez indulgents

j'ai fais pas mal de recherches (et enregistré les macros pour voir comment cela fonctionne) pour faire les différentes actions, je pensais avoir fait un truc pas mal

mais le résultat n'est pas probant, les colonnes ne se masquent pas correctement sur toutes les feuilles.

Je met toute la macro ci-dessous, mais ce sont les points "03 Afficher toutes les colonnes" et "05 Masquer les colonnes" qui ne fonctionnent pas.

Le reste semble OK.

Malheureusement le fichier est totalement confidentiel et je ne peux l'envoyer, j'espère que vous pourrez m'aider avec uniquement le code que je vous recopie ci-dessous

Merci d'avance de vos réponses

Nicolas

Sub M01Devis()

' 01 Retirer protections

For n = 1 To Sheets.Count

Sheets(n).Unprotect ("**")

Next n

' 02 Afficher tous les onglets

Dim Onglets As Worksheet

For Each Onglets In Worksheets

Onglets.Visible = True

Next Onglets

' 03 Afficher toutes les colonnes

Sheets(Array("GO", "TO", "MEX", "PL", "CA", "MIN", "SA", "EL", "CH", "CUI", "AB", "FF", "FI", "OPT")).Select

Columns("A:Y").EntireColumn.Hidden = False

' 04 Masquer les lignes vides

Sheets("GO").Select

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1, Criteria1:="<>"

Sheets("TO").Select

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1, Criteria1:="<>"

Sheets("MEX").Select

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1, Criteria1:="<>"

Sheets("PL").Select

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1, Criteria1:="<>"

Sheets("CA").Select

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1, Criteria1:="<>"

Sheets("MIN").Select

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1, Criteria1:="<>"

Sheets("SA").Select

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1, Criteria1:="<>"

Sheets("EL").Select

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1, Criteria1:="<>"

Sheets("CH").Select

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1, Criteria1:="<>"

Sheets("CUI").Select

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1, Criteria1:="<>"

Sheets("AB").Select

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1, Criteria1:="<>"

Sheets("FF").Select

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1, Criteria1:="<>"

Sheets("FI").Select

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1, Criteria1:="<>"

Sheets("OPT").Select

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1

ActiveSheet.Range("$G$1:$G$5000").AutoFilter Field:=1, Criteria1:="<>"

' 05 Masquer les colonnes

Sheets(Array("GO", "TO", "MEX", "PL", "CA", "MIN", "SA", "EL", "CH", "CUI", "AB", "FF", "FI", "OPT")).Select

Columns("B:B,H:H").EntireColumn.Hidden = True

Sheets("CON").Select

' 06 Remettre protections

For n = 1 To Sheets.Count

Sheets(n).Protect ("**"), DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowInsertingRows:=True, AllowDeletingRows:=True, AllowFiltering:=True

Next n

End Sub

Bonjour ngielen, le forum,

ce sont les points "03 Afficher toutes les colonnes" et "05 Masquer les colonnes" qui ne fonctionnent pas

A tester:

Option Explicit

Dim Feuilles, F

Sub Démasquer()   'point 03

    Feuilles = Array("GO", "TO", "MEX", "PL", "CA", "MIN", "SA", "EL", "CH", "CUI", "AB", "FF", "FI", "OPT")

    For Each F In Feuilles
            Sheets(F).Range("A:Y").EntireColumn.Hidden = False
    Next F
End Sub

Sub masquer()   'point 05

    Feuilles = Array("GO", "TO", "MEX", "PL", "CA", "MIN", "SA", "EL", "CH", "CUI", "AB", "FF", "FI", "OPT")

    For Each F In Feuilles
             Sheets(F).Range("B:B,H:H").EntireColumn.Hidden = True
    Next F

Sheets("CON").Select

End Sub
8ngielen.xlsm (34.29 Ko)

Cordialement,

Bonjour,

Essaie ceci et redis moi.

Ton code est un peu confus.

Option Explicit

' 01 Retirer protections
' 02 Afficher tous les onglets
' 03 Afficher toutes les colonnes
' 04 Masquer les lignes vides (filtrer)
' 05 Masquer les colonnes
' 06 Remettre protections

Public Sub M01Devis()
Dim wb As Workbook, ws As Worksheet

    Set wb = ActiveWorkbook

    For Each ws In wb.Worksheets
        ' 01
        ws.Unprotect ("**")
        ' 02
        ws.Visible = -1

        Select Case ws.Name
            Case "GO", "TO", "MEX", "PL", "CA", "MIN", "SA", "EL", "CH", "CUI", "AB", "FF", "FI", "OPT":
                With ws
                    ' 03
                    .Columns("A:Y").EntireColumn.Hidden = False
                    ' 04
                    .Range("$G$1:$G$5000").AutoFilter Field:=1
                    .Range("$G$1:$G$5000").AutoFilter Field:=1, Criteria1:="<>"
                    ' 05
                    .Columns("B:B,H:H").EntireColumn.Hidden = True
                End With
            Case Else:
        End Select
    Next ws

    ' 06
    For Each ws In wb.Worksheets
        ws.Protect ("**"), _
                   userinterfaceonly:=True, _
                   AllowFormattingCells:=True, _
                   AllowFormattingColumns:=True, _
                   AllowInsertingRows:=True, _
                   AllowDeletingRows:=True, _
                   AllowFiltering:=True
    Next ws

End Sub

Bonjour ngielen, le forum,

Je te propose ce fichier Excel :

19exo-ngielen.xlsm (32.10 Ko)

Le mot de passe est : pwd

Alt F11 pour voir le code VBA, puis revenir sur Excel

Merci de me donner ton avis.

Cordialement,

dhany

Super,

merci à vous 3 !!! des heures que je cherchais!

les 3 solutions semblent marcher!!!

la première est dans le style que j'avais fait et répond parfaitement à ce que je voulais. Merci xorsankukai

la seconde est hyper propre et plus efficace que ma manière de faire. Merci Jean-Eric

et la dernière regroupe ces deux qualités car en tant que débutant, elle améliore la vitesse d'exécution tout en étant plus facilement compréhensible et donc adaptable par moi. Comme j'ai plusieurs macros à faire à partir de cet exemple et afin de me débrouiller un maximum seul, je repars avec cette dernière version. Merci Dhany

Enfin, ce fichier tourne comme je le souhaitais.

Merci pour vos réponses rapides et efficaces!

Nicolas

Merci Nicolas pour ton retour !!! et bonne chance pour tes prochaines macros !!!

dhany

Rechercher des sujets similaires à "masquer certaines colonnes feuilles"