Macro sur plusieurs feuilles ne fonctionne pas

Résolu
DidsCraft Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   -  
crapoulou Messages postés 28195 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour,

Je me suis déjà servi de boucle For Each pour l’exécution d'une macro sur plusieurs feuilles mais la je ne comprend pas pourquoi quand je la lance la macro est exécutée seulement sur la feuille active. Je me dis qu'il y a peu être une erreur que je n'arrive plus a voir a force d'avoir le nez dessus. Si jamais vous voyez quelques chose merci bien

La boucle sert à masquer certaines colonnes et en afficher une autre ou l'inverse selon qu'on ouvre le fichier en lecture seul ou non.

Sub TestHiddenCol()
Dim fl As Worksheet

For Each fl In Worksheets
    If ThisWorkbook.ReadOnly Then
        Range("S:AQ").EntireColumn.Hidden = False
        Range("AR:AR").EntireColumn.Hidden = True
    Else
        Range("S:AQ").EntireColumn.Hidden = True
        Range("AR:AR").EntireColumn.Hidden = False
    End If
    Range("A1").Select
Next fl
Sheets("Janv").Select
End Sub
A voir également:

3 réponses

crapoulou Messages postés 28195 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   8 012
 
Bonjour,

Ton souci est sur le fait que la commande qui masque les ligne se fait sur la feuille activée. Il faut préciser sur quelle feuille le faire :

Sub TestHiddenCol()
Dim fl As Worksheet

For Each fl In Worksheets
    If ThisWorkbook.ReadOnly Then
        Sheets(fl.Name).Range("S:AQ").EntireColumn.Hidden = False
        Sheets(fl.Name).Range("AR:AR").EntireColumn.Hidden = True
    Else
        Sheets(fl.Name).Range("S:AQ").EntireColumn.Hidden = True
        Sheets(fl.Name).Range("AR:AR").EntireColumn.Hidden = False
    End If
    Sheets(fl.Name).Range("A1").Select
Next fl
Sheets("Janv").Select
End Sub
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour

On pourrait s'épargner une boucle...

Option Explicit
'-------------------------------------------------------------
Sub testhiddencol()

    Sheets(Array("janv", "fevr", "mars")).Select
    
     If ThisWorkbook.ReadOnly Then
             Columns("S:AQ").Hidden = False
            Columns("AR").Hidden = True
        Else
            Columns("S:AQ").Hidden = True
            Columns("AR").Hidden = False
    End If

   Sheets("Janv").Select

End Sub



0
DidsCraft Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   1
 
Tout simplement ????
Merci Crapoulou pour ton aide, encore une fois je me coucherais moins bête.
Je testerais Michel mais il me semble que lors de mes essais la ce code ne s’exécutait que sur la feuille active au démarrage. Mais je n’en suis pas sûr donc je testerais. Merci à vous deux
Bonne journée
0
crapoulou Messages postés 28195 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   8 012 > DidsCraft Messages postés 30 Date d'inscription   Statut Membre Dernière intervention  
 
De rien, bonne continuation ;-)
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Exact! je me suis planté ! :-/
en fait cela ne marche qu'avec des données dans des cellules...

Excuse moi
0