macro et feuilles masquées

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 !

laurent999

XLDnaute Occasionnel
Bonjour a tous,

Novice je viens de créer une macro faisant référence à plusieurs feuilles.Lorsque j'utilise la macro tout ce passe bien sauf quand je masque ces feuilles.Je suis obligé de les masquer car le fichier est transmi à d'autres utilisateurs qui utiliserons la macro via un bouton entrée.Comment faire pour que ces feuilles restent invisible, même pendant l'exécution de la macro?

Merci a tous.
 
Re : macro et feuilles masquées

Bonsoir,
L'idéal serait de nous passer ton code.....enfin essaie déjà ça:
Si tu as enregistré ta macro, tes feuilles sont appelées de la manière suivante:
Code:
Sheets("Feuil1").Select

En général (mais soit prudent....) tu peux enlever le "Select" et remonter la ligne suivante à la suite (exemple en dessous si ce n'est pas clair). De même, supprimer les .Select / Selection.
Tu vas ainsi faire appel à tes cellules sans les sélectionner! Incroyable n'est-ce pas?

ex:
Code:
Sheets("Feuil1").Select
Range("A1").Select
Selection.Copy

Se simplifie en

Code:
Sheets("Feuil1").Range("A1").Copy

En espérant que ça suffise....

Cordialement
 
Re : macro et feuilles masquées

Merci pour ta réponse,

Cependant je n'ai pas tout saisi.

Voici la macro

peux-tu y jeter un oeuil?

merci


Sub Macro2()
'
' Macro2 Macro
'

'
Sheets("l").Select
ActiveWindow.ScrollColumn = 9
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
Range("H1:O28").Select
Selection.Copy
Range("Q1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWindow.SmallScroll ToRight:=5
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("l").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("l").Sort.SortFields.Add Key:=Range("X1:X28"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("l").Sort
.SetRange Range("Q1:X28")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 12
ActiveWindow.ScrollColumn = 13
ActiveWindow.ScrollColumn = 16
Columns("Q:W").Select
Range("W1").Activate
Selection.Copy
Range("Y1").Select
ActiveSheet.Paste
Range("X1:AE27").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Feuil2").Select
Range("A12").Select
ActiveSheet.Paste
Sheets("Feuil3").Select
Range("A1:K854").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.LargeScroll ToRight:=1
Range("N2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("N:X").Select
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("Feuil3").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil3").Sort.SortFields.Add Key:=Range("P2😛972") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil3").Sort
.SetRange Range("N1:X972")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWindow.ScrollColumn = 15
ActiveWindow.ScrollColumn = 16
Range("AA1:AB6").Select
Selection.Copy
Range("AC1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Columns("AC:AD").Select
ActiveWorkbook.Worksheets("Feuil3").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil3").Sort.SortFields.Add Key:=Range( _
"AC1:AC972"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
Range("AA1:AB7").Select
Selection.Copy
Range("AC1:AD7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("Feuil3").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil3").Sort.SortFields.Add Key:=Range("AC1:AC7") _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil3").Sort
.SetRange Range("AC1:AD7")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
 
Re : macro et feuilles masquées

Bon, je donne un coup de hache la-dedans....mais en fait il y a plus simple (moi pas réveillé....)

Au début de ta macro, tu ajoute

Application.ScreenUpdating = False

(juste en-dessous de Sub Macro2() )

et à l'avant dernière ligne,

Application.ScreenUpdating = True

Ca désactive (resp. active) le rafraichissement de l'écran.....tu ne vois rien à ce qui se passe, et la macro s'effectue en moyenne environ 20x plus vite! Tout bénéf!

Cordialement
 
Re : macro et feuilles masquées

Oups, je viens de relire ton premier post, et il semblerait que j'ai mal compris!
Que se passe-t-il quand tu masques les feuilles?
Est-ce que la macro ne fonctionne pas? Ou bien le problème est qu'elles deviennent visibles durant l'exécution de la macro,ce que tu ne souhaites pas?

Cordialement
 
Re : macro et feuilles masquées

En effet, j'avais mal compris....ce que je te propose (pour faire simple), c'est d'enregistrer une macro qui cache, puis affiche une feuille, histoire de voir ce que ça donne en VBA.

Puis tu mets ces lignes au début (afficher feuille) et à la fin (cacher) de ta macro (en l'appliquant à la bonne feuille)....N'hésite pas à revenir si ça ne fonctionne toujours pas.

Cordialement
 
Re : macro et feuilles masquées

Et comme promis, le code allégé....mais quand les XLDnautes barbatrucs vont passer par là, ils vont encore réduire ça de moitié 😀

Le premier truc, facile à enlever, c'est les "ActiveWindow.ScrollColumn =....", ça correspond à quand tu fais défiler ta page.....vraiment inutile, sans aucune hésitation!

Code:
Sub Macro2()

Application.ScreenUpdating = False

ActiveWindow.Sheets("l").Visible = True

Sheets("l").Range("H1:O28").Copy

Range("Q1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

ActiveWorkbook.Worksheets("l").Sort.SortFields.Add Key:=Range("X1:X28"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("l").Sort
    .SetRange Range("Q1:X28")
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

Columns("Q:W").Copy
Range("Y1").Select
ActiveSheet.Paste

Range("X1:AE27").Copy
Sheets("Feuil2").Select
Range("A12").Select
ActiveSheet.Paste

Sheets("Feuil3").Range("A1:K854").Copy
Range("N2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Columns("N:X").Select
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("Feuil3").Sort.SortFields.Add Key:=Range("P2:P972") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil3").Sort
    .SetRange Range("N1:X972")
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

Range("AA1:AB6").Copy
Range("AC1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Columns("AC:AD").Select
ActiveWorkbook.Worksheets("Feuil3").Sort.SortFields.Add Key:=Range( _
"AC1:AC972"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal

Range("AA1:AB7").Copy
Range("AC1:AD7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

ActiveWorkbook.Worksheets("Feuil3").Sort.SortFields.Add Key:=Range("AC1:AC7") _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil3").Sort
    .SetRange Range("AC1:AD7")
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

ActiveWindow.Sheets("l").Visible = False

Application.ScreenUpdating = True
End Sub
 
Dernière modification par un modérateur:
- 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
2
Affichages
646
L
Réponses
9
Affichages
1 K
J
Réponses
4
Affichages
3 K
juicelink
J
G
Réponses
1
Affichages
564
greg63
G
Retour