Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

procedure longue pour affichage

7 réponses
Avatar
Sunburn
Bonjour,
j'ai une procédure qui me permet d'afficher des pages précises.
mais je m'aperçois qu'elle est de plus en plus longue...
qu'est-ce qui peut influencer cette macro qui la retarde ???
Merci. (les onglets "GA10" à "GA14" se suivent, et les onglets "10" à
"10_81" se suivent)
YANN
----
Sub CYCLE10()
Application.ScreenUpdating = False
ActiveWorkbook.Unprotect 'déprotection du classeur
DeprotegerFeuilles 'déprotection des feuilles
ProtegerFeuilles 'protection des feuilles
For Each F In ActiveWorkbook.Sheets
If F.Name <> "DA" Then F.Visible = False
Next
On Error Resume Next
Sheets("GA10").Visible = True
Sheets("GA11").Visible = True
Sheets("GA12").Visible = True
Sheets("GA13").Visible = True
Sheets("GA14").Visible = True
Sheets("10").Visible = True
Sheets("10_21").Visible = True
Sheets("10_31").Visible = True
Sheets("10_41").Visible = True
Sheets("10_61").Visible = True
Sheets("10_71").Visible = True
Sheets("10_81").Visible = True
Sheets("10").Activate
ActiveWorkbook.Protect Structure:=True ', Windows:=True 'protection du
classeur
End Sub
------

7 réponses

Avatar
Sunburn
j'ai oublié de préciser, j'ai ce code sur mon onglet 10
YANN
------
Private Sub Worksheet_Activate()
Import10
Columns("K:L").ClearContents
For I = 1 To ThisWorkbook.Worksheets.Count
If Worksheets(I).Name Like "10_*" Then
K = K + 1
Me.Cells(K, 11) = Worksheets(I).Name
Me.Cells(K, 12) = Worksheets(I).[A4]
End If
Next I
End Sub
-----
Sub Import10()
'supprimer les anciennes lignes
Application.ScreenUpdating = False
Sheets("10").Activate
For I = Cells(Rows.Count, "a").End(1).Row To 2 Step -1
If Cells(I, 1) > 100000 And Cells(I, 1) < 99999999 Then Rows(I).Delete
Next
'ajoute les lignes
Sheets("10").Select
Range("DETAIL10").Select
For Each C In Worksheets("GA14").Range("A2:A1000")
n1 = Mid(C, 1, 1)
n2 = Mid(C, 1, 4)
n4 = Mid(C, 1, 4)
n5 = Mid(C, 1, 4)
n10 = Mid(C, 1, 4)
n11 = Mid(C, 1, 4)
n12 = Mid(C, 1, 4)
n13 = Mid(C, 1, 3)
n14 = Mid(C, 1, 4)
If n1 = 1 Or n2 = 6611 Or n4 = 6874 Or n5 = 6875 _
Or n10 = 7865 Or n11 = 7874 Or n12 = 7875 Or n13 = 777 Or n14 = 7872 _
Then
Selection.EntireRow.Insert Shift:=xlDown
ActiveCell.Offset(0, 0).Select
Range(C, C.Offset(0, 255).End(xlToLeft)).Copy
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Select
End If
Next
End Sub
--------
Avatar
Renée
Bonjour.
Une macro "Workbook_SheetActivate" ou "Worksheet_Activate()" ?
Cordialement.
Daniel
"Sunburn" a écrit dans le message de
news:
Bonjour,
j'ai une procédure qui me permet d'afficher des pages précises.
mais je m'aperçois qu'elle est de plus en plus longue...
qu'est-ce qui peut influencer cette macro qui la retarde ???
Merci. (les onglets "GA10" à "GA14" se suivent, et les onglets "10" à
"10_81" se suivent)
YANN
----
Sub CYCLE10()
Application.ScreenUpdating = False
ActiveWorkbook.Unprotect 'déprotection du classeur
DeprotegerFeuilles 'déprotection des feuilles
ProtegerFeuilles 'protection des feuilles
For Each F In ActiveWorkbook.Sheets
If F.Name <> "DA" Then F.Visible = False
Next
On Error Resume Next
Sheets("GA10").Visible = True
Sheets("GA11").Visible = True
Sheets("GA12").Visible = True
Sheets("GA13").Visible = True
Sheets("GA14").Visible = True
Sheets("10").Visible = True
Sheets("10_21").Visible = True
Sheets("10_31").Visible = True
Sheets("10_41").Visible = True
Sheets("10_61").Visible = True
Sheets("10_71").Visible = True
Sheets("10_81").Visible = True
Sheets("10").Activate
ActiveWorkbook.Protect Structure:=True ', Windows:=True 'protection du
classeur
End Sub
------


Avatar
Sunburn
EUH quelle est la différence ??
la procédure là est dans un module.
les autres (sur ma réponse), c'est sur la feuille elle-meme.
MERCI.
YANN

"Renée" a écrit :

Bonjour.
Une macro "Workbook_SheetActivate" ou "Worksheet_Activate()" ?
Cordialement.
Daniel
"Sunburn" a écrit dans le message de
news:
> Bonjour,
> j'ai une procédure qui me permet d'afficher des pages précises.
> mais je m'aperçois qu'elle est de plus en plus longue...
> qu'est-ce qui peut influencer cette macro qui la retarde ???
> Merci. (les onglets "GA10" à "GA14" se suivent, et les onglets "10" à
> "10_81" se suivent)
> YANN
> ----
> Sub CYCLE10()
> Application.ScreenUpdating = False
> ActiveWorkbook.Unprotect 'déprotection du classeur
> DeprotegerFeuilles 'déprotection des feuilles
> ProtegerFeuilles 'protection des feuilles
> For Each F In ActiveWorkbook.Sheets
> If F.Name <> "DA" Then F.Visible = False
> Next
> On Error Resume Next
> Sheets("GA10").Visible = True
> Sheets("GA11").Visible = True
> Sheets("GA12").Visible = True
> Sheets("GA13").Visible = True
> Sheets("GA14").Visible = True
> Sheets("10").Visible = True
> Sheets("10_21").Visible = True
> Sheets("10_31").Visible = True
> Sheets("10_41").Visible = True
> Sheets("10_61").Visible = True
> Sheets("10_71").Visible = True
> Sheets("10_81").Visible = True
> Sheets("10").Activate
> ActiveWorkbook.Protect Structure:=True ', Windows:=True 'protection du
> classeur
> End Sub
> ------





Avatar
michdenis
ta procédure pourrait ressembler à ceci :
(pas testé)
Tu as en début de procédure, un appel de procédure
pour protéger et déprotéger tes feuilles

DeprotegerFeuilles 'déprotection des feuilles
ProtegerFeuilles 'protection des feuilles

Puisque tu boucles sur toutes les feuilles de ton classeur
pourquoi ne pas les intégrer à ta procédure....

Voici une suggestion :

'--------------------------------
Sub CYCLE10()
Dim F As Worksheet

Application.ScreenUpdating = False
ActiveWorkbook.Unprotect 'déprotection du classeur

For Each F In ActiveWorkbook.Worksheets
Select Case F.Name
Case "DA", "GA10", "GA11", "GA12", _
"GA13", "GA14", "10", "10_21", _
"10_31", "10_41", "10_61", "10_71", "10_81"
F.Visible = True
F.Protect
Case Else
F.Visible = False
F.Unprotect
End Select
Next
Sheets("10").Select
ActiveWorkbook.Protect Structure:=True
End Sub
'--------------------------------



"Sunburn" a écrit dans le message de groupe de
discussion :
Bonjour,
j'ai une procédure qui me permet d'afficher des pages précises.
mais je m'aperçois qu'elle est de plus en plus longue...
qu'est-ce qui peut influencer cette macro qui la retarde ???
Merci. (les onglets "GA10" à "GA14" se suivent, et les onglets "10" à
"10_81" se suivent)
YANN
----
Sub CYCLE10()
Application.ScreenUpdating = False
ActiveWorkbook.Unprotect 'déprotection du classeur
DeprotegerFeuilles 'déprotection des feuilles
ProtegerFeuilles 'protection des feuilles
For Each F In ActiveWorkbook.Sheets
If F.Name <> "DA" Then F.Visible = False
Next
On Error Resume Next
Sheets("GA10").Visible = True
Sheets("GA11").Visible = True
Sheets("GA12").Visible = True
Sheets("GA13").Visible = True
Sheets("GA14").Visible = True
Sheets("10").Visible = True
Sheets("10_21").Visible = True
Sheets("10_31").Visible = True
Sheets("10_41").Visible = True
Sheets("10_61").Visible = True
Sheets("10_71").Visible = True
Sheets("10_81").Visible = True
Sheets("10").Activate
ActiveWorkbook.Protect Structure:=True ', Windows:=True 'protection du
classeur
End Sub
------
Avatar
Sunburn
re,
merci c'est beaucoup plus rapide !!!!
YANN

"michdenis" a écrit :

ta procédure pourrait ressembler à ceci :
(pas testé)
Tu as en début de procédure, un appel de procédure
pour protéger et déprotéger tes feuilles

DeprotegerFeuilles 'déprotection des feuilles
ProtegerFeuilles 'protection des feuilles

Puisque tu boucles sur toutes les feuilles de ton classeur
pourquoi ne pas les intégrer à ta procédure....

Voici une suggestion :

'--------------------------------
Sub CYCLE10()
Dim F As Worksheet

Application.ScreenUpdating = False
ActiveWorkbook.Unprotect 'déprotection du classeur

For Each F In ActiveWorkbook.Worksheets
Select Case F.Name
Case "DA", "GA10", "GA11", "GA12", _
"GA13", "GA14", "10", "10_21", _
"10_31", "10_41", "10_61", "10_71", "10_81"
F.Visible = True
F.Protect
Case Else
F.Visible = False
F.Unprotect
End Select
Next
Sheets("10").Select
ActiveWorkbook.Protect Structure:=True
End Sub
'--------------------------------



"Sunburn" a écrit dans le message de groupe de
discussion :
Bonjour,
j'ai une procédure qui me permet d'afficher des pages précises.
mais je m'aperçois qu'elle est de plus en plus longue...
qu'est-ce qui peut influencer cette macro qui la retarde ???
Merci. (les onglets "GA10" à "GA14" se suivent, et les onglets "10" à
"10_81" se suivent)
YANN
----
Sub CYCLE10()
Application.ScreenUpdating = False
ActiveWorkbook.Unprotect 'déprotection du classeur
DeprotegerFeuilles 'déprotection des feuilles
ProtegerFeuilles 'protection des feuilles
For Each F In ActiveWorkbook.Sheets
If F.Name <> "DA" Then F.Visible = False
Next
On Error Resume Next
Sheets("GA10").Visible = True
Sheets("GA11").Visible = True
Sheets("GA12").Visible = True
Sheets("GA13").Visible = True
Sheets("GA14").Visible = True
Sheets("10").Visible = True
Sheets("10_21").Visible = True
Sheets("10_31").Visible = True
Sheets("10_41").Visible = True
Sheets("10_61").Visible = True
Sheets("10_71").Visible = True
Sheets("10_81").Visible = True
Sheets("10").Activate
ActiveWorkbook.Protect Structure:=True ', Windows:=True 'protection du
classeur
End Sub
------



Avatar
Sunburn
Ok, j'ai testé et ça marche bien.
pour améliorer encore le truc, j'ai 9 procédures identiques ou j'appelle les
feuilles "DA", "GA10", "GA11", "GA12", "GA13", "GA14" + des feuilles spéciales
ces feuilles spéciales sont différentes pour chaque procédure, mais la
première procédure appel toutes les feuilles qui commencent par 10, la
deuxième procédure appel toutes celles qui commencent par 20 et ainsi de
suite jusqu'à 90.

puis-je améliorer le code en nommant les "DA", "GA10", "GA11", "GA12",
"GA13", "GA14", puis en appelant ce nom plus les autres feuilles avec un If
Worksheets(I).Name Like "10_*" par exemple ???

Merci.
YANN
Avatar
michdenis
ça pourrait donner quelque chose comme :

Sub CYCLE10()
Dim F As Worksheet

Application.ScreenUpdating = False
ActiveWorkbook.Unprotect 'déprotection du classeur

For Each F In ActiveWorkbook.Worksheets
If Left(F.Name, 2) <> "10" Then
Select Case F.Name
Case "DA", "GA10", "GA11", "GA12", _
"GA13", "GA14"
F.Visible = True
F.Protect

Case Else
F.Visible = False
F.Unprotect
End Select
Else
'Toutes les feuilles débutant pas 10
F.Protect ' et autres commandes
End If
Next
Sheets("10").Select
ActiveWorkbook.Protect Structure:=True
End Sub




"Sunburn" a écrit dans le message de groupe de
discussion :
Ok, j'ai testé et ça marche bien.
pour améliorer encore le truc, j'ai 9 procédures identiques ou j'appelle les
feuilles "DA", "GA10", "GA11", "GA12", "GA13", "GA14" + des feuilles spéciales
ces feuilles spéciales sont différentes pour chaque procédure, mais la
première procédure appel toutes les feuilles qui commencent par 10, la
deuxième procédure appel toutes celles qui commencent par 20 et ainsi de
suite jusqu'à 90.

puis-je améliorer le code en nommant les "DA", "GA10", "GA11", "GA12",
"GA13", "GA14", puis en appelant ce nom plus les autres feuilles avec un If
Worksheets(I).Name Like "10_*" par exemple ???

Merci.
YANN