procedure longue pour affichage

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Sunburn
Le #18465341
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
--------
Renée
Le #18465321
Bonjour.
Une macro "Workbook_SheetActivate" ou "Worksheet_Activate()" ?
Cordialement.
Daniel
"Sunburn" 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
------


Sunburn
Le #18465891
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" 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
> ------





michdenis
Le #18466131
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" 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
------
Sunburn
Le #18466411
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" 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
------



Sunburn
Le #18472961
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
michdenis
Le #18473941
ç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" 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
Publicité
Poster une réponse
Anonyme