Macro sur plusieurs feuilles ne fonctionne pas

Résolu
DidsCraft Messages postés 30 Statut Membre -  
crapoulou Messages postés 28002 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

3 réponses

  1. crapoulou Messages postés 28002 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   8 046
     
    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
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. DidsCraft Messages postés 30 Statut Membre 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
      1. crapoulou Messages postés 28002 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   8 046 > DidsCraft Messages postés 30 Statut Membre
         
        De rien, bonne continuation ;-)
        0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Exact! je me suis planté ! :-/
    en fait cela ne marche qu'avec des données dans des cellules...

    Excuse moi
    0