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
------
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 --------
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
--------
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
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 ------
Bonjour.
Une macro "Workbook_SheetActivate" ou "Worksheet_Activate()" ?
Cordialement.
Daniel
"Sunburn" <Sunburn@discussions.microsoft.com> a écrit dans le message de
news: 7A023B37-8F15-447E-AF8F-75AC8785BFBE@microsoft.com...
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
------
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 ------
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 > ------
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" <Sunburn@discussions.microsoft.com> a écrit dans le message de
news: 7A023B37-8F15-447E-AF8F-75AC8785BFBE@microsoft.com...
> 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
> ------
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 > ------
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 ------
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" <Sunburn@discussions.microsoft.com> a écrit dans le message de groupe de
discussion : 7A023B37-8F15-447E-AF8F-75AC8785BFBE@microsoft.com...
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
------
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 ------
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 ------
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" <Sunburn@discussions.microsoft.com> a écrit dans le message de groupe de
discussion : 7A023B37-8F15-447E-AF8F-75AC8785BFBE@microsoft.com...
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
------
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 ------
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
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 ???
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
ç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
ç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" <Sunburn@discussions.microsoft.com> a écrit dans le message de groupe de
discussion : 8272C3E3-FA0D-491D-B687-4E395495B98E@microsoft.com...
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 ???
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 ???