Boucle pour afficher certaine colonne dans chaque onglet

timon

XLDnaute Nouveau
Bonjour,

Je débute VBA et je bloque sur mes boucles...
Voila j'ai un grand fichier ou chaque onglet propose des données sur un pays selon le mois.
Pour améliorer la visualisation des données j'ai créer un onglet affichage dans lequel j'ai mis 12 cases à cocher (une pour chque mois) et un bouton de validation qui activera la macro.

Il me semble que pour commecer il faudrait que je fasse afficher toutes les cellule dans tous les onglet :

Cells.Select
Selection.EntireRow.Hidden = False

Mais j'ai une trentaine d'onglet (dont 3 onglets qui ne doivent pas être modifié) du coup je voudrais créer une boucle pour cela.

Ensuite je pense faire une boucle pour chaque case cocher du style :

IF G3="VRAI" (case Janvier cocher) then
Columns("G:BD").Select
Selection.EntireColumn.Hidden = True

Puis une boucle pour

IF G4="VRAI"
.......
.......

Comment le coder ? Est-il possible de faire tous cela dans une seule boucle?
 

timon

XLDnaute Nouveau
Re : Boucle pour afficher certaine colonne dans chaque onglet

J'ai fait ceci mais il n'y a que la première boucle qui fonctionne, le reste ne bug pas mais rien ne se passe:
(si quelau'un arrive a voir mon erreur je suis preneur :p )

Sub Affichage()
Dim ws As Worksheet
Sheets("DECS").Select 'Ici met ton premier onglet
Application.ScreenUpdating = False
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
Columns("K:CC").Hidden = False
Next ws

Sheets("Affichage").Activate
If G3 = "FAUX" Then
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
Columns("K:O").Hidden = True
Next ws
End If

Sheets("Affichage").Activate
If G4 = "FAUX" Then
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
Columns("Q:Y").Hidden = True
Next ws
End If

End Sub
 

Efgé

XLDnaute Barbatruc
Re : Boucle pour afficher certaine colonne dans chaque onglet

Bonjour timon
Je ne sais pas si je pourrai t'aider, mais un petit fichier exemple annonyme et quelques explications supplémentaires pourraient t'ammener plus de réponses.
Cordialement
 

timon

XLDnaute Nouveau
Re : Boucle pour afficher certaine colonne dans chaque onglet

Voila un petit fichier avec l'onglet affichage te la macro qu j'ai un peu avancer mais qui ne fonctionne pas...
 

Pièces jointes

  • Classeur1.xlsm
    261.1 KB · Affichages: 35
  • Classeur1.xlsm
    261.1 KB · Affichages: 28
  • Classeur1.xlsm
    261.1 KB · Affichages: 32

Efgé

XLDnaute Barbatruc
Re : Boucle pour afficher certaine colonne dans chaque onglet

Re
Je pense qu'au lieu de boucler une fois sur ta feuille Affichage et de boucler sur chaque feuille a chaque valeur, il est préférable de direectement boucler sur les feuilles.
D'autre part, si tu veux manipuler une feuille qui n'est pas la feuille active, il faut ajouter son nom devant le Range que tu manipule.

En conservant une syntaxe proche de ton code d'origine je propose:
VB:
Sub Affichage()
Dim Sh As Worksheet, Ws As Worksheet
Set Sh = Sheets("Affichage")
For Each Ws In ActiveWorkbook.Worksheets
    If Ws.Name <> Sh.Name Then
        Ws.Columns.Hidden = False
        Ws.Columns("K:O").Hidden = Sh.Range("$G$3") = FAUX
        Ws.Columns("Q:Y").Hidden = Sh.Range("$G$4") = FAUX
        Ws.Columns("W:AA").Hidden = Sh.Range("$G$5") = FAUX
        Ws.Columns("AC:AG").Hidden = Sh.Range("$G$6") = FAUX
        Ws.Columns("AI:AM").Hidden = Sh.Range("$G$7") = FAUX
        Ws.Columns("AO:AS").Hidden = Sh.Range("$G$8") = FAUX
        Ws.Columns("AU:AY").Hidden = Sh.Range("$G$9") = FAUX
        Ws.Columns("BA:BE").Hidden = Sh.Range("$G$10") = FAUX
        Ws.Columns("BG:BK").Hidden = Sh.Range("$G$11") = FAUX
        Ws.Columns("BM:BQ").Hidden = Sh.Range("$G$12") = FAUX
        Ws.Columns("BS:BW").Hidden = Sh.Range("$G$13") = FAUX
        Ws.Columns("BY:CC").Hidden = Sh.Range("$G$14") = FAUX
        Ws.Rows("115:166").Hidden = Sh.Range("$H$3") = FAUX
    End If
Next Ws
End Sub

C'est optimisable, mais le coide sera moins simple a comprendre.

Cordialement
 

timon

XLDnaute Nouveau
Re : Boucle pour afficher certaine colonne dans chaque onglet

Merci ça marche nickel mais j'aurais deux petites questions :

A quoi correspond ce signe : <> ?

Comment je peux faire pour exclure certaines feuilles de la boucle.

Encore merci
 

Discussions similaires