re,
dans l'exemple que je t'ai donné il n'y a pas de select
;-)
Bonsoir,
J'ai fait un essai et j'ai une erreur : la méthode select de la classe
range a échoué. Habituellement, quand je sélectionnais toutes les
feuilles en même temps et je j'effaçais les plages, j'avais une erreur
avec la méthode Shape (l'effacement des saisies était ok, mais pas les
commentaires) car manifestement il était impossible de sélectionner tous
les "boutons" en même temps (cf workbook_change) ..
Dans chaque feuille sélectionnée, j'ai ceci (attention c'est indigeste,
surtout pour un retour de vacances ;-) ) :
'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'------------------------------------------
' If Not Intersect(Target, [P9:AT110]) Is Nothing And Target.Count =
1 Then
' [mémoire].Interior.ColorIndex = xlNone
' ActiveWorkbook.Names.Add Name:="mémoire", RefersTo:="=" &
Range("c" & Target.Row).Address & ""
' Range("c" & Target.Row).Interior.ColorIndex = 3
' End If
'------------------------------------------
If Not Intersect(Target, [MoisInterdit]) Is Nothing And Target.Count
= 1 Then
Application.EnableEvents = False
compteur = 0
For Each com In Range("p" & Target.Row & ":at" & Target.Row)
If Len(com.NoteText) Then compteur = 1: Exit For
Next
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) > 0 Or compteur = 1 Then
Target = [mémo]
MsgBox "Vous ne devez pas supprimer ce Nom !" &
Chr(10) & Chr(10) & "(La ligne contient des informations ...)", vbOKOnly
+ vbInformation, "Attention !"
End If
End If
Application.EnableEvents = True
ActiveSheet.Shapes("Bouton 2").Select
Selection.Characters.Text = Range("AW3").Value
Range("F6").Select 'désélectionne le bouton !
ActiveSheet.Protect Password:="", DrawingObjects:úlse,
Contents:=True, Scenarios:úlse
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
'------------------------------------------------------
@+ ?
JP
"LSteph" a écrit dans le message de news:
OL$Bonsoir,
Pour effacer des plages pas besoin de sélectionner
voici exemple à adapter:
Sub clplg()
Dim i As Byte
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
End Sub
'lStephBonjour,
Je voudrais mettre ce qui suit sous une forme avec boucle, mais je n'y
arrive pas ;-(
Les feuilles vont de sheets(5) à sheets(16)
Merci pour vos lumières.
J'imagine qu'avec une boucle, la procédure sera plus rapide ?
J'étais parti avec qqch comme :
Sub sélectMois()
Application.DisplayAlerts = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
Next
'mes plages à effacer ...
End Sub
... mais ça bloque au niveau de mes Shapes + Workbook_Change qui fait
référence à un "Button" et il est apparemment impossible de
sélectionner tous les boutons des 12 feuilles en même temps.
Pour cette raison, j'ai pensé à une sélection et à un effacement de
chacunes des feuilles l'une après l'autre ...
Voici le code lourdaingue ;-) :
'------------------------------------------------------
Sub EffacerSaisiesBis()
Application.ScreenUpdating = False
Sheets(5).Select '5 = janvier
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
Sheets(6).Select
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
'etc jusqu'à feuille 16
End Sub
'------------------------------------------------------
re,
dans l'exemple que je t'ai donné il n'y a pas de select
;-)
Bonsoir,
J'ai fait un essai et j'ai une erreur : la méthode select de la classe
range a échoué. Habituellement, quand je sélectionnais toutes les
feuilles en même temps et je j'effaçais les plages, j'avais une erreur
avec la méthode Shape (l'effacement des saisies était ok, mais pas les
commentaires) car manifestement il était impossible de sélectionner tous
les "boutons" en même temps (cf workbook_change) ..
Dans chaque feuille sélectionnée, j'ai ceci (attention c'est indigeste,
surtout pour un retour de vacances ;-) ) :
'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'------------------------------------------
' If Not Intersect(Target, [P9:AT110]) Is Nothing And Target.Count =
1 Then
' [mémoire].Interior.ColorIndex = xlNone
' ActiveWorkbook.Names.Add Name:="mémoire", RefersTo:="=" &
Range("c" & Target.Row).Address & ""
' Range("c" & Target.Row).Interior.ColorIndex = 3
' End If
'------------------------------------------
If Not Intersect(Target, [MoisInterdit]) Is Nothing And Target.Count
= 1 Then
Application.EnableEvents = False
compteur = 0
For Each com In Range("p" & Target.Row & ":at" & Target.Row)
If Len(com.NoteText) Then compteur = 1: Exit For
Next
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) > 0 Or compteur = 1 Then
Target = [mémo]
MsgBox "Vous ne devez pas supprimer ce Nom !" &
Chr(10) & Chr(10) & "(La ligne contient des informations ...)", vbOKOnly
+ vbInformation, "Attention !"
End If
End If
Application.EnableEvents = True
ActiveSheet.Shapes("Bouton 2").Select
Selection.Characters.Text = Range("AW3").Value
Range("F6").Select 'désélectionne le bouton !
ActiveSheet.Protect Password:="", DrawingObjects:úlse,
Contents:=True, Scenarios:úlse
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
'------------------------------------------------------
@+ ?
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
OL$bA415HHA.5160@TK2MSFTNGP05.phx.gbl...
Bonsoir,
Pour effacer des plages pas besoin de sélectionner
voici exemple à adapter:
Sub clplg()
Dim i As Byte
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
End Sub
'lSteph
Bonjour,
Je voudrais mettre ce qui suit sous une forme avec boucle, mais je n'y
arrive pas ;-(
Les feuilles vont de sheets(5) à sheets(16)
Merci pour vos lumières.
J'imagine qu'avec une boucle, la procédure sera plus rapide ?
J'étais parti avec qqch comme :
Sub sélectMois()
Application.DisplayAlerts = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
Next
'mes plages à effacer ...
End Sub
... mais ça bloque au niveau de mes Shapes + Workbook_Change qui fait
référence à un "Button" et il est apparemment impossible de
sélectionner tous les boutons des 12 feuilles en même temps.
Pour cette raison, j'ai pensé à une sélection et à un effacement de
chacunes des feuilles l'une après l'autre ...
Voici le code lourdaingue ;-) :
'------------------------------------------------------
Sub EffacerSaisiesBis()
Application.ScreenUpdating = False
Sheets(5).Select '5 = janvier
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
Sheets(6).Select
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
'etc jusqu'à feuille 16
End Sub
'------------------------------------------------------
re,
dans l'exemple que je t'ai donné il n'y a pas de select
;-)
Bonsoir,
J'ai fait un essai et j'ai une erreur : la méthode select de la classe
range a échoué. Habituellement, quand je sélectionnais toutes les
feuilles en même temps et je j'effaçais les plages, j'avais une erreur
avec la méthode Shape (l'effacement des saisies était ok, mais pas les
commentaires) car manifestement il était impossible de sélectionner tous
les "boutons" en même temps (cf workbook_change) ..
Dans chaque feuille sélectionnée, j'ai ceci (attention c'est indigeste,
surtout pour un retour de vacances ;-) ) :
'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'------------------------------------------
' If Not Intersect(Target, [P9:AT110]) Is Nothing And Target.Count =
1 Then
' [mémoire].Interior.ColorIndex = xlNone
' ActiveWorkbook.Names.Add Name:="mémoire", RefersTo:="=" &
Range("c" & Target.Row).Address & ""
' Range("c" & Target.Row).Interior.ColorIndex = 3
' End If
'------------------------------------------
If Not Intersect(Target, [MoisInterdit]) Is Nothing And Target.Count
= 1 Then
Application.EnableEvents = False
compteur = 0
For Each com In Range("p" & Target.Row & ":at" & Target.Row)
If Len(com.NoteText) Then compteur = 1: Exit For
Next
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) > 0 Or compteur = 1 Then
Target = [mémo]
MsgBox "Vous ne devez pas supprimer ce Nom !" &
Chr(10) & Chr(10) & "(La ligne contient des informations ...)", vbOKOnly
+ vbInformation, "Attention !"
End If
End If
Application.EnableEvents = True
ActiveSheet.Shapes("Bouton 2").Select
Selection.Characters.Text = Range("AW3").Value
Range("F6").Select 'désélectionne le bouton !
ActiveSheet.Protect Password:="", DrawingObjects:úlse,
Contents:=True, Scenarios:úlse
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
'------------------------------------------------------
@+ ?
JP
"LSteph" a écrit dans le message de news:
OL$Bonsoir,
Pour effacer des plages pas besoin de sélectionner
voici exemple à adapter:
Sub clplg()
Dim i As Byte
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
End Sub
'lStephBonjour,
Je voudrais mettre ce qui suit sous une forme avec boucle, mais je n'y
arrive pas ;-(
Les feuilles vont de sheets(5) à sheets(16)
Merci pour vos lumières.
J'imagine qu'avec une boucle, la procédure sera plus rapide ?
J'étais parti avec qqch comme :
Sub sélectMois()
Application.DisplayAlerts = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
Next
'mes plages à effacer ...
End Sub
... mais ça bloque au niveau de mes Shapes + Workbook_Change qui fait
référence à un "Button" et il est apparemment impossible de
sélectionner tous les boutons des 12 feuilles en même temps.
Pour cette raison, j'ai pensé à une sélection et à un effacement de
chacunes des feuilles l'une après l'autre ...
Voici le code lourdaingue ;-) :
'------------------------------------------------------
Sub EffacerSaisiesBis()
Application.ScreenUpdating = False
Sheets(5).Select '5 = janvier
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
Sheets(6).Select
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
'etc jusqu'à feuille 16
End Sub
'------------------------------------------------------
...
au cas où des évennementielles réagiraient essaie ainsi
Sub clplg()
Dim i As Byte
application.enableeventsúlse
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
application.enableevents=true
End Sub
'lStephBonsoir,
J'ai fait un essai et j'ai une erreur : la méthode select de la classe
range a échoué. Habituellement, quand je sélectionnais toutes les
feuilles en même temps et je j'effaçais les plages, j'avais une erreur
avec la méthode Shape (l'effacement des saisies était ok, mais pas les
commentaires) car manifestement il était impossible de sélectionner tous
les "boutons" en même temps (cf workbook_change) ..
Dans chaque feuille sélectionnée, j'ai ceci (attention c'est indigeste,
surtout pour un retour de vacances ;-) ) :
'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'------------------------------------------
' If Not Intersect(Target, [P9:AT110]) Is Nothing And Target.Count =
1 Then
' [mémoire].Interior.ColorIndex = xlNone
' ActiveWorkbook.Names.Add Name:="mémoire", RefersTo:="=" &
Range("c" & Target.Row).Address & ""
' Range("c" & Target.Row).Interior.ColorIndex = 3
' End If
'------------------------------------------
If Not Intersect(Target, [MoisInterdit]) Is Nothing And Target.Count
= 1 Then
Application.EnableEvents = False
compteur = 0
For Each com In Range("p" & Target.Row & ":at" & Target.Row)
If Len(com.NoteText) Then compteur = 1: Exit For
Next
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) > 0 Or compteur = 1 Then
Target = [mémo]
MsgBox "Vous ne devez pas supprimer ce Nom !" &
Chr(10) & Chr(10) & "(La ligne contient des informations ...)", vbOKOnly
+ vbInformation, "Attention !"
End If
End If
Application.EnableEvents = True
ActiveSheet.Shapes("Bouton 2").Select
Selection.Characters.Text = Range("AW3").Value
Range("F6").Select 'désélectionne le bouton !
ActiveSheet.Protect Password:="", DrawingObjects:úlse,
Contents:=True, Scenarios:úlse
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
'------------------------------------------------------
@+ ?
JP
"LSteph" a écrit dans le message de news:
OL$Bonsoir,
Pour effacer des plages pas besoin de sélectionner
voici exemple à adapter:
Sub clplg()
Dim i As Byte
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
End Sub
'lStephBonjour,
Je voudrais mettre ce qui suit sous une forme avec boucle, mais je n'y
arrive pas ;-(
Les feuilles vont de sheets(5) à sheets(16)
Merci pour vos lumières.
J'imagine qu'avec une boucle, la procédure sera plus rapide ?
J'étais parti avec qqch comme :
Sub sélectMois()
Application.DisplayAlerts = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
Next
'mes plages à effacer ...
End Sub
... mais ça bloque au niveau de mes Shapes + Workbook_Change qui fait
référence à un "Button" et il est apparemment impossible de
sélectionner tous les boutons des 12 feuilles en même temps.
Pour cette raison, j'ai pensé à une sélection et à un effacement de
chacunes des feuilles l'une après l'autre ...
Voici le code lourdaingue ;-) :
'------------------------------------------------------
Sub EffacerSaisiesBis()
Application.ScreenUpdating = False
Sheets(5).Select '5 = janvier
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
Sheets(6).Select
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
'etc jusqu'à feuille 16
End Sub
'------------------------------------------------------
...
au cas où des évennementielles réagiraient essaie ainsi
Sub clplg()
Dim i As Byte
application.enableeventsúlse
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
application.enableevents=true
End Sub
'lSteph
Bonsoir,
J'ai fait un essai et j'ai une erreur : la méthode select de la classe
range a échoué. Habituellement, quand je sélectionnais toutes les
feuilles en même temps et je j'effaçais les plages, j'avais une erreur
avec la méthode Shape (l'effacement des saisies était ok, mais pas les
commentaires) car manifestement il était impossible de sélectionner tous
les "boutons" en même temps (cf workbook_change) ..
Dans chaque feuille sélectionnée, j'ai ceci (attention c'est indigeste,
surtout pour un retour de vacances ;-) ) :
'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'------------------------------------------
' If Not Intersect(Target, [P9:AT110]) Is Nothing And Target.Count =
1 Then
' [mémoire].Interior.ColorIndex = xlNone
' ActiveWorkbook.Names.Add Name:="mémoire", RefersTo:="=" &
Range("c" & Target.Row).Address & ""
' Range("c" & Target.Row).Interior.ColorIndex = 3
' End If
'------------------------------------------
If Not Intersect(Target, [MoisInterdit]) Is Nothing And Target.Count
= 1 Then
Application.EnableEvents = False
compteur = 0
For Each com In Range("p" & Target.Row & ":at" & Target.Row)
If Len(com.NoteText) Then compteur = 1: Exit For
Next
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) > 0 Or compteur = 1 Then
Target = [mémo]
MsgBox "Vous ne devez pas supprimer ce Nom !" &
Chr(10) & Chr(10) & "(La ligne contient des informations ...)", vbOKOnly
+ vbInformation, "Attention !"
End If
End If
Application.EnableEvents = True
ActiveSheet.Shapes("Bouton 2").Select
Selection.Characters.Text = Range("AW3").Value
Range("F6").Select 'désélectionne le bouton !
ActiveSheet.Protect Password:="", DrawingObjects:úlse,
Contents:=True, Scenarios:úlse
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
'------------------------------------------------------
@+ ?
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
OL$bA415HHA.5160@TK2MSFTNGP05.phx.gbl...
Bonsoir,
Pour effacer des plages pas besoin de sélectionner
voici exemple à adapter:
Sub clplg()
Dim i As Byte
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
End Sub
'lSteph
Bonjour,
Je voudrais mettre ce qui suit sous une forme avec boucle, mais je n'y
arrive pas ;-(
Les feuilles vont de sheets(5) à sheets(16)
Merci pour vos lumières.
J'imagine qu'avec une boucle, la procédure sera plus rapide ?
J'étais parti avec qqch comme :
Sub sélectMois()
Application.DisplayAlerts = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
Next
'mes plages à effacer ...
End Sub
... mais ça bloque au niveau de mes Shapes + Workbook_Change qui fait
référence à un "Button" et il est apparemment impossible de
sélectionner tous les boutons des 12 feuilles en même temps.
Pour cette raison, j'ai pensé à une sélection et à un effacement de
chacunes des feuilles l'une après l'autre ...
Voici le code lourdaingue ;-) :
'------------------------------------------------------
Sub EffacerSaisiesBis()
Application.ScreenUpdating = False
Sheets(5).Select '5 = janvier
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
Sheets(6).Select
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
'etc jusqu'à feuille 16
End Sub
'------------------------------------------------------
...
au cas où des évennementielles réagiraient essaie ainsi
Sub clplg()
Dim i As Byte
application.enableeventsúlse
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
application.enableevents=true
End Sub
'lStephBonsoir,
J'ai fait un essai et j'ai une erreur : la méthode select de la classe
range a échoué. Habituellement, quand je sélectionnais toutes les
feuilles en même temps et je j'effaçais les plages, j'avais une erreur
avec la méthode Shape (l'effacement des saisies était ok, mais pas les
commentaires) car manifestement il était impossible de sélectionner tous
les "boutons" en même temps (cf workbook_change) ..
Dans chaque feuille sélectionnée, j'ai ceci (attention c'est indigeste,
surtout pour un retour de vacances ;-) ) :
'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'------------------------------------------
' If Not Intersect(Target, [P9:AT110]) Is Nothing And Target.Count =
1 Then
' [mémoire].Interior.ColorIndex = xlNone
' ActiveWorkbook.Names.Add Name:="mémoire", RefersTo:="=" &
Range("c" & Target.Row).Address & ""
' Range("c" & Target.Row).Interior.ColorIndex = 3
' End If
'------------------------------------------
If Not Intersect(Target, [MoisInterdit]) Is Nothing And Target.Count
= 1 Then
Application.EnableEvents = False
compteur = 0
For Each com In Range("p" & Target.Row & ":at" & Target.Row)
If Len(com.NoteText) Then compteur = 1: Exit For
Next
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) > 0 Or compteur = 1 Then
Target = [mémo]
MsgBox "Vous ne devez pas supprimer ce Nom !" &
Chr(10) & Chr(10) & "(La ligne contient des informations ...)", vbOKOnly
+ vbInformation, "Attention !"
End If
End If
Application.EnableEvents = True
ActiveSheet.Shapes("Bouton 2").Select
Selection.Characters.Text = Range("AW3").Value
Range("F6").Select 'désélectionne le bouton !
ActiveSheet.Protect Password:="", DrawingObjects:úlse,
Contents:=True, Scenarios:úlse
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
'------------------------------------------------------
@+ ?
JP
"LSteph" a écrit dans le message de news:
OL$Bonsoir,
Pour effacer des plages pas besoin de sélectionner
voici exemple à adapter:
Sub clplg()
Dim i As Byte
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
End Sub
'lStephBonjour,
Je voudrais mettre ce qui suit sous une forme avec boucle, mais je n'y
arrive pas ;-(
Les feuilles vont de sheets(5) à sheets(16)
Merci pour vos lumières.
J'imagine qu'avec une boucle, la procédure sera plus rapide ?
J'étais parti avec qqch comme :
Sub sélectMois()
Application.DisplayAlerts = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
Next
'mes plages à effacer ...
End Sub
... mais ça bloque au niveau de mes Shapes + Workbook_Change qui fait
référence à un "Button" et il est apparemment impossible de
sélectionner tous les boutons des 12 feuilles en même temps.
Pour cette raison, j'ai pensé à une sélection et à un effacement de
chacunes des feuilles l'une après l'autre ...
Voici le code lourdaingue ;-) :
'------------------------------------------------------
Sub EffacerSaisiesBis()
Application.ScreenUpdating = False
Sheets(5).Select '5 = janvier
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
Sheets(6).Select
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
'etc jusqu'à feuille 16
End Sub
'------------------------------------------------------
Bonjour,
Je pars bosser ... j'essaie tout ceci ce soir ;-)
Si ta présente proposition permet de "Shunter" le Workbook_Change entre
deux effacements de Feuille(s) alors là c'est vraiment génial !! Je
n'osais même pas imaginer que cela puisse être possible ! Quand
j'exécutais mes procédures avec F8, je voyais défiler tous les "Change !"
inexorablement ... (Je ne sais pas comment il faut dire !!). Par ailleurs
cela ne peut qu'accélérer la procédure ...
A ce soir,
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:Bonjour,
Essaie comme ceci :
J'ai cru comprendre que certaines lignes ('ajouté % Worksheet_Change !)
étaient là pour gérer le lancement incongru d'événementielles ; si c'est
bien le cas, elles ne sont plus utiles du fait de l'instruction
Application.EnableEvents = False ; si au contraire, tu souhaites leur
exécution, il faut ajouter l'instruction doevents avant la sélection de
P9
Sub sélectMois()
Application.DisplayAlerts = False
Application.EnableEvents = False
For i = Sheets.Count To 5 Step -1
Sheets(i).Select
'les actions sur tes plages à effacer ...
'------------------------------
Range("MoisPlageSaisies").ClearContents
Range("MoisInterdit").ClearContents
Range("MoisPlageSaisies").ClearComments
'doevents
Range("P9").Select
'------------------------------
Next i
Application.EnableEvents = True
Application.DisplayAlerts = True
Sheets("toto").Select
End Sub
--
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonsoir,
C'est (presque) parfait !
En fait, ça marche si la procédure est lancée alors que j'ai activé
(sélectionné) une des 12 feuilles correspondant aux mois à effacer
(sheets(5) à sheets(16)) sinon j'ai le message :
"La méthode de la classe Range a échoué" !
Par ailleurs, j'ai essayé de désélectionner toutes les feuilles avec
l'enregistrement automatique et je vois que cela consiste à sélectionner
une feuille ! J'imagine que c'est donc ce qu'il y a de "mieux" à faire
!?
En résumé :
'-----------------------------------------------
Sub sélectMois()
Application.DisplayAlerts = False
Application.EnableEvents = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
'les actions sur tes plages à effacer ...
'------------------------------
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("P9").Select
'------------------------------
Next i
Application.EnableEvents = True
Application.DisplayAlerts = True
Sheets("toto").Select
End Sub
'-----------------------------------------------
Merci, avec la (petite) modif que j'ai faite, tout fonctionne à
merveille.. Il ne me reste plus qu'à trouvé un petit bout de code que
j'ai utilisé il y a qq temps pour avoir un Shape qui annonce à
l'utilisateur que la macro est en train de tourner ...
Merci encore,
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:Bonsoir,
Je propose :
Sub sélectMois()
Application.DisplayAlerts = False
application.enableeventsúlse
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
'les actions sur tes plages à effacer ...
Next i
application.enableevents=true
Application.DisplayAlerts = True
End Sub
--
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonjour,
Je voudrais mettre ce qui suit sous une forme avec boucle, mais je n'y
arrive pas ;-(
Les feuilles vont de sheets(5) à sheets(16)
Merci pour vos lumières.
J'imagine qu'avec une boucle, la procédure sera plus rapide ?
J'étais parti avec qqch comme :
Sub sélectMois()
Application.DisplayAlerts = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
Next
'mes plages à effacer ...
End Sub
... mais ça bloque au niveau de mes Shapes + Workbook_Change qui fait
référence à un "Button" et il est apparemment impossible de
sélectionner tous les boutons des 12 feuilles en même temps.
Pour cette raison, j'ai pensé à une sélection et à un effacement de
chacunes des feuilles l'une après l'autre ...
Voici le code lourdaingue ;-) :
'------------------------------------------------------
Sub EffacerSaisiesBis()
Application.ScreenUpdating = False
Sheets(5).Select '5 = janvier
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
Sheets(6).Select
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
'etc jusqu'à feuille 16
End Sub
'------------------------------------------------------
--
Cordialement @+
JP
Bonjour,
Je pars bosser ... j'essaie tout ceci ce soir ;-)
Si ta présente proposition permet de "Shunter" le Workbook_Change entre
deux effacements de Feuille(s) alors là c'est vraiment génial !! Je
n'osais même pas imaginer que cela puisse être possible ! Quand
j'exécutais mes procédures avec F8, je voyais défiler tous les "Change !"
inexorablement ... (Je ne sais pas comment il faut dire !!). Par ailleurs
cela ne peut qu'accélérer la procédure ...
A ce soir,
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
eup9kC65HHA.3716@TK2MSFTNGP03.phx.gbl...
Bonjour,
Essaie comme ceci :
J'ai cru comprendre que certaines lignes ('ajouté % Worksheet_Change !)
étaient là pour gérer le lancement incongru d'événementielles ; si c'est
bien le cas, elles ne sont plus utiles du fait de l'instruction
Application.EnableEvents = False ; si au contraire, tu souhaites leur
exécution, il faut ajouter l'instruction doevents avant la sélection de
P9
Sub sélectMois()
Application.DisplayAlerts = False
Application.EnableEvents = False
For i = Sheets.Count To 5 Step -1
Sheets(i).Select
'les actions sur tes plages à effacer ...
'------------------------------
Range("MoisPlageSaisies").ClearContents
Range("MoisInterdit").ClearContents
Range("MoisPlageSaisies").ClearComments
'doevents
Range("P9").Select
'------------------------------
Next i
Application.EnableEvents = True
Application.DisplayAlerts = True
Sheets("toto").Select
End Sub
--
Avec plaisir
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:%23NB43W25HHA.4712@TK2MSFTNGP04.phx.gbl...
Bonsoir,
C'est (presque) parfait !
En fait, ça marche si la procédure est lancée alors que j'ai activé
(sélectionné) une des 12 feuilles correspondant aux mois à effacer
(sheets(5) à sheets(16)) sinon j'ai le message :
"La méthode de la classe Range a échoué" !
Par ailleurs, j'ai essayé de désélectionner toutes les feuilles avec
l'enregistrement automatique et je vois que cela consiste à sélectionner
une feuille ! J'imagine que c'est donc ce qu'il y a de "mieux" à faire
!?
En résumé :
'-----------------------------------------------
Sub sélectMois()
Application.DisplayAlerts = False
Application.EnableEvents = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
'les actions sur tes plages à effacer ...
'------------------------------
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("P9").Select
'------------------------------
Next i
Application.EnableEvents = True
Application.DisplayAlerts = True
Sheets("toto").Select
End Sub
'-----------------------------------------------
Merci, avec la (petite) modif que j'ai faite, tout fonctionne à
merveille.. Il ne me reste plus qu'à trouvé un petit bout de code que
j'ai utilisé il y a qq temps pour avoir un Shape qui annonce à
l'utilisateur que la macro est en train de tourner ...
Merci encore,
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
uVtlU815HHA.3740@TK2MSFTNGP02.phx.gbl...
Bonsoir,
Je propose :
Sub sélectMois()
Application.DisplayAlerts = False
application.enableeventsúlse
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
'les actions sur tes plages à effacer ...
Next i
application.enableevents=true
Application.DisplayAlerts = True
End Sub
--
Avec plaisir
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:u7YH3p15HHA.5268@TK2MSFTNGP02.phx.gbl...
Bonjour,
Je voudrais mettre ce qui suit sous une forme avec boucle, mais je n'y
arrive pas ;-(
Les feuilles vont de sheets(5) à sheets(16)
Merci pour vos lumières.
J'imagine qu'avec une boucle, la procédure sera plus rapide ?
J'étais parti avec qqch comme :
Sub sélectMois()
Application.DisplayAlerts = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
Next
'mes plages à effacer ...
End Sub
... mais ça bloque au niveau de mes Shapes + Workbook_Change qui fait
référence à un "Button" et il est apparemment impossible de
sélectionner tous les boutons des 12 feuilles en même temps.
Pour cette raison, j'ai pensé à une sélection et à un effacement de
chacunes des feuilles l'une après l'autre ...
Voici le code lourdaingue ;-) :
'------------------------------------------------------
Sub EffacerSaisiesBis()
Application.ScreenUpdating = False
Sheets(5).Select '5 = janvier
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
Sheets(6).Select
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
'etc jusqu'à feuille 16
End Sub
'------------------------------------------------------
--
Cordialement @+
JP
Bonjour,
Je pars bosser ... j'essaie tout ceci ce soir ;-)
Si ta présente proposition permet de "Shunter" le Workbook_Change entre
deux effacements de Feuille(s) alors là c'est vraiment génial !! Je
n'osais même pas imaginer que cela puisse être possible ! Quand
j'exécutais mes procédures avec F8, je voyais défiler tous les "Change !"
inexorablement ... (Je ne sais pas comment il faut dire !!). Par ailleurs
cela ne peut qu'accélérer la procédure ...
A ce soir,
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:Bonjour,
Essaie comme ceci :
J'ai cru comprendre que certaines lignes ('ajouté % Worksheet_Change !)
étaient là pour gérer le lancement incongru d'événementielles ; si c'est
bien le cas, elles ne sont plus utiles du fait de l'instruction
Application.EnableEvents = False ; si au contraire, tu souhaites leur
exécution, il faut ajouter l'instruction doevents avant la sélection de
P9
Sub sélectMois()
Application.DisplayAlerts = False
Application.EnableEvents = False
For i = Sheets.Count To 5 Step -1
Sheets(i).Select
'les actions sur tes plages à effacer ...
'------------------------------
Range("MoisPlageSaisies").ClearContents
Range("MoisInterdit").ClearContents
Range("MoisPlageSaisies").ClearComments
'doevents
Range("P9").Select
'------------------------------
Next i
Application.EnableEvents = True
Application.DisplayAlerts = True
Sheets("toto").Select
End Sub
--
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonsoir,
C'est (presque) parfait !
En fait, ça marche si la procédure est lancée alors que j'ai activé
(sélectionné) une des 12 feuilles correspondant aux mois à effacer
(sheets(5) à sheets(16)) sinon j'ai le message :
"La méthode de la classe Range a échoué" !
Par ailleurs, j'ai essayé de désélectionner toutes les feuilles avec
l'enregistrement automatique et je vois que cela consiste à sélectionner
une feuille ! J'imagine que c'est donc ce qu'il y a de "mieux" à faire
!?
En résumé :
'-----------------------------------------------
Sub sélectMois()
Application.DisplayAlerts = False
Application.EnableEvents = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
'les actions sur tes plages à effacer ...
'------------------------------
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("P9").Select
'------------------------------
Next i
Application.EnableEvents = True
Application.DisplayAlerts = True
Sheets("toto").Select
End Sub
'-----------------------------------------------
Merci, avec la (petite) modif que j'ai faite, tout fonctionne à
merveille.. Il ne me reste plus qu'à trouvé un petit bout de code que
j'ai utilisé il y a qq temps pour avoir un Shape qui annonce à
l'utilisateur que la macro est en train de tourner ...
Merci encore,
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:Bonsoir,
Je propose :
Sub sélectMois()
Application.DisplayAlerts = False
application.enableeventsúlse
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
'les actions sur tes plages à effacer ...
Next i
application.enableevents=true
Application.DisplayAlerts = True
End Sub
--
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonjour,
Je voudrais mettre ce qui suit sous une forme avec boucle, mais je n'y
arrive pas ;-(
Les feuilles vont de sheets(5) à sheets(16)
Merci pour vos lumières.
J'imagine qu'avec une boucle, la procédure sera plus rapide ?
J'étais parti avec qqch comme :
Sub sélectMois()
Application.DisplayAlerts = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
Next
'mes plages à effacer ...
End Sub
... mais ça bloque au niveau de mes Shapes + Workbook_Change qui fait
référence à un "Button" et il est apparemment impossible de
sélectionner tous les boutons des 12 feuilles en même temps.
Pour cette raison, j'ai pensé à une sélection et à un effacement de
chacunes des feuilles l'une après l'autre ...
Voici le code lourdaingue ;-) :
'------------------------------------------------------
Sub EffacerSaisiesBis()
Application.ScreenUpdating = False
Sheets(5).Select '5 = janvier
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
Sheets(6).Select
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
'etc jusqu'à feuille 16
End Sub
'------------------------------------------------------
--
Cordialement @+
JP
Re,
Oui, l'instruction Application.EnableEvents = False neutralise les
procédures évènementielles.
--
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonjour,
Je pars bosser ... j'essaie tout ceci ce soir ;-)
Si ta présente proposition permet de "Shunter" le Workbook_Change entre
deux effacements de Feuille(s) alors là c'est vraiment génial !! Je
n'osais même pas imaginer que cela puisse être possible ! Quand
j'exécutais mes procédures avec F8, je voyais défiler tous les "Change !"
inexorablement ... (Je ne sais pas comment il faut dire !!). Par ailleurs
cela ne peut qu'accélérer la procédure ...
A ce soir,
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:Bonjour,
Essaie comme ceci :
J'ai cru comprendre que certaines lignes ('ajouté % Worksheet_Change !)
étaient là pour gérer le lancement incongru d'événementielles ; si c'est
bien le cas, elles ne sont plus utiles du fait de l'instruction
Application.EnableEvents = False ; si au contraire, tu souhaites leur
exécution, il faut ajouter l'instruction doevents avant la sélection de
P9
Sub sélectMois()
Application.DisplayAlerts = False
Application.EnableEvents = False
For i = Sheets.Count To 5 Step -1
Sheets(i).Select
'les actions sur tes plages à effacer ...
'------------------------------
Range("MoisPlageSaisies").ClearContents
Range("MoisInterdit").ClearContents
Range("MoisPlageSaisies").ClearComments
'doevents
Range("P9").Select
'------------------------------
Next i
Application.EnableEvents = True
Application.DisplayAlerts = True
Sheets("toto").Select
End Sub
--
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonsoir,
C'est (presque) parfait !
En fait, ça marche si la procédure est lancée alors que j'ai activé
(sélectionné) une des 12 feuilles correspondant aux mois à effacer
(sheets(5) à sheets(16)) sinon j'ai le message :
"La méthode de la classe Range a échoué" !
Par ailleurs, j'ai essayé de désélectionner toutes les feuilles avec
l'enregistrement automatique et je vois que cela consiste à
sélectionner une feuille ! J'imagine que c'est donc ce qu'il y a de
"mieux" à faire !?
En résumé :
'-----------------------------------------------
Sub sélectMois()
Application.DisplayAlerts = False
Application.EnableEvents = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
'les actions sur tes plages à effacer ...
'------------------------------
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("P9").Select
'------------------------------
Next i
Application.EnableEvents = True
Application.DisplayAlerts = True
Sheets("toto").Select
End Sub
'-----------------------------------------------
Merci, avec la (petite) modif que j'ai faite, tout fonctionne à
merveille.. Il ne me reste plus qu'à trouvé un petit bout de code que
j'ai utilisé il y a qq temps pour avoir un Shape qui annonce à
l'utilisateur que la macro est en train de tourner ...
Merci encore,
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Bonsoir,
Je propose :
Sub sélectMois()
Application.DisplayAlerts = False
application.enableeventsúlse
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
'les actions sur tes plages à effacer ...
Next i
application.enableevents=true
Application.DisplayAlerts = True
End Sub
--
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonjour,
Je voudrais mettre ce qui suit sous une forme avec boucle, mais je
n'y arrive pas ;-(
Les feuilles vont de sheets(5) à sheets(16)
Merci pour vos lumières.
J'imagine qu'avec une boucle, la procédure sera plus rapide ?
J'étais parti avec qqch comme :
Sub sélectMois()
Application.DisplayAlerts = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
Next
'mes plages à effacer ...
End Sub
... mais ça bloque au niveau de mes Shapes + Workbook_Change qui fait
référence à un "Button" et il est apparemment impossible de
sélectionner tous les boutons des 12 feuilles en même temps.
Pour cette raison, j'ai pensé à une sélection et à un effacement de
chacunes des feuilles l'une après l'autre ...
Voici le code lourdaingue ;-) :
'------------------------------------------------------
Sub EffacerSaisiesBis()
Application.ScreenUpdating = False
Sheets(5).Select '5 = janvier
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
Sheets(6).Select
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
'etc jusqu'à feuille 16
End Sub
'------------------------------------------------------
--
Cordialement @+
JP
Re,
Oui, l'instruction Application.EnableEvents = False neutralise les
procédures évènementielles.
--
Avec plaisir
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:%23eZr9g65HHA.1212@TK2MSFTNGP05.phx.gbl...
Bonjour,
Je pars bosser ... j'essaie tout ceci ce soir ;-)
Si ta présente proposition permet de "Shunter" le Workbook_Change entre
deux effacements de Feuille(s) alors là c'est vraiment génial !! Je
n'osais même pas imaginer que cela puisse être possible ! Quand
j'exécutais mes procédures avec F8, je voyais défiler tous les "Change !"
inexorablement ... (Je ne sais pas comment il faut dire !!). Par ailleurs
cela ne peut qu'accélérer la procédure ...
A ce soir,
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
eup9kC65HHA.3716@TK2MSFTNGP03.phx.gbl...
Bonjour,
Essaie comme ceci :
J'ai cru comprendre que certaines lignes ('ajouté % Worksheet_Change !)
étaient là pour gérer le lancement incongru d'événementielles ; si c'est
bien le cas, elles ne sont plus utiles du fait de l'instruction
Application.EnableEvents = False ; si au contraire, tu souhaites leur
exécution, il faut ajouter l'instruction doevents avant la sélection de
P9
Sub sélectMois()
Application.DisplayAlerts = False
Application.EnableEvents = False
For i = Sheets.Count To 5 Step -1
Sheets(i).Select
'les actions sur tes plages à effacer ...
'------------------------------
Range("MoisPlageSaisies").ClearContents
Range("MoisInterdit").ClearContents
Range("MoisPlageSaisies").ClearComments
'doevents
Range("P9").Select
'------------------------------
Next i
Application.EnableEvents = True
Application.DisplayAlerts = True
Sheets("toto").Select
End Sub
--
Avec plaisir
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:%23NB43W25HHA.4712@TK2MSFTNGP04.phx.gbl...
Bonsoir,
C'est (presque) parfait !
En fait, ça marche si la procédure est lancée alors que j'ai activé
(sélectionné) une des 12 feuilles correspondant aux mois à effacer
(sheets(5) à sheets(16)) sinon j'ai le message :
"La méthode de la classe Range a échoué" !
Par ailleurs, j'ai essayé de désélectionner toutes les feuilles avec
l'enregistrement automatique et je vois que cela consiste à
sélectionner une feuille ! J'imagine que c'est donc ce qu'il y a de
"mieux" à faire !?
En résumé :
'-----------------------------------------------
Sub sélectMois()
Application.DisplayAlerts = False
Application.EnableEvents = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
'les actions sur tes plages à effacer ...
'------------------------------
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("P9").Select
'------------------------------
Next i
Application.EnableEvents = True
Application.DisplayAlerts = True
Sheets("toto").Select
End Sub
'-----------------------------------------------
Merci, avec la (petite) modif que j'ai faite, tout fonctionne à
merveille.. Il ne me reste plus qu'à trouvé un petit bout de code que
j'ai utilisé il y a qq temps pour avoir un Shape qui annonce à
l'utilisateur que la macro est en train de tourner ...
Merci encore,
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: uVtlU815HHA.3740@TK2MSFTNGP02.phx.gbl...
Bonsoir,
Je propose :
Sub sélectMois()
Application.DisplayAlerts = False
application.enableeventsúlse
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
'les actions sur tes plages à effacer ...
Next i
application.enableevents=true
Application.DisplayAlerts = True
End Sub
--
Avec plaisir
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:u7YH3p15HHA.5268@TK2MSFTNGP02.phx.gbl...
Bonjour,
Je voudrais mettre ce qui suit sous une forme avec boucle, mais je
n'y arrive pas ;-(
Les feuilles vont de sheets(5) à sheets(16)
Merci pour vos lumières.
J'imagine qu'avec une boucle, la procédure sera plus rapide ?
J'étais parti avec qqch comme :
Sub sélectMois()
Application.DisplayAlerts = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
Next
'mes plages à effacer ...
End Sub
... mais ça bloque au niveau de mes Shapes + Workbook_Change qui fait
référence à un "Button" et il est apparemment impossible de
sélectionner tous les boutons des 12 feuilles en même temps.
Pour cette raison, j'ai pensé à une sélection et à un effacement de
chacunes des feuilles l'une après l'autre ...
Voici le code lourdaingue ;-) :
'------------------------------------------------------
Sub EffacerSaisiesBis()
Application.ScreenUpdating = False
Sheets(5).Select '5 = janvier
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
Sheets(6).Select
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
'etc jusqu'à feuille 16
End Sub
'------------------------------------------------------
--
Cordialement @+
JP
Re,
Oui, l'instruction Application.EnableEvents = False neutralise les
procédures évènementielles.
--
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonjour,
Je pars bosser ... j'essaie tout ceci ce soir ;-)
Si ta présente proposition permet de "Shunter" le Workbook_Change entre
deux effacements de Feuille(s) alors là c'est vraiment génial !! Je
n'osais même pas imaginer que cela puisse être possible ! Quand
j'exécutais mes procédures avec F8, je voyais défiler tous les "Change !"
inexorablement ... (Je ne sais pas comment il faut dire !!). Par ailleurs
cela ne peut qu'accélérer la procédure ...
A ce soir,
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:Bonjour,
Essaie comme ceci :
J'ai cru comprendre que certaines lignes ('ajouté % Worksheet_Change !)
étaient là pour gérer le lancement incongru d'événementielles ; si c'est
bien le cas, elles ne sont plus utiles du fait de l'instruction
Application.EnableEvents = False ; si au contraire, tu souhaites leur
exécution, il faut ajouter l'instruction doevents avant la sélection de
P9
Sub sélectMois()
Application.DisplayAlerts = False
Application.EnableEvents = False
For i = Sheets.Count To 5 Step -1
Sheets(i).Select
'les actions sur tes plages à effacer ...
'------------------------------
Range("MoisPlageSaisies").ClearContents
Range("MoisInterdit").ClearContents
Range("MoisPlageSaisies").ClearComments
'doevents
Range("P9").Select
'------------------------------
Next i
Application.EnableEvents = True
Application.DisplayAlerts = True
Sheets("toto").Select
End Sub
--
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonsoir,
C'est (presque) parfait !
En fait, ça marche si la procédure est lancée alors que j'ai activé
(sélectionné) une des 12 feuilles correspondant aux mois à effacer
(sheets(5) à sheets(16)) sinon j'ai le message :
"La méthode de la classe Range a échoué" !
Par ailleurs, j'ai essayé de désélectionner toutes les feuilles avec
l'enregistrement automatique et je vois que cela consiste à
sélectionner une feuille ! J'imagine que c'est donc ce qu'il y a de
"mieux" à faire !?
En résumé :
'-----------------------------------------------
Sub sélectMois()
Application.DisplayAlerts = False
Application.EnableEvents = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
'les actions sur tes plages à effacer ...
'------------------------------
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("P9").Select
'------------------------------
Next i
Application.EnableEvents = True
Application.DisplayAlerts = True
Sheets("toto").Select
End Sub
'-----------------------------------------------
Merci, avec la (petite) modif que j'ai faite, tout fonctionne à
merveille.. Il ne me reste plus qu'à trouvé un petit bout de code que
j'ai utilisé il y a qq temps pour avoir un Shape qui annonce à
l'utilisateur que la macro est en train de tourner ...
Merci encore,
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Bonsoir,
Je propose :
Sub sélectMois()
Application.DisplayAlerts = False
application.enableeventsúlse
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
'les actions sur tes plages à effacer ...
Next i
application.enableevents=true
Application.DisplayAlerts = True
End Sub
--
Avec plaisir
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonjour,
Je voudrais mettre ce qui suit sous une forme avec boucle, mais je
n'y arrive pas ;-(
Les feuilles vont de sheets(5) à sheets(16)
Merci pour vos lumières.
J'imagine qu'avec une boucle, la procédure sera plus rapide ?
J'étais parti avec qqch comme :
Sub sélectMois()
Application.DisplayAlerts = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
Next
'mes plages à effacer ...
End Sub
... mais ça bloque au niveau de mes Shapes + Workbook_Change qui fait
référence à un "Button" et il est apparemment impossible de
sélectionner tous les boutons des 12 feuilles en même temps.
Pour cette raison, j'ai pensé à une sélection et à un effacement de
chacunes des feuilles l'une après l'autre ...
Voici le code lourdaingue ;-) :
'------------------------------------------------------
Sub EffacerSaisiesBis()
Application.ScreenUpdating = False
Sheets(5).Select '5 = janvier
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
Sheets(6).Select
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
'etc jusqu'à feuille 16
End Sub
'------------------------------------------------------
--
Cordialement @+
JP
...
au cas où des évennementielles réagiraient essaie ainsi
Sub clplg()
Dim i As Byte
application.enableeventsúlse
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
application.enableevents=true
End Sub
'lStephBonsoir,
J'ai fait un essai et j'ai une erreur : la méthode select de la classe
range a échoué. Habituellement, quand je sélectionnais toutes les
feuilles en même temps et je j'effaçais les plages, j'avais une erreur
avec la méthode Shape (l'effacement des saisies était ok, mais pas les
commentaires) car manifestement il était impossible de sélectionner tous
les "boutons" en même temps (cf workbook_change) ..
Dans chaque feuille sélectionnée, j'ai ceci (attention c'est indigeste,
surtout pour un retour de vacances ;-) ) :
'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'------------------------------------------
' If Not Intersect(Target, [P9:AT110]) Is Nothing And Target.Count =
1 Then
' [mémoire].Interior.ColorIndex = xlNone
' ActiveWorkbook.Names.Add Name:="mémoire", RefersTo:="=" &
Range("c" & Target.Row).Address & ""
' Range("c" & Target.Row).Interior.ColorIndex = 3
' End If
'------------------------------------------
If Not Intersect(Target, [MoisInterdit]) Is Nothing And Target.Count
= 1 Then
Application.EnableEvents = False
compteur = 0
For Each com In Range("p" & Target.Row & ":at" & Target.Row)
If Len(com.NoteText) Then compteur = 1: Exit For
Next
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) > 0 Or compteur = 1 Then
Target = [mémo]
MsgBox "Vous ne devez pas supprimer ce Nom !" &
Chr(10) & Chr(10) & "(La ligne contient des informations ...)", vbOKOnly
+ vbInformation, "Attention !"
End If
End If
Application.EnableEvents = True
ActiveSheet.Shapes("Bouton 2").Select
Selection.Characters.Text = Range("AW3").Value
Range("F6").Select 'désélectionne le bouton !
ActiveSheet.Protect Password:="", DrawingObjects:úlse,
Contents:=True, Scenarios:úlse
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
'------------------------------------------------------
@+ ?
JP
"LSteph" a écrit dans le message de news:
OL$Bonsoir,
Pour effacer des plages pas besoin de sélectionner
voici exemple à adapter:
Sub clplg()
Dim i As Byte
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
End Sub
'lStephBonjour,
Je voudrais mettre ce qui suit sous une forme avec boucle, mais je n'y
arrive pas ;-(
Les feuilles vont de sheets(5) à sheets(16)
Merci pour vos lumières.
J'imagine qu'avec une boucle, la procédure sera plus rapide ?
J'étais parti avec qqch comme :
Sub sélectMois()
Application.DisplayAlerts = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
Next
'mes plages à effacer ...
End Sub
... mais ça bloque au niveau de mes Shapes + Workbook_Change qui fait
référence à un "Button" et il est apparemment impossible de
sélectionner tous les boutons des 12 feuilles en même temps.
Pour cette raison, j'ai pensé à une sélection et à un effacement de
chacunes des feuilles l'une après l'autre ...
Voici le code lourdaingue ;-) :
'------------------------------------------------------
Sub EffacerSaisiesBis()
Application.ScreenUpdating = False
Sheets(5).Select '5 = janvier
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
Sheets(6).Select
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
'etc jusqu'à feuille 16
End Sub
'------------------------------------------------------
...
au cas où des évennementielles réagiraient essaie ainsi
Sub clplg()
Dim i As Byte
application.enableeventsúlse
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
application.enableevents=true
End Sub
'lSteph
Bonsoir,
J'ai fait un essai et j'ai une erreur : la méthode select de la classe
range a échoué. Habituellement, quand je sélectionnais toutes les
feuilles en même temps et je j'effaçais les plages, j'avais une erreur
avec la méthode Shape (l'effacement des saisies était ok, mais pas les
commentaires) car manifestement il était impossible de sélectionner tous
les "boutons" en même temps (cf workbook_change) ..
Dans chaque feuille sélectionnée, j'ai ceci (attention c'est indigeste,
surtout pour un retour de vacances ;-) ) :
'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'------------------------------------------
' If Not Intersect(Target, [P9:AT110]) Is Nothing And Target.Count =
1 Then
' [mémoire].Interior.ColorIndex = xlNone
' ActiveWorkbook.Names.Add Name:="mémoire", RefersTo:="=" &
Range("c" & Target.Row).Address & ""
' Range("c" & Target.Row).Interior.ColorIndex = 3
' End If
'------------------------------------------
If Not Intersect(Target, [MoisInterdit]) Is Nothing And Target.Count
= 1 Then
Application.EnableEvents = False
compteur = 0
For Each com In Range("p" & Target.Row & ":at" & Target.Row)
If Len(com.NoteText) Then compteur = 1: Exit For
Next
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) > 0 Or compteur = 1 Then
Target = [mémo]
MsgBox "Vous ne devez pas supprimer ce Nom !" &
Chr(10) & Chr(10) & "(La ligne contient des informations ...)", vbOKOnly
+ vbInformation, "Attention !"
End If
End If
Application.EnableEvents = True
ActiveSheet.Shapes("Bouton 2").Select
Selection.Characters.Text = Range("AW3").Value
Range("F6").Select 'désélectionne le bouton !
ActiveSheet.Protect Password:="", DrawingObjects:úlse,
Contents:=True, Scenarios:úlse
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
'------------------------------------------------------
@+ ?
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
OL$bA415HHA.5160@TK2MSFTNGP05.phx.gbl...
Bonsoir,
Pour effacer des plages pas besoin de sélectionner
voici exemple à adapter:
Sub clplg()
Dim i As Byte
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
End Sub
'lSteph
Bonjour,
Je voudrais mettre ce qui suit sous une forme avec boucle, mais je n'y
arrive pas ;-(
Les feuilles vont de sheets(5) à sheets(16)
Merci pour vos lumières.
J'imagine qu'avec une boucle, la procédure sera plus rapide ?
J'étais parti avec qqch comme :
Sub sélectMois()
Application.DisplayAlerts = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
Next
'mes plages à effacer ...
End Sub
... mais ça bloque au niveau de mes Shapes + Workbook_Change qui fait
référence à un "Button" et il est apparemment impossible de
sélectionner tous les boutons des 12 feuilles en même temps.
Pour cette raison, j'ai pensé à une sélection et à un effacement de
chacunes des feuilles l'une après l'autre ...
Voici le code lourdaingue ;-) :
'------------------------------------------------------
Sub EffacerSaisiesBis()
Application.ScreenUpdating = False
Sheets(5).Select '5 = janvier
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
Sheets(6).Select
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
'etc jusqu'à feuille 16
End Sub
'------------------------------------------------------
...
au cas où des évennementielles réagiraient essaie ainsi
Sub clplg()
Dim i As Byte
application.enableeventsúlse
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
application.enableevents=true
End Sub
'lStephBonsoir,
J'ai fait un essai et j'ai une erreur : la méthode select de la classe
range a échoué. Habituellement, quand je sélectionnais toutes les
feuilles en même temps et je j'effaçais les plages, j'avais une erreur
avec la méthode Shape (l'effacement des saisies était ok, mais pas les
commentaires) car manifestement il était impossible de sélectionner tous
les "boutons" en même temps (cf workbook_change) ..
Dans chaque feuille sélectionnée, j'ai ceci (attention c'est indigeste,
surtout pour un retour de vacances ;-) ) :
'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'------------------------------------------
' If Not Intersect(Target, [P9:AT110]) Is Nothing And Target.Count =
1 Then
' [mémoire].Interior.ColorIndex = xlNone
' ActiveWorkbook.Names.Add Name:="mémoire", RefersTo:="=" &
Range("c" & Target.Row).Address & ""
' Range("c" & Target.Row).Interior.ColorIndex = 3
' End If
'------------------------------------------
If Not Intersect(Target, [MoisInterdit]) Is Nothing And Target.Count
= 1 Then
Application.EnableEvents = False
compteur = 0
For Each com In Range("p" & Target.Row & ":at" & Target.Row)
If Len(com.NoteText) Then compteur = 1: Exit For
Next
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) > 0 Or compteur = 1 Then
Target = [mémo]
MsgBox "Vous ne devez pas supprimer ce Nom !" &
Chr(10) & Chr(10) & "(La ligne contient des informations ...)", vbOKOnly
+ vbInformation, "Attention !"
End If
End If
Application.EnableEvents = True
ActiveSheet.Shapes("Bouton 2").Select
Selection.Characters.Text = Range("AW3").Value
Range("F6").Select 'désélectionne le bouton !
ActiveSheet.Protect Password:="", DrawingObjects:úlse,
Contents:=True, Scenarios:úlse
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
'------------------------------------------------------
@+ ?
JP
"LSteph" a écrit dans le message de news:
OL$Bonsoir,
Pour effacer des plages pas besoin de sélectionner
voici exemple à adapter:
Sub clplg()
Dim i As Byte
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
End Sub
'lStephBonjour,
Je voudrais mettre ce qui suit sous une forme avec boucle, mais je n'y
arrive pas ;-(
Les feuilles vont de sheets(5) à sheets(16)
Merci pour vos lumières.
J'imagine qu'avec une boucle, la procédure sera plus rapide ?
J'étais parti avec qqch comme :
Sub sélectMois()
Application.DisplayAlerts = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
Next
'mes plages à effacer ...
End Sub
... mais ça bloque au niveau de mes Shapes + Workbook_Change qui fait
référence à un "Button" et il est apparemment impossible de
sélectionner tous les boutons des 12 feuilles en même temps.
Pour cette raison, j'ai pensé à une sélection et à un effacement de
chacunes des feuilles l'une après l'autre ...
Voici le code lourdaingue ;-) :
'------------------------------------------------------
Sub EffacerSaisiesBis()
Application.ScreenUpdating = False
Sheets(5).Select '5 = janvier
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
Sheets(6).Select
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
'etc jusqu'à feuille 16
End Sub
'------------------------------------------------------
Bonsoir,
Ca semble très bien fonctionner (aussi ;-) ).
J'ai ceci :
'-------------------------------------
Sub Réinitialisation_Classeur() 'modif du 26/08/07
Dim i As Byte
Application.EnableEvents = False
For i = 5 To 16
With Worksheets(i).Range("MoisInterdit")
.ClearContents
.ClearComments
End With
Next
Application.EnableEvents = True
End Sub
'-----------------------------------
Faut-il que je crée une deuxième boucle pour effacer la plage :
"MoisPlageSaisies" ?
Je crains que cette question ne soit pas très subtile ;-(
Ca semble plus rapide que la proposition de Philippe ; en même temps
celle de Philippe est plus rassurante car je vois "défiler" les onglets
en cours d'effacement. Avec ton code, tout se passe en silence, même si
j'exécute la procédure pas à pas ...
J'ai eu un peu de mal avec la numérotation des Feuilles, car dans la
fenêtre VBAProject, j'ai Feuil1 (Janv 07), Feuil2 (Fév 07), ... ,
Feuil13 (Toto) et ton code pour effacer est :
For i = 5 To 16
With Worksheets(i). etc,
... comme si on sélectionnait les Feuilles de 5 à 16 !!!
Surement très évident pour "vous" mais pas du tout pour moi !
Spontanément, j'aurais fait : For i = 1 To 12 puisque mes mois
correspondent aux feuilles 1 à 12 !
D'où mon besoin de voir ce qui se passe avant de risquer d'effacer des
Feuilles autres que "Mois".
@+ ?
JP
"LSteph" a écrit dans le message de news:...
au cas où des évennementielles réagiraient essaie ainsi
Sub clplg()
Dim i As Byte
application.enableeventsúlse
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
application.enableevents=true
End Sub
'lStephBonsoir,
J'ai fait un essai et j'ai une erreur : la méthode select de la
classe range a échoué. Habituellement, quand je sélectionnais toutes
les feuilles en même temps et je j'effaçais les plages, j'avais une
erreur avec la méthode Shape (l'effacement des saisies était ok, mais
pas les commentaires) car manifestement il était impossible de
sélectionner tous les "boutons" en même temps (cf workbook_change) ..
Dans chaque feuille sélectionnée, j'ai ceci (attention c'est
indigeste, surtout pour un retour de vacances ;-) ) :
'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'------------------------------------------
' If Not Intersect(Target, [P9:AT110]) Is Nothing And
Target.Count = 1 Then
' [mémoire].Interior.ColorIndex = xlNone
' ActiveWorkbook.Names.Add Name:="mémoire", RefersTo:="=" &
Range("c" & Target.Row).Address & ""
' Range("c" & Target.Row).Interior.ColorIndex = 3
' End If
'------------------------------------------
If Not Intersect(Target, [MoisInterdit]) Is Nothing And
Target.Count = 1 Then
Application.EnableEvents = False
compteur = 0
For Each com In Range("p" & Target.Row & ":at" & Target.Row)
If Len(com.NoteText) Then compteur = 1: Exit For
Next
If Application.Sum(Range("f" & Target.Row & ":" & "m"
& Target.Row)) > 0 Or compteur = 1 Then
Target = [mémo]
MsgBox "Vous ne devez pas supprimer ce Nom !" &
Chr(10) & Chr(10) & "(La ligne contient des informations ...)",
vbOKOnly + vbInformation, "Attention !"
End If
End If
Application.EnableEvents = True
ActiveSheet.Shapes("Bouton 2").Select
Selection.Characters.Text = Range("AW3").Value
Range("F6").Select 'désélectionne le bouton !
ActiveSheet.Protect Password:="", DrawingObjects:úlse,
Contents:=True, Scenarios:úlse
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
'------------------------------------------------------
@+ ?
JP
"LSteph" a écrit dans le message de news:
OL$Bonsoir,
Pour effacer des plages pas besoin de sélectionner
voici exemple à adapter:
Sub clplg()
Dim i As Byte
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
End Sub
'lStephBonjour,
Je voudrais mettre ce qui suit sous une forme avec boucle, mais je
n'y arrive pas ;-(
Les feuilles vont de sheets(5) à sheets(16)
Merci pour vos lumières.
J'imagine qu'avec une boucle, la procédure sera plus rapide ?
J'étais parti avec qqch comme :
Sub sélectMois()
Application.DisplayAlerts = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
Next
'mes plages à effacer ...
End Sub
... mais ça bloque au niveau de mes Shapes + Workbook_Change qui
fait référence à un "Button" et il est apparemment impossible de
sélectionner tous les boutons des 12 feuilles en même temps.
Pour cette raison, j'ai pensé à une sélection et à un effacement de
chacunes des feuilles l'une après l'autre ...
Voici le code lourdaingue ;-) :
'------------------------------------------------------
Sub EffacerSaisiesBis()
Application.ScreenUpdating = False
Sheets(5).Select '5 = janvier
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
Sheets(6).Select
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
'etc jusqu'à feuille 16
End Sub
'------------------------------------------------------
Bonsoir,
Ca semble très bien fonctionner (aussi ;-) ).
J'ai ceci :
'-------------------------------------
Sub Réinitialisation_Classeur() 'modif du 26/08/07
Dim i As Byte
Application.EnableEvents = False
For i = 5 To 16
With Worksheets(i).Range("MoisInterdit")
.ClearContents
.ClearComments
End With
Next
Application.EnableEvents = True
End Sub
'-----------------------------------
Faut-il que je crée une deuxième boucle pour effacer la plage :
"MoisPlageSaisies" ?
Je crains que cette question ne soit pas très subtile ;-(
Ca semble plus rapide que la proposition de Philippe ; en même temps
celle de Philippe est plus rassurante car je vois "défiler" les onglets
en cours d'effacement. Avec ton code, tout se passe en silence, même si
j'exécute la procédure pas à pas ...
J'ai eu un peu de mal avec la numérotation des Feuilles, car dans la
fenêtre VBAProject, j'ai Feuil1 (Janv 07), Feuil2 (Fév 07), ... ,
Feuil13 (Toto) et ton code pour effacer est :
For i = 5 To 16
With Worksheets(i). etc,
... comme si on sélectionnait les Feuilles de 5 à 16 !!!
Surement très évident pour "vous" mais pas du tout pour moi !
Spontanément, j'aurais fait : For i = 1 To 12 puisque mes mois
correspondent aux feuilles 1 à 12 !
D'où mon besoin de voir ce qui se passe avant de risquer d'effacer des
Feuilles autres que "Mois".
@+ ?
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
eRRf8M25HHA.4584@TK2MSFTNGP03.phx.gbl...
...
au cas où des évennementielles réagiraient essaie ainsi
Sub clplg()
Dim i As Byte
application.enableeventsúlse
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
application.enableevents=true
End Sub
'lSteph
Bonsoir,
J'ai fait un essai et j'ai une erreur : la méthode select de la
classe range a échoué. Habituellement, quand je sélectionnais toutes
les feuilles en même temps et je j'effaçais les plages, j'avais une
erreur avec la méthode Shape (l'effacement des saisies était ok, mais
pas les commentaires) car manifestement il était impossible de
sélectionner tous les "boutons" en même temps (cf workbook_change) ..
Dans chaque feuille sélectionnée, j'ai ceci (attention c'est
indigeste, surtout pour un retour de vacances ;-) ) :
'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'------------------------------------------
' If Not Intersect(Target, [P9:AT110]) Is Nothing And
Target.Count = 1 Then
' [mémoire].Interior.ColorIndex = xlNone
' ActiveWorkbook.Names.Add Name:="mémoire", RefersTo:="=" &
Range("c" & Target.Row).Address & ""
' Range("c" & Target.Row).Interior.ColorIndex = 3
' End If
'------------------------------------------
If Not Intersect(Target, [MoisInterdit]) Is Nothing And
Target.Count = 1 Then
Application.EnableEvents = False
compteur = 0
For Each com In Range("p" & Target.Row & ":at" & Target.Row)
If Len(com.NoteText) Then compteur = 1: Exit For
Next
If Application.Sum(Range("f" & Target.Row & ":" & "m"
& Target.Row)) > 0 Or compteur = 1 Then
Target = [mémo]
MsgBox "Vous ne devez pas supprimer ce Nom !" &
Chr(10) & Chr(10) & "(La ligne contient des informations ...)",
vbOKOnly + vbInformation, "Attention !"
End If
End If
Application.EnableEvents = True
ActiveSheet.Shapes("Bouton 2").Select
Selection.Characters.Text = Range("AW3").Value
Range("F6").Select 'désélectionne le bouton !
ActiveSheet.Protect Password:="", DrawingObjects:úlse,
Contents:=True, Scenarios:úlse
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
'------------------------------------------------------
@+ ?
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
OL$bA415HHA.5160@TK2MSFTNGP05.phx.gbl...
Bonsoir,
Pour effacer des plages pas besoin de sélectionner
voici exemple à adapter:
Sub clplg()
Dim i As Byte
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
End Sub
'lSteph
Bonjour,
Je voudrais mettre ce qui suit sous une forme avec boucle, mais je
n'y arrive pas ;-(
Les feuilles vont de sheets(5) à sheets(16)
Merci pour vos lumières.
J'imagine qu'avec une boucle, la procédure sera plus rapide ?
J'étais parti avec qqch comme :
Sub sélectMois()
Application.DisplayAlerts = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
Next
'mes plages à effacer ...
End Sub
... mais ça bloque au niveau de mes Shapes + Workbook_Change qui
fait référence à un "Button" et il est apparemment impossible de
sélectionner tous les boutons des 12 feuilles en même temps.
Pour cette raison, j'ai pensé à une sélection et à un effacement de
chacunes des feuilles l'une après l'autre ...
Voici le code lourdaingue ;-) :
'------------------------------------------------------
Sub EffacerSaisiesBis()
Application.ScreenUpdating = False
Sheets(5).Select '5 = janvier
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
Sheets(6).Select
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
'etc jusqu'à feuille 16
End Sub
'------------------------------------------------------
Bonsoir,
Ca semble très bien fonctionner (aussi ;-) ).
J'ai ceci :
'-------------------------------------
Sub Réinitialisation_Classeur() 'modif du 26/08/07
Dim i As Byte
Application.EnableEvents = False
For i = 5 To 16
With Worksheets(i).Range("MoisInterdit")
.ClearContents
.ClearComments
End With
Next
Application.EnableEvents = True
End Sub
'-----------------------------------
Faut-il que je crée une deuxième boucle pour effacer la plage :
"MoisPlageSaisies" ?
Je crains que cette question ne soit pas très subtile ;-(
Ca semble plus rapide que la proposition de Philippe ; en même temps
celle de Philippe est plus rassurante car je vois "défiler" les onglets
en cours d'effacement. Avec ton code, tout se passe en silence, même si
j'exécute la procédure pas à pas ...
J'ai eu un peu de mal avec la numérotation des Feuilles, car dans la
fenêtre VBAProject, j'ai Feuil1 (Janv 07), Feuil2 (Fév 07), ... ,
Feuil13 (Toto) et ton code pour effacer est :
For i = 5 To 16
With Worksheets(i). etc,
... comme si on sélectionnait les Feuilles de 5 à 16 !!!
Surement très évident pour "vous" mais pas du tout pour moi !
Spontanément, j'aurais fait : For i = 1 To 12 puisque mes mois
correspondent aux feuilles 1 à 12 !
D'où mon besoin de voir ce qui se passe avant de risquer d'effacer des
Feuilles autres que "Mois".
@+ ?
JP
"LSteph" a écrit dans le message de news:...
au cas où des évennementielles réagiraient essaie ainsi
Sub clplg()
Dim i As Byte
application.enableeventsúlse
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
application.enableevents=true
End Sub
'lStephBonsoir,
J'ai fait un essai et j'ai une erreur : la méthode select de la
classe range a échoué. Habituellement, quand je sélectionnais toutes
les feuilles en même temps et je j'effaçais les plages, j'avais une
erreur avec la méthode Shape (l'effacement des saisies était ok, mais
pas les commentaires) car manifestement il était impossible de
sélectionner tous les "boutons" en même temps (cf workbook_change) ..
Dans chaque feuille sélectionnée, j'ai ceci (attention c'est
indigeste, surtout pour un retour de vacances ;-) ) :
'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'------------------------------------------
' If Not Intersect(Target, [P9:AT110]) Is Nothing And
Target.Count = 1 Then
' [mémoire].Interior.ColorIndex = xlNone
' ActiveWorkbook.Names.Add Name:="mémoire", RefersTo:="=" &
Range("c" & Target.Row).Address & ""
' Range("c" & Target.Row).Interior.ColorIndex = 3
' End If
'------------------------------------------
If Not Intersect(Target, [MoisInterdit]) Is Nothing And
Target.Count = 1 Then
Application.EnableEvents = False
compteur = 0
For Each com In Range("p" & Target.Row & ":at" & Target.Row)
If Len(com.NoteText) Then compteur = 1: Exit For
Next
If Application.Sum(Range("f" & Target.Row & ":" & "m"
& Target.Row)) > 0 Or compteur = 1 Then
Target = [mémo]
MsgBox "Vous ne devez pas supprimer ce Nom !" &
Chr(10) & Chr(10) & "(La ligne contient des informations ...)",
vbOKOnly + vbInformation, "Attention !"
End If
End If
Application.EnableEvents = True
ActiveSheet.Shapes("Bouton 2").Select
Selection.Characters.Text = Range("AW3").Value
Range("F6").Select 'désélectionne le bouton !
ActiveSheet.Protect Password:="", DrawingObjects:úlse,
Contents:=True, Scenarios:úlse
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
'------------------------------------------------------
@+ ?
JP
"LSteph" a écrit dans le message de news:
OL$Bonsoir,
Pour effacer des plages pas besoin de sélectionner
voici exemple à adapter:
Sub clplg()
Dim i As Byte
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
End Sub
'lStephBonjour,
Je voudrais mettre ce qui suit sous une forme avec boucle, mais je
n'y arrive pas ;-(
Les feuilles vont de sheets(5) à sheets(16)
Merci pour vos lumières.
J'imagine qu'avec une boucle, la procédure sera plus rapide ?
J'étais parti avec qqch comme :
Sub sélectMois()
Application.DisplayAlerts = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
Next
'mes plages à effacer ...
End Sub
... mais ça bloque au niveau de mes Shapes + Workbook_Change qui
fait référence à un "Button" et il est apparemment impossible de
sélectionner tous les boutons des 12 feuilles en même temps.
Pour cette raison, j'ai pensé à une sélection et à un effacement de
chacunes des feuilles l'une après l'autre ...
Voici le code lourdaingue ;-) :
'------------------------------------------------------
Sub EffacerSaisiesBis()
Application.ScreenUpdating = False
Sheets(5).Select '5 = janvier
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
Sheets(6).Select
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
'etc jusqu'à feuille 16
End Sub
'------------------------------------------------------
Bonsoir,
pour les feuilles tu indiquais sheets(5) ...
ce qui est aussi pire que worksheets(i).. (
j'ai donc conservé le principe)
Perso je travaille plutôt avec les CodeName mais cela peut dépendre des
cas posés, d'ailleurs attention
On peut parfois avoir :
Feuil1(toto)
Feuil2(Novembre)
Feuil3(Feuil1)
Feuil4(Feuil2)
...
Feuil38(Janvier)
pour le reste tu pourrais définir un nom qui couvre toutes les plages à
modifier, sinon ceci devrait aller:
Sub Réinitialisation_Classeur()
Dim i As Byte
Application.EnableEvents = False
For i = 5 To 16
With Worksheets(i)
.Range("MoisInterdit").ClearContents
.Range("MoisInterdit").ClearComments
.Range("MoisPlageSaisies").ClearContents
.Range("MoisPlageSaisies").ClearComments
End With
Next
Application.EnableEvents = True
End Sub
'Cordialement.
'lStephBonsoir,
Ca semble très bien fonctionner (aussi ;-) ).
J'ai ceci :
'-------------------------------------
Sub Réinitialisation_Classeur() 'modif du 26/08/07
Dim i As Byte
Application.EnableEvents = False
For i = 5 To 16
With Worksheets(i).Range("MoisInterdit")
.ClearContents
.ClearComments
End With
Next
Application.EnableEvents = True
End Sub
'-----------------------------------
Faut-il que je crée une deuxième boucle pour effacer la plage :
"MoisPlageSaisies" ?
Je crains que cette question ne soit pas très subtile ;-(
Ca semble plus rapide que la proposition de Philippe ; en même temps
celle de Philippe est plus rassurante car je vois "défiler" les onglets
en cours d'effacement. Avec ton code, tout se passe en silence, même si
j'exécute la procédure pas à pas ...
J'ai eu un peu de mal avec la numérotation des Feuilles, car dans la
fenêtre VBAProject, j'ai Feuil1 (Janv 07), Feuil2 (Fév 07), ... , Feuil13
(Toto) et ton code pour effacer est :
For i = 5 To 16
With Worksheets(i). etc,
... comme si on sélectionnait les Feuilles de 5 à 16 !!!
Surement très évident pour "vous" mais pas du tout pour moi !
Spontanément, j'aurais fait : For i = 1 To 12 puisque mes mois
correspondent aux feuilles 1 à 12 !
D'où mon besoin de voir ce qui se passe avant de risquer d'effacer des
Feuilles autres que "Mois".
@+ ?
JP
"LSteph" a écrit dans le message de news:...
au cas où des évennementielles réagiraient essaie ainsi
Sub clplg()
Dim i As Byte
application.enableeventsúlse
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
application.enableevents=true
End Sub
'lStephBonsoir,
J'ai fait un essai et j'ai une erreur : la méthode select de la classe
range a échoué. Habituellement, quand je sélectionnais toutes les
feuilles en même temps et je j'effaçais les plages, j'avais une erreur
avec la méthode Shape (l'effacement des saisies était ok, mais pas les
commentaires) car manifestement il était impossible de sélectionner
tous les "boutons" en même temps (cf workbook_change) ..
Dans chaque feuille sélectionnée, j'ai ceci (attention c'est indigeste,
surtout pour un retour de vacances ;-) ) :
'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'------------------------------------------
' If Not Intersect(Target, [P9:AT110]) Is Nothing And Target.Count
= 1 Then
' [mémoire].Interior.ColorIndex = xlNone
' ActiveWorkbook.Names.Add Name:="mémoire", RefersTo:="=" &
Range("c" & Target.Row).Address & ""
' Range("c" & Target.Row).Interior.ColorIndex = 3
' End If
'------------------------------------------
If Not Intersect(Target, [MoisInterdit]) Is Nothing And
Target.Count = 1 Then
Application.EnableEvents = False
compteur = 0
For Each com In Range("p" & Target.Row & ":at" & Target.Row)
If Len(com.NoteText) Then compteur = 1: Exit For
Next
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) > 0 Or compteur = 1 Then
Target = [mémo]
MsgBox "Vous ne devez pas supprimer ce Nom !" &
Chr(10) & Chr(10) & "(La ligne contient des informations ...)",
vbOKOnly + vbInformation, "Attention !"
End If
End If
Application.EnableEvents = True
ActiveSheet.Shapes("Bouton 2").Select
Selection.Characters.Text = Range("AW3").Value
Range("F6").Select 'désélectionne le bouton !
ActiveSheet.Protect Password:="", DrawingObjects:úlse,
Contents:=True, Scenarios:úlse
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
'------------------------------------------------------
@+ ?
JP
"LSteph" a écrit dans le message de news:
OL$Bonsoir,
Pour effacer des plages pas besoin de sélectionner
voici exemple à adapter:
Sub clplg()
Dim i As Byte
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
End Sub
'lStephBonjour,
Je voudrais mettre ce qui suit sous une forme avec boucle, mais je
n'y arrive pas ;-(
Les feuilles vont de sheets(5) à sheets(16)
Merci pour vos lumières.
J'imagine qu'avec une boucle, la procédure sera plus rapide ?
J'étais parti avec qqch comme :
Sub sélectMois()
Application.DisplayAlerts = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
Next
'mes plages à effacer ...
End Sub
... mais ça bloque au niveau de mes Shapes + Workbook_Change qui fait
référence à un "Button" et il est apparemment impossible de
sélectionner tous les boutons des 12 feuilles en même temps.
Pour cette raison, j'ai pensé à une sélection et à un effacement de
chacunes des feuilles l'une après l'autre ...
Voici le code lourdaingue ;-) :
'------------------------------------------------------
Sub EffacerSaisiesBis()
Application.ScreenUpdating = False
Sheets(5).Select '5 = janvier
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
Sheets(6).Select
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
'etc jusqu'à feuille 16
End Sub
'------------------------------------------------------
Bonsoir,
pour les feuilles tu indiquais sheets(5) ...
ce qui est aussi pire que worksheets(i).. (
j'ai donc conservé le principe)
Perso je travaille plutôt avec les CodeName mais cela peut dépendre des
cas posés, d'ailleurs attention
On peut parfois avoir :
Feuil1(toto)
Feuil2(Novembre)
Feuil3(Feuil1)
Feuil4(Feuil2)
...
Feuil38(Janvier)
pour le reste tu pourrais définir un nom qui couvre toutes les plages à
modifier, sinon ceci devrait aller:
Sub Réinitialisation_Classeur()
Dim i As Byte
Application.EnableEvents = False
For i = 5 To 16
With Worksheets(i)
.Range("MoisInterdit").ClearContents
.Range("MoisInterdit").ClearComments
.Range("MoisPlageSaisies").ClearContents
.Range("MoisPlageSaisies").ClearComments
End With
Next
Application.EnableEvents = True
End Sub
'Cordialement.
'lSteph
Bonsoir,
Ca semble très bien fonctionner (aussi ;-) ).
J'ai ceci :
'-------------------------------------
Sub Réinitialisation_Classeur() 'modif du 26/08/07
Dim i As Byte
Application.EnableEvents = False
For i = 5 To 16
With Worksheets(i).Range("MoisInterdit")
.ClearContents
.ClearComments
End With
Next
Application.EnableEvents = True
End Sub
'-----------------------------------
Faut-il que je crée une deuxième boucle pour effacer la plage :
"MoisPlageSaisies" ?
Je crains que cette question ne soit pas très subtile ;-(
Ca semble plus rapide que la proposition de Philippe ; en même temps
celle de Philippe est plus rassurante car je vois "défiler" les onglets
en cours d'effacement. Avec ton code, tout se passe en silence, même si
j'exécute la procédure pas à pas ...
J'ai eu un peu de mal avec la numérotation des Feuilles, car dans la
fenêtre VBAProject, j'ai Feuil1 (Janv 07), Feuil2 (Fév 07), ... , Feuil13
(Toto) et ton code pour effacer est :
For i = 5 To 16
With Worksheets(i). etc,
... comme si on sélectionnait les Feuilles de 5 à 16 !!!
Surement très évident pour "vous" mais pas du tout pour moi !
Spontanément, j'aurais fait : For i = 1 To 12 puisque mes mois
correspondent aux feuilles 1 à 12 !
D'où mon besoin de voir ce qui se passe avant de risquer d'effacer des
Feuilles autres que "Mois".
@+ ?
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
eRRf8M25HHA.4584@TK2MSFTNGP03.phx.gbl...
...
au cas où des évennementielles réagiraient essaie ainsi
Sub clplg()
Dim i As Byte
application.enableeventsúlse
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
application.enableevents=true
End Sub
'lSteph
Bonsoir,
J'ai fait un essai et j'ai une erreur : la méthode select de la classe
range a échoué. Habituellement, quand je sélectionnais toutes les
feuilles en même temps et je j'effaçais les plages, j'avais une erreur
avec la méthode Shape (l'effacement des saisies était ok, mais pas les
commentaires) car manifestement il était impossible de sélectionner
tous les "boutons" en même temps (cf workbook_change) ..
Dans chaque feuille sélectionnée, j'ai ceci (attention c'est indigeste,
surtout pour un retour de vacances ;-) ) :
'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'------------------------------------------
' If Not Intersect(Target, [P9:AT110]) Is Nothing And Target.Count
= 1 Then
' [mémoire].Interior.ColorIndex = xlNone
' ActiveWorkbook.Names.Add Name:="mémoire", RefersTo:="=" &
Range("c" & Target.Row).Address & ""
' Range("c" & Target.Row).Interior.ColorIndex = 3
' End If
'------------------------------------------
If Not Intersect(Target, [MoisInterdit]) Is Nothing And
Target.Count = 1 Then
Application.EnableEvents = False
compteur = 0
For Each com In Range("p" & Target.Row & ":at" & Target.Row)
If Len(com.NoteText) Then compteur = 1: Exit For
Next
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) > 0 Or compteur = 1 Then
Target = [mémo]
MsgBox "Vous ne devez pas supprimer ce Nom !" &
Chr(10) & Chr(10) & "(La ligne contient des informations ...)",
vbOKOnly + vbInformation, "Attention !"
End If
End If
Application.EnableEvents = True
ActiveSheet.Shapes("Bouton 2").Select
Selection.Characters.Text = Range("AW3").Value
Range("F6").Select 'désélectionne le bouton !
ActiveSheet.Protect Password:="", DrawingObjects:úlse,
Contents:=True, Scenarios:úlse
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
'------------------------------------------------------
@+ ?
JP
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
OL$bA415HHA.5160@TK2MSFTNGP05.phx.gbl...
Bonsoir,
Pour effacer des plages pas besoin de sélectionner
voici exemple à adapter:
Sub clplg()
Dim i As Byte
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
End Sub
'lSteph
Bonjour,
Je voudrais mettre ce qui suit sous une forme avec boucle, mais je
n'y arrive pas ;-(
Les feuilles vont de sheets(5) à sheets(16)
Merci pour vos lumières.
J'imagine qu'avec une boucle, la procédure sera plus rapide ?
J'étais parti avec qqch comme :
Sub sélectMois()
Application.DisplayAlerts = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
Next
'mes plages à effacer ...
End Sub
... mais ça bloque au niveau de mes Shapes + Workbook_Change qui fait
référence à un "Button" et il est apparemment impossible de
sélectionner tous les boutons des 12 feuilles en même temps.
Pour cette raison, j'ai pensé à une sélection et à un effacement de
chacunes des feuilles l'une après l'autre ...
Voici le code lourdaingue ;-) :
'------------------------------------------------------
Sub EffacerSaisiesBis()
Application.ScreenUpdating = False
Sheets(5).Select '5 = janvier
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
Sheets(6).Select
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
'etc jusqu'à feuille 16
End Sub
'------------------------------------------------------
Bonsoir,
pour les feuilles tu indiquais sheets(5) ...
ce qui est aussi pire que worksheets(i).. (
j'ai donc conservé le principe)
Perso je travaille plutôt avec les CodeName mais cela peut dépendre des
cas posés, d'ailleurs attention
On peut parfois avoir :
Feuil1(toto)
Feuil2(Novembre)
Feuil3(Feuil1)
Feuil4(Feuil2)
...
Feuil38(Janvier)
pour le reste tu pourrais définir un nom qui couvre toutes les plages à
modifier, sinon ceci devrait aller:
Sub Réinitialisation_Classeur()
Dim i As Byte
Application.EnableEvents = False
For i = 5 To 16
With Worksheets(i)
.Range("MoisInterdit").ClearContents
.Range("MoisInterdit").ClearComments
.Range("MoisPlageSaisies").ClearContents
.Range("MoisPlageSaisies").ClearComments
End With
Next
Application.EnableEvents = True
End Sub
'Cordialement.
'lStephBonsoir,
Ca semble très bien fonctionner (aussi ;-) ).
J'ai ceci :
'-------------------------------------
Sub Réinitialisation_Classeur() 'modif du 26/08/07
Dim i As Byte
Application.EnableEvents = False
For i = 5 To 16
With Worksheets(i).Range("MoisInterdit")
.ClearContents
.ClearComments
End With
Next
Application.EnableEvents = True
End Sub
'-----------------------------------
Faut-il que je crée une deuxième boucle pour effacer la plage :
"MoisPlageSaisies" ?
Je crains que cette question ne soit pas très subtile ;-(
Ca semble plus rapide que la proposition de Philippe ; en même temps
celle de Philippe est plus rassurante car je vois "défiler" les onglets
en cours d'effacement. Avec ton code, tout se passe en silence, même si
j'exécute la procédure pas à pas ...
J'ai eu un peu de mal avec la numérotation des Feuilles, car dans la
fenêtre VBAProject, j'ai Feuil1 (Janv 07), Feuil2 (Fév 07), ... , Feuil13
(Toto) et ton code pour effacer est :
For i = 5 To 16
With Worksheets(i). etc,
... comme si on sélectionnait les Feuilles de 5 à 16 !!!
Surement très évident pour "vous" mais pas du tout pour moi !
Spontanément, j'aurais fait : For i = 1 To 12 puisque mes mois
correspondent aux feuilles 1 à 12 !
D'où mon besoin de voir ce qui se passe avant de risquer d'effacer des
Feuilles autres que "Mois".
@+ ?
JP
"LSteph" a écrit dans le message de news:...
au cas où des évennementielles réagiraient essaie ainsi
Sub clplg()
Dim i As Byte
application.enableeventsúlse
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
application.enableevents=true
End Sub
'lStephBonsoir,
J'ai fait un essai et j'ai une erreur : la méthode select de la classe
range a échoué. Habituellement, quand je sélectionnais toutes les
feuilles en même temps et je j'effaçais les plages, j'avais une erreur
avec la méthode Shape (l'effacement des saisies était ok, mais pas les
commentaires) car manifestement il était impossible de sélectionner
tous les "boutons" en même temps (cf workbook_change) ..
Dans chaque feuille sélectionnée, j'ai ceci (attention c'est indigeste,
surtout pour un retour de vacances ;-) ) :
'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'------------------------------------------
' If Not Intersect(Target, [P9:AT110]) Is Nothing And Target.Count
= 1 Then
' [mémoire].Interior.ColorIndex = xlNone
' ActiveWorkbook.Names.Add Name:="mémoire", RefersTo:="=" &
Range("c" & Target.Row).Address & ""
' Range("c" & Target.Row).Interior.ColorIndex = 3
' End If
'------------------------------------------
If Not Intersect(Target, [MoisInterdit]) Is Nothing And
Target.Count = 1 Then
Application.EnableEvents = False
compteur = 0
For Each com In Range("p" & Target.Row & ":at" & Target.Row)
If Len(com.NoteText) Then compteur = 1: Exit For
Next
If Application.Sum(Range("f" & Target.Row & ":" & "m" &
Target.Row)) > 0 Or compteur = 1 Then
Target = [mémo]
MsgBox "Vous ne devez pas supprimer ce Nom !" &
Chr(10) & Chr(10) & "(La ligne contient des informations ...)",
vbOKOnly + vbInformation, "Attention !"
End If
End If
Application.EnableEvents = True
ActiveSheet.Shapes("Bouton 2").Select
Selection.Characters.Text = Range("AW3").Value
Range("F6").Select 'désélectionne le bouton !
ActiveSheet.Protect Password:="", DrawingObjects:úlse,
Contents:=True, Scenarios:úlse
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
'------------------------------------------------------
@+ ?
JP
"LSteph" a écrit dans le message de news:
OL$Bonsoir,
Pour effacer des plages pas besoin de sélectionner
voici exemple à adapter:
Sub clplg()
Dim i As Byte
For i = 5 To 16
With Worksheets(i).[f2:f9]
.ClearContents
.ClearComments
End With
Next
End Sub
'lStephBonjour,
Je voudrais mettre ce qui suit sous une forme avec boucle, mais je
n'y arrive pas ;-(
Les feuilles vont de sheets(5) à sheets(16)
Merci pour vos lumières.
J'imagine qu'avec une boucle, la procédure sera plus rapide ?
J'étais parti avec qqch comme :
Sub sélectMois()
Application.DisplayAlerts = False
Sheets(16).Select
For i = Sheets.Count To 5 Step -1
Sheets(i).Select False
Next
'mes plages à effacer ...
End Sub
... mais ça bloque au niveau de mes Shapes + Workbook_Change qui fait
référence à un "Button" et il est apparemment impossible de
sélectionner tous les boutons des 12 feuilles en même temps.
Pour cette raison, j'ai pensé à une sélection et à un effacement de
chacunes des feuilles l'une après l'autre ...
Voici le code lourdaingue ;-) :
'------------------------------------------------------
Sub EffacerSaisiesBis()
Application.ScreenUpdating = False
Sheets(5).Select '5 = janvier
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
Sheets(6).Select
Range("MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Selection.ClearComments
Range("MoisInterdit, MoisPlageSaisies").Select
Selection.ClearContents
Range("MoisPlageSaisies").Select 'ajouté % Worksheet_Change !
Range("P9").Select
'etc jusqu'à feuille 16
End Sub
'------------------------------------------------------