Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Simplifier l'écriture d'une macro

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Evelynetfrancois

XLDnaute Impliqué
Bonjour tout le monde
J’essaye de simplifier cette macro qui fonctionne bien, mais qui est trés mal écrite
Pouvez-vous jeter un œil averti !
Merci pour tout !!!
E et F

(macro de janvier à janvier 2015)

'masque les lignes
Sheets("janvier").Range("6:102,142:179").EntireRow.Hidden = True

'fige à la ligne 106
Sheets("janvier").Select
ActiveWindow.FreezePanes = False
Range("A106").Select
ActiveWindow.FreezePanes = True

Sheets("février").Range("6:102,142:179").EntireRow.Hidden = True
Sheets("février").Select
ActiveWindow.FreezePanes = False
Range("A106").Select
ActiveWindow.FreezePanes = True
Sheets("mars").Range("6:102,142:179").EntireRow.Hidden = True
Sheets("mars").Select
ActiveWindow.FreezePanes = False
Range("A106").Select
ActiveWindow.FreezePanes = True
Sheets("avril").Range("6:102,142:179").EntireRow.Hidden = True
Sheets("avril").Select
ActiveWindow.FreezePanes = False
Range("A106").Select
ActiveWindow.FreezePanes = True
Sheets("mai").Range("6:102,142:179").EntireRow.Hidden = True
Sheets("mai").Select
ActiveWindow.FreezePanes = False
Range("A106").Select
ActiveWindow.FreezePanes = True
 
Dernière édition:
Re : Simplifier l'écriture d'une macro

Bonjour Evelyne, François, jpb388,

Une boucle devrait fonctionner sur le modèle suivant:
VB:
Sub CacheEtFige()

For Each sh In Sheets
    sh.Range("6:102,142:179").EntireRow.Hidden = True
    sh.Activate
    Range("A106").Activate
    ActiveWindow.FreezePanes = False
    ActiveWindow.FreezePanes = True
Next sh
End Sub
Attention: ce code (à placer dans un module standard) s'exécute sur toutes les feuilles du classeur. Sans fichier joint à la demande, on ne peut savoir comment est structuré le classeur

... à adapter donc à la situation réelle!
 
Re : Simplifier l'écriture d'une macro

Bonjour Modeste, Evelynetfrançois, jpb388,

Je rebondis sur ton code auquel je souhaite apporter 2 petits commentaires:
- utiliser sheets provoquera une erreur si le classeur ne comporte pas que des feuilles de graphique. En effet, sheets et un terme générique qui ne fait pas le distingo entre un graphique, une feuille de macro xl4 ou une feuille classique. Il faut donc utiliser l'objet worksheets
- Aaargh, il manque une déclaration de variable dans le code il faut ajouter un petit Dim...
😉
- Et pis sinon, j'vois pas bien l'intérêt du FreezePanes 😱

VB:
[/COLOR]Sub CacheEtFige()

'Dim sh As Sheet
Dim sh As Worksheet

'For Each sh In Sheets
For Each sh In Worksheets
    sh.Range("6:102,142:179").EntireRow.Hidden = True
    sh.Activate
    Range("A106").Activate
    ActiveWindow.FreezePanes = False
    ActiveWindow.FreezePanes = True
Next sh
End Sub

Bon courage
 
Re : Simplifier l'écriture d'une macro

bonjour modeste jam !!
Votre code va évidement parfaitement bien ! je vous remercie mille fois !!! super
bonne journée a tous
EetF

(Et pis sinon, j'vois pas bien l'intérêt du FreezePanes )
j essaye d expliquer .....
Suivant le secteur de production(5) qui ouvre mon programme (tout secteurs confondus)
certaines lignes sont masquées ( sh.Range("6:102,142:179").EntireRow.Hidden = True)pour s'adapter au secteur
les ligne figées (ActiveWindow.FreezePanes = True) doivent donc se réadapter à la feuille
 
Re : Simplifier l'écriture d'une macro

Bonsoir le fil,

utiliser sheets provoquera une erreur si le classeur ne comporte pas que des feuilles de graphique
... ou alors l'inverse !? Ceci dit, le bout de phrase suivant "Sans fichier joint à la demande, on ne peut savoir comment est structuré le classeur" était une invitation à la réflexion ... Masquer des lignes et figer les volets d'une feuille de graphique étant difficile, même hors vba.

Aaargh, il manque une déclaration de variable dans le code il faut ajouter un petit Dim...
La déclaration des variables n'est pas, à ma connaissance, une obligation légale, ni morale, ni ... "Aaargh" est donc un point de vue assez personnel et qui n'engage que toi 😉

Par contre, tu aurais pu suggérer l'ajout de
Code:
ScreenUpdating = False
en début de code, ainsi que de son petit frère
Code:
ScreenUpdating = True
à la fin du même code. Là nous aurions été en plein accord 🙂

Bonne soirée,
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
477
B
  • Question Question
Microsoft 365 colorer une plage
Réponses
2
Affichages
970
bd.afaf
B
Réponses
2
Affichages
981
  • Question Question
Réponses
10
Affichages
1 K
A
Réponses
2
Affichages
1 K
AlexAGEMS
A
S
Réponses
3
Affichages
850
G
Réponses
9
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…