Macro sur plusieurs feuilles ne fonctionne pas

Résolu/Fermé
DidsCraft Messages postés 30 Date d'inscription jeudi 7 juin 2018 Statut Membre Dernière intervention 3 mai 2024 - 21 oct. 2020 à 09:06
crapoulou Messages postés 28161 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 21 mai 2024 - 23 oct. 2020 à 09:18
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 28161 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 21 mai 2024 7 998
21 oct. 2020 à 09:28
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié le 23 oct. 2020 à 09:16
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 jeudi 7 juin 2018 Statut Membre Dernière intervention 3 mai 2024 1
21 oct. 2020 à 15:23
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 28161 Date d'inscription mercredi 28 novembre 2007 Statut Modérateur, Contributeur sécurité Dernière intervention 21 mai 2024 7 998 > DidsCraft Messages postés 30 Date d'inscription jeudi 7 juin 2018 Statut Membre Dernière intervention 3 mai 2024
23 oct. 2020 à 09:18
De rien, bonne continuation ;-)
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
22 oct. 2020 à 10:42
Exact! je me suis planté ! :-/
en fait cela ne marche qu'avec des données dans des cellules...

Excuse moi
0