Bonjour à tous,
Soit 3 macros :
Dim blk
Sub MasquerLignes()
Application.ScreenUpdating = False
F2.Unprotect
blk = 1
For rwIndex = 21 To 294
With F2.Cells(rwIndex, 1)
If .Value = 0 Then .EntireRow.Hidden = True
End With
Next rwIndex
blk = 0
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
-------------------------------
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
Rows("21:294").EntireRow.Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
--------------------------------
Sub Aperçu()
ActiveWindow.SelectedSheets.PrintPreview
End Sub
Le but est de masquer les lignes dont la valeur de la première cellule de
chacune d'entres elles est égale à 0 !
Je ne suis pas programmeur, mais ca marche quand je veux afficher ou masq uer
les lignes, avec une vitesse d'execution convenable.
Le problème est que si j'execute la macro "Apercu", il se passe je ne s ais
quel phénomène qui fait que la macro "MasquerLignes" devient tout à coup très
lente !
Celà dépasse mes connaissances ; pourriez-vous m'éclairer ?
Merci d'avance de votre aide ! !
--
coco
Bonjour à tous,
Soit 3 macros :
Dim blk
Sub MasquerLignes()
Application.ScreenUpdating = False
F2.Unprotect
blk = 1
For rwIndex = 21 To 294
With F2.Cells(rwIndex, 1)
If .Value = 0 Then .EntireRow.Hidden = True
End With
Next rwIndex
blk = 0
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
-------------------------------
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
Rows("21:294").EntireRow.Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
--------------------------------
Sub Aperçu()
ActiveWindow.SelectedSheets.PrintPreview
End Sub
Le but est de masquer les lignes dont la valeur de la première cellule de
chacune d'entres elles est égale à 0 !
Je ne suis pas programmeur, mais ca marche quand je veux afficher ou masq uer
les lignes, avec une vitesse d'execution convenable.
Le problème est que si j'execute la macro "Apercu", il se passe je ne s ais
quel phénomène qui fait que la macro "MasquerLignes" devient tout à coup très
lente !
Celà dépasse mes connaissances ; pourriez-vous m'éclairer ?
Merci d'avance de votre aide ! !
--
coco
Bonjour à tous,
Soit 3 macros :
Dim blk
Sub MasquerLignes()
Application.ScreenUpdating = False
F2.Unprotect
blk = 1
For rwIndex = 21 To 294
With F2.Cells(rwIndex, 1)
If .Value = 0 Then .EntireRow.Hidden = True
End With
Next rwIndex
blk = 0
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
-------------------------------
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
Rows("21:294").EntireRow.Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
--------------------------------
Sub Aperçu()
ActiveWindow.SelectedSheets.PrintPreview
End Sub
Le but est de masquer les lignes dont la valeur de la première cellule de
chacune d'entres elles est égale à 0 !
Je ne suis pas programmeur, mais ca marche quand je veux afficher ou masq uer
les lignes, avec une vitesse d'execution convenable.
Le problème est que si j'execute la macro "Apercu", il se passe je ne s ais
quel phénomène qui fait que la macro "MasquerLignes" devient tout à coup très
lente !
Celà dépasse mes connaissances ; pourriez-vous m'éclairer ?
Merci d'avance de votre aide ! !
--
coco
Bonjour à tous,
Soit 3 macros :
Dim blk
Sub MasquerLignes()
Application.ScreenUpdating = False
F2.Unprotect
blk = 1
For rwIndex = 21 To 294
With F2.Cells(rwIndex, 1)
If .Value = 0 Then .EntireRow.Hidden = True
End With
Next rwIndex
blk = 0
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
-------------------------------
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
Rows("21:294").EntireRow.Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
--------------------------------
Sub Aperçu()
ActiveWindow.SelectedSheets.PrintPreview
End Sub
Le but est de masquer les lignes dont la valeur de la première cellule de
chacune d'entres elles est égale à 0 !
Je ne suis pas programmeur, mais ca marche quand je veux afficher ou
masquer
les lignes, avec une vitesse d'execution convenable.
Le problème est que si j'execute la macro "Apercu", il se passe je ne sais
quel phénomène qui fait que la macro "MasquerLignes" devient tout à coup
très
lente !
Celà dépasse mes connaissances ; pourriez-vous m'éclairer ?
Merci d'avance de votre aide ! !
--
coco
Bonjour à tous,
Soit 3 macros :
Dim blk
Sub MasquerLignes()
Application.ScreenUpdating = False
F2.Unprotect
blk = 1
For rwIndex = 21 To 294
With F2.Cells(rwIndex, 1)
If .Value = 0 Then .EntireRow.Hidden = True
End With
Next rwIndex
blk = 0
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
-------------------------------
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
Rows("21:294").EntireRow.Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
--------------------------------
Sub Aperçu()
ActiveWindow.SelectedSheets.PrintPreview
End Sub
Le but est de masquer les lignes dont la valeur de la première cellule de
chacune d'entres elles est égale à 0 !
Je ne suis pas programmeur, mais ca marche quand je veux afficher ou
masquer
les lignes, avec une vitesse d'execution convenable.
Le problème est que si j'execute la macro "Apercu", il se passe je ne sais
quel phénomène qui fait que la macro "MasquerLignes" devient tout à coup
très
lente !
Celà dépasse mes connaissances ; pourriez-vous m'éclairer ?
Merci d'avance de votre aide ! !
--
coco
Bonjour à tous,
Soit 3 macros :
Dim blk
Sub MasquerLignes()
Application.ScreenUpdating = False
F2.Unprotect
blk = 1
For rwIndex = 21 To 294
With F2.Cells(rwIndex, 1)
If .Value = 0 Then .EntireRow.Hidden = True
End With
Next rwIndex
blk = 0
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
-------------------------------
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
Rows("21:294").EntireRow.Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
--------------------------------
Sub Aperçu()
ActiveWindow.SelectedSheets.PrintPreview
End Sub
Le but est de masquer les lignes dont la valeur de la première cellule de
chacune d'entres elles est égale à 0 !
Je ne suis pas programmeur, mais ca marche quand je veux afficher ou
masquer
les lignes, avec une vitesse d'execution convenable.
Le problème est que si j'execute la macro "Apercu", il se passe je ne sais
quel phénomène qui fait que la macro "MasquerLignes" devient tout à coup
très
lente !
Celà dépasse mes connaissances ; pourriez-vous m'éclairer ?
Merci d'avance de votre aide ! !
--
coco
Bonjour Coco74;
1- Explication:
Après un aperçu avant impression, Excel affiche les repères topographiques
des plages d'impression (pointillés) sur la feuille.
Lorsque tu réexécute la macro MasquerLignes après un aperçu avant
impression, à chaque ligne masquée par la boucle, Excel repositionne les
repères horizontaux des plages d'impression sur la feuille; c'est ce qui
fait que le temps d'exécution de la macro s'en trouve considérablement
augmenté.
2- Solution:
Tu dois masquer en une seule fois l'ensemble des lignes qui répondent au
critère indiqué dans la boucle; ainsi, tu n'auras qu'un seul
repositionnement en tout et pour tout et la durée d'exécution de ta macro
n'en sera pas affectée.
Sub MasquerLignes()
Application.ScreenUpdating = False
Dim Rng As Range, Cel As Range
F2.Activate
F2.Unprotect
For Each Cel In Range("A21:A294")
If Cel = 0 Then
If Rng Is Nothing Then
Set Rng = Cel
Else
Set Rng = Union(Rng, Cel)
End If
End If
Next Cel
Rng.EntireRow.Hidden = True
Set Rng = Nothing
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Une remarquecomplémentaire, l'instruction ScreenUpdating est automatiquement
remise à True en sortie de procédure; il n'est pas nécessaire de l'indiquer
(tu gagnes un coup d'horloge).
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
F2.Rows("21:294").Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
MP
"coco74" a écrit dans le message de news:Bonjour à tous,
Soit 3 macros :
Dim blk
Sub MasquerLignes()
Application.ScreenUpdating = False
F2.Unprotect
blk = 1
For rwIndex = 21 To 294
With F2.Cells(rwIndex, 1)
If .Value = 0 Then .EntireRow.Hidden = True
End With
Next rwIndex
blk = 0
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
-------------------------------
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
Rows("21:294").EntireRow.Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
--------------------------------
Sub Aperçu()
ActiveWindow.SelectedSheets.PrintPreview
End Sub
Le but est de masquer les lignes dont la valeur de la première cellule de
chacune d'entres elles est égale à 0 !
Je ne suis pas programmeur, mais ca marche quand je veux afficher ou
masquer
les lignes, avec une vitesse d'execution convenable.
Le problème est que si j'execute la macro "Apercu", il se passe je ne sais
quel phénomène qui fait que la macro "MasquerLignes" devient tout à coup
très
lente !
Celà dépasse mes connaissances ; pourriez-vous m'éclairer ?
Merci d'avance de votre aide ! !
--
coco
Bonjour Coco74;
1- Explication:
Après un aperçu avant impression, Excel affiche les repères topographiques
des plages d'impression (pointillés) sur la feuille.
Lorsque tu réexécute la macro MasquerLignes après un aperçu avant
impression, à chaque ligne masquée par la boucle, Excel repositionne les
repères horizontaux des plages d'impression sur la feuille; c'est ce qui
fait que le temps d'exécution de la macro s'en trouve considérablement
augmenté.
2- Solution:
Tu dois masquer en une seule fois l'ensemble des lignes qui répondent au
critère indiqué dans la boucle; ainsi, tu n'auras qu'un seul
repositionnement en tout et pour tout et la durée d'exécution de ta macro
n'en sera pas affectée.
Sub MasquerLignes()
Application.ScreenUpdating = False
Dim Rng As Range, Cel As Range
F2.Activate
F2.Unprotect
For Each Cel In Range("A21:A294")
If Cel = 0 Then
If Rng Is Nothing Then
Set Rng = Cel
Else
Set Rng = Union(Rng, Cel)
End If
End If
Next Cel
Rng.EntireRow.Hidden = True
Set Rng = Nothing
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Une remarquecomplémentaire, l'instruction ScreenUpdating est automatiquement
remise à True en sortie de procédure; il n'est pas nécessaire de l'indiquer
(tu gagnes un coup d'horloge).
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
F2.Rows("21:294").Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
MP
"coco74" <coco74@discussions.microsoft.com> a écrit dans le message de news:
C9A35CD8-D455-4345-888C-EE7CA32730D4@microsoft.com...
Bonjour à tous,
Soit 3 macros :
Dim blk
Sub MasquerLignes()
Application.ScreenUpdating = False
F2.Unprotect
blk = 1
For rwIndex = 21 To 294
With F2.Cells(rwIndex, 1)
If .Value = 0 Then .EntireRow.Hidden = True
End With
Next rwIndex
blk = 0
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
-------------------------------
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
Rows("21:294").EntireRow.Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
--------------------------------
Sub Aperçu()
ActiveWindow.SelectedSheets.PrintPreview
End Sub
Le but est de masquer les lignes dont la valeur de la première cellule de
chacune d'entres elles est égale à 0 !
Je ne suis pas programmeur, mais ca marche quand je veux afficher ou
masquer
les lignes, avec une vitesse d'execution convenable.
Le problème est que si j'execute la macro "Apercu", il se passe je ne sais
quel phénomène qui fait que la macro "MasquerLignes" devient tout à coup
très
lente !
Celà dépasse mes connaissances ; pourriez-vous m'éclairer ?
Merci d'avance de votre aide ! !
--
coco
Bonjour Coco74;
1- Explication:
Après un aperçu avant impression, Excel affiche les repères topographiques
des plages d'impression (pointillés) sur la feuille.
Lorsque tu réexécute la macro MasquerLignes après un aperçu avant
impression, à chaque ligne masquée par la boucle, Excel repositionne les
repères horizontaux des plages d'impression sur la feuille; c'est ce qui
fait que le temps d'exécution de la macro s'en trouve considérablement
augmenté.
2- Solution:
Tu dois masquer en une seule fois l'ensemble des lignes qui répondent au
critère indiqué dans la boucle; ainsi, tu n'auras qu'un seul
repositionnement en tout et pour tout et la durée d'exécution de ta macro
n'en sera pas affectée.
Sub MasquerLignes()
Application.ScreenUpdating = False
Dim Rng As Range, Cel As Range
F2.Activate
F2.Unprotect
For Each Cel In Range("A21:A294")
If Cel = 0 Then
If Rng Is Nothing Then
Set Rng = Cel
Else
Set Rng = Union(Rng, Cel)
End If
End If
Next Cel
Rng.EntireRow.Hidden = True
Set Rng = Nothing
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Une remarquecomplémentaire, l'instruction ScreenUpdating est automatiquement
remise à True en sortie de procédure; il n'est pas nécessaire de l'indiquer
(tu gagnes un coup d'horloge).
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
F2.Rows("21:294").Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
MP
"coco74" a écrit dans le message de news:Bonjour à tous,
Soit 3 macros :
Dim blk
Sub MasquerLignes()
Application.ScreenUpdating = False
F2.Unprotect
blk = 1
For rwIndex = 21 To 294
With F2.Cells(rwIndex, 1)
If .Value = 0 Then .EntireRow.Hidden = True
End With
Next rwIndex
blk = 0
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
-------------------------------
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
Rows("21:294").EntireRow.Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
--------------------------------
Sub Aperçu()
ActiveWindow.SelectedSheets.PrintPreview
End Sub
Le but est de masquer les lignes dont la valeur de la première cellule de
chacune d'entres elles est égale à 0 !
Je ne suis pas programmeur, mais ca marche quand je veux afficher ou
masquer
les lignes, avec une vitesse d'execution convenable.
Le problème est que si j'execute la macro "Apercu", il se passe je ne sais
quel phénomène qui fait que la macro "MasquerLignes" devient tout à coup
très
lente !
Celà dépasse mes connaissances ; pourriez-vous m'éclairer ?
Merci d'avance de votre aide ! !
--
coco
Ouh là là ! !
Ca c'est du grand art ! Merci Michel !
J'ai bien compris l'explication, compris aussi le raisonnement de la
solution. J'ai un peu plus de mal avec le code mais en tout cas celà
fonctionne parfaitement.
Merci encore
--
cocoBonjour Coco74;
1- Explication:
Après un aperçu avant impression, Excel affiche les repères
topographiques
des plages d'impression (pointillés) sur la feuille.
Lorsque tu réexécute la macro MasquerLignes après un aperçu avant
impression, à chaque ligne masquée par la boucle, Excel repositionne les
repères horizontaux des plages d'impression sur la feuille; c'est ce qui
fait que le temps d'exécution de la macro s'en trouve considérablement
augmenté.
2- Solution:
Tu dois masquer en une seule fois l'ensemble des lignes qui répondent au
critère indiqué dans la boucle; ainsi, tu n'auras qu'un seul
repositionnement en tout et pour tout et la durée d'exécution de ta macro
n'en sera pas affectée.
Sub MasquerLignes()
Application.ScreenUpdating = False
Dim Rng As Range, Cel As Range
F2.Activate
F2.Unprotect
For Each Cel In Range("A21:A294")
If Cel = 0 Then
If Rng Is Nothing Then
Set Rng = Cel
Else
Set Rng = Union(Rng, Cel)
End If
End If
Next Cel
Rng.EntireRow.Hidden = True
Set Rng = Nothing
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Une remarquecomplémentaire, l'instruction ScreenUpdating est
automatiquement
remise à True en sortie de procédure; il n'est pas nécessaire de
l'indiquer
(tu gagnes un coup d'horloge).
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
F2.Rows("21:294").Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
MP
"coco74" a écrit dans le message de
news:Bonjour à tous,
Soit 3 macros :
Dim blk
Sub MasquerLignes()
Application.ScreenUpdating = False
F2.Unprotect
blk = 1
For rwIndex = 21 To 294
With F2.Cells(rwIndex, 1)
If .Value = 0 Then .EntireRow.Hidden = True
End With
Next rwIndex
blk = 0
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
-------------------------------
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
Rows("21:294").EntireRow.Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
--------------------------------
Sub Aperçu()
ActiveWindow.SelectedSheets.PrintPreview
End Sub
Le but est de masquer les lignes dont la valeur de la première cellule
de
chacune d'entres elles est égale à 0 !
Je ne suis pas programmeur, mais ca marche quand je veux afficher ou
masquer
les lignes, avec une vitesse d'execution convenable.
Le problème est que si j'execute la macro "Apercu", il se passe je ne
sais
quel phénomène qui fait que la macro "MasquerLignes" devient tout à
coup
très
lente !
Celà dépasse mes connaissances ; pourriez-vous m'éclairer ?
Merci d'avance de votre aide ! !
--
coco
Ouh là là ! !
Ca c'est du grand art ! Merci Michel !
J'ai bien compris l'explication, compris aussi le raisonnement de la
solution. J'ai un peu plus de mal avec le code mais en tout cas celà
fonctionne parfaitement.
Merci encore
--
coco
Bonjour Coco74;
1- Explication:
Après un aperçu avant impression, Excel affiche les repères
topographiques
des plages d'impression (pointillés) sur la feuille.
Lorsque tu réexécute la macro MasquerLignes après un aperçu avant
impression, à chaque ligne masquée par la boucle, Excel repositionne les
repères horizontaux des plages d'impression sur la feuille; c'est ce qui
fait que le temps d'exécution de la macro s'en trouve considérablement
augmenté.
2- Solution:
Tu dois masquer en une seule fois l'ensemble des lignes qui répondent au
critère indiqué dans la boucle; ainsi, tu n'auras qu'un seul
repositionnement en tout et pour tout et la durée d'exécution de ta macro
n'en sera pas affectée.
Sub MasquerLignes()
Application.ScreenUpdating = False
Dim Rng As Range, Cel As Range
F2.Activate
F2.Unprotect
For Each Cel In Range("A21:A294")
If Cel = 0 Then
If Rng Is Nothing Then
Set Rng = Cel
Else
Set Rng = Union(Rng, Cel)
End If
End If
Next Cel
Rng.EntireRow.Hidden = True
Set Rng = Nothing
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Une remarquecomplémentaire, l'instruction ScreenUpdating est
automatiquement
remise à True en sortie de procédure; il n'est pas nécessaire de
l'indiquer
(tu gagnes un coup d'horloge).
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
F2.Rows("21:294").Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
MP
"coco74" <coco74@discussions.microsoft.com> a écrit dans le message de
news:
C9A35CD8-D455-4345-888C-EE7CA32730D4@microsoft.com...
Bonjour à tous,
Soit 3 macros :
Dim blk
Sub MasquerLignes()
Application.ScreenUpdating = False
F2.Unprotect
blk = 1
For rwIndex = 21 To 294
With F2.Cells(rwIndex, 1)
If .Value = 0 Then .EntireRow.Hidden = True
End With
Next rwIndex
blk = 0
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
-------------------------------
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
Rows("21:294").EntireRow.Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
--------------------------------
Sub Aperçu()
ActiveWindow.SelectedSheets.PrintPreview
End Sub
Le but est de masquer les lignes dont la valeur de la première cellule
de
chacune d'entres elles est égale à 0 !
Je ne suis pas programmeur, mais ca marche quand je veux afficher ou
masquer
les lignes, avec une vitesse d'execution convenable.
Le problème est que si j'execute la macro "Apercu", il se passe je ne
sais
quel phénomène qui fait que la macro "MasquerLignes" devient tout à
coup
très
lente !
Celà dépasse mes connaissances ; pourriez-vous m'éclairer ?
Merci d'avance de votre aide ! !
--
coco
Ouh là là ! !
Ca c'est du grand art ! Merci Michel !
J'ai bien compris l'explication, compris aussi le raisonnement de la
solution. J'ai un peu plus de mal avec le code mais en tout cas celà
fonctionne parfaitement.
Merci encore
--
cocoBonjour Coco74;
1- Explication:
Après un aperçu avant impression, Excel affiche les repères
topographiques
des plages d'impression (pointillés) sur la feuille.
Lorsque tu réexécute la macro MasquerLignes après un aperçu avant
impression, à chaque ligne masquée par la boucle, Excel repositionne les
repères horizontaux des plages d'impression sur la feuille; c'est ce qui
fait que le temps d'exécution de la macro s'en trouve considérablement
augmenté.
2- Solution:
Tu dois masquer en une seule fois l'ensemble des lignes qui répondent au
critère indiqué dans la boucle; ainsi, tu n'auras qu'un seul
repositionnement en tout et pour tout et la durée d'exécution de ta macro
n'en sera pas affectée.
Sub MasquerLignes()
Application.ScreenUpdating = False
Dim Rng As Range, Cel As Range
F2.Activate
F2.Unprotect
For Each Cel In Range("A21:A294")
If Cel = 0 Then
If Rng Is Nothing Then
Set Rng = Cel
Else
Set Rng = Union(Rng, Cel)
End If
End If
Next Cel
Rng.EntireRow.Hidden = True
Set Rng = Nothing
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Une remarquecomplémentaire, l'instruction ScreenUpdating est
automatiquement
remise à True en sortie de procédure; il n'est pas nécessaire de
l'indiquer
(tu gagnes un coup d'horloge).
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
F2.Rows("21:294").Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
MP
"coco74" a écrit dans le message de
news:Bonjour à tous,
Soit 3 macros :
Dim blk
Sub MasquerLignes()
Application.ScreenUpdating = False
F2.Unprotect
blk = 1
For rwIndex = 21 To 294
With F2.Cells(rwIndex, 1)
If .Value = 0 Then .EntireRow.Hidden = True
End With
Next rwIndex
blk = 0
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
-------------------------------
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
Rows("21:294").EntireRow.Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
--------------------------------
Sub Aperçu()
ActiveWindow.SelectedSheets.PrintPreview
End Sub
Le but est de masquer les lignes dont la valeur de la première cellule
de
chacune d'entres elles est égale à 0 !
Je ne suis pas programmeur, mais ca marche quand je veux afficher ou
masquer
les lignes, avec une vitesse d'execution convenable.
Le problème est que si j'execute la macro "Apercu", il se passe je ne
sais
quel phénomène qui fait que la macro "MasquerLignes" devient tout à
coup
très
lente !
Celà dépasse mes connaissances ; pourriez-vous m'éclairer ?
Merci d'avance de votre aide ! !
--
coco
Bonjour Coco74;
Pour éviter une erreur si aucune ligne n'est concernée, il faudrait ajouter
une ligne d'instruction:
....
Next Cel
If Rng Is Nothing Then Exit Sub
Rng.EntireRow.Hidden = True
Set Rng = Nothing
.....
MP
"coco74" a écrit dans le message de news:Ouh là là ! !
Ca c'est du grand art ! Merci Michel !
J'ai bien compris l'explication, compris aussi le raisonnement de la
solution. J'ai un peu plus de mal avec le code mais en tout cas celà
fonctionne parfaitement.
Merci encore
--
cocoBonjour Coco74;
1- Explication:
Après un aperçu avant impression, Excel affiche les repères
topographiques
des plages d'impression (pointillés) sur la feuille.
Lorsque tu réexécute la macro MasquerLignes après un aperçu avant
impression, à chaque ligne masquée par la boucle, Excel repositionne les
repères horizontaux des plages d'impression sur la feuille; c'est ce qui
fait que le temps d'exécution de la macro s'en trouve considérablement
augmenté.
2- Solution:
Tu dois masquer en une seule fois l'ensemble des lignes qui répondent au
critère indiqué dans la boucle; ainsi, tu n'auras qu'un seul
repositionnement en tout et pour tout et la durée d'exécution de ta macro
n'en sera pas affectée.
Sub MasquerLignes()
Application.ScreenUpdating = False
Dim Rng As Range, Cel As Range
F2.Activate
F2.Unprotect
For Each Cel In Range("A21:A294")
If Cel = 0 Then
If Rng Is Nothing Then
Set Rng = Cel
Else
Set Rng = Union(Rng, Cel)
End If
End If
Next Cel
Rng.EntireRow.Hidden = True
Set Rng = Nothing
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Une remarquecomplémentaire, l'instruction ScreenUpdating est
automatiquement
remise à True en sortie de procédure; il n'est pas nécessaire de
l'indiquer
(tu gagnes un coup d'horloge).
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
F2.Rows("21:294").Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
MP
"coco74" a écrit dans le message de
news:Bonjour à tous,
Soit 3 macros :
Dim blk
Sub MasquerLignes()
Application.ScreenUpdating = False
F2.Unprotect
blk = 1
For rwIndex = 21 To 294
With F2.Cells(rwIndex, 1)
If .Value = 0 Then .EntireRow.Hidden = True
End With
Next rwIndex
blk = 0
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
-------------------------------
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
Rows("21:294").EntireRow.Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
--------------------------------
Sub Aperçu()
ActiveWindow.SelectedSheets.PrintPreview
End Sub
Le but est de masquer les lignes dont la valeur de la première cellule
de
chacune d'entres elles est égale à 0 !
Je ne suis pas programmeur, mais ca marche quand je veux afficher ou
masquer
les lignes, avec une vitesse d'execution convenable.
Le problème est que si j'execute la macro "Apercu", il se passe je ne
sais
quel phénomène qui fait que la macro "MasquerLignes" devient tout à
coup
très
lente !
Celà dépasse mes connaissances ; pourriez-vous m'éclairer ?
Merci d'avance de votre aide ! !
--
coco
Bonjour Coco74;
Pour éviter une erreur si aucune ligne n'est concernée, il faudrait ajouter
une ligne d'instruction:
....
Next Cel
If Rng Is Nothing Then Exit Sub
Rng.EntireRow.Hidden = True
Set Rng = Nothing
.....
MP
"coco74" <coco74@discussions.microsoft.com> a écrit dans le message de news:
2743EC46-0697-4531-830D-3B935FD46B25@microsoft.com...
Ouh là là ! !
Ca c'est du grand art ! Merci Michel !
J'ai bien compris l'explication, compris aussi le raisonnement de la
solution. J'ai un peu plus de mal avec le code mais en tout cas celà
fonctionne parfaitement.
Merci encore
--
coco
Bonjour Coco74;
1- Explication:
Après un aperçu avant impression, Excel affiche les repères
topographiques
des plages d'impression (pointillés) sur la feuille.
Lorsque tu réexécute la macro MasquerLignes après un aperçu avant
impression, à chaque ligne masquée par la boucle, Excel repositionne les
repères horizontaux des plages d'impression sur la feuille; c'est ce qui
fait que le temps d'exécution de la macro s'en trouve considérablement
augmenté.
2- Solution:
Tu dois masquer en une seule fois l'ensemble des lignes qui répondent au
critère indiqué dans la boucle; ainsi, tu n'auras qu'un seul
repositionnement en tout et pour tout et la durée d'exécution de ta macro
n'en sera pas affectée.
Sub MasquerLignes()
Application.ScreenUpdating = False
Dim Rng As Range, Cel As Range
F2.Activate
F2.Unprotect
For Each Cel In Range("A21:A294")
If Cel = 0 Then
If Rng Is Nothing Then
Set Rng = Cel
Else
Set Rng = Union(Rng, Cel)
End If
End If
Next Cel
Rng.EntireRow.Hidden = True
Set Rng = Nothing
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Une remarquecomplémentaire, l'instruction ScreenUpdating est
automatiquement
remise à True en sortie de procédure; il n'est pas nécessaire de
l'indiquer
(tu gagnes un coup d'horloge).
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
F2.Rows("21:294").Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
MP
"coco74" <coco74@discussions.microsoft.com> a écrit dans le message de
news:
C9A35CD8-D455-4345-888C-EE7CA32730D4@microsoft.com...
Bonjour à tous,
Soit 3 macros :
Dim blk
Sub MasquerLignes()
Application.ScreenUpdating = False
F2.Unprotect
blk = 1
For rwIndex = 21 To 294
With F2.Cells(rwIndex, 1)
If .Value = 0 Then .EntireRow.Hidden = True
End With
Next rwIndex
blk = 0
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
-------------------------------
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
Rows("21:294").EntireRow.Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
--------------------------------
Sub Aperçu()
ActiveWindow.SelectedSheets.PrintPreview
End Sub
Le but est de masquer les lignes dont la valeur de la première cellule
de
chacune d'entres elles est égale à 0 !
Je ne suis pas programmeur, mais ca marche quand je veux afficher ou
masquer
les lignes, avec une vitesse d'execution convenable.
Le problème est que si j'execute la macro "Apercu", il se passe je ne
sais
quel phénomène qui fait que la macro "MasquerLignes" devient tout à
coup
très
lente !
Celà dépasse mes connaissances ; pourriez-vous m'éclairer ?
Merci d'avance de votre aide ! !
--
coco
Bonjour Coco74;
Pour éviter une erreur si aucune ligne n'est concernée, il faudrait ajouter
une ligne d'instruction:
....
Next Cel
If Rng Is Nothing Then Exit Sub
Rng.EntireRow.Hidden = True
Set Rng = Nothing
.....
MP
"coco74" a écrit dans le message de news:Ouh là là ! !
Ca c'est du grand art ! Merci Michel !
J'ai bien compris l'explication, compris aussi le raisonnement de la
solution. J'ai un peu plus de mal avec le code mais en tout cas celà
fonctionne parfaitement.
Merci encore
--
cocoBonjour Coco74;
1- Explication:
Après un aperçu avant impression, Excel affiche les repères
topographiques
des plages d'impression (pointillés) sur la feuille.
Lorsque tu réexécute la macro MasquerLignes après un aperçu avant
impression, à chaque ligne masquée par la boucle, Excel repositionne les
repères horizontaux des plages d'impression sur la feuille; c'est ce qui
fait que le temps d'exécution de la macro s'en trouve considérablement
augmenté.
2- Solution:
Tu dois masquer en une seule fois l'ensemble des lignes qui répondent au
critère indiqué dans la boucle; ainsi, tu n'auras qu'un seul
repositionnement en tout et pour tout et la durée d'exécution de ta macro
n'en sera pas affectée.
Sub MasquerLignes()
Application.ScreenUpdating = False
Dim Rng As Range, Cel As Range
F2.Activate
F2.Unprotect
For Each Cel In Range("A21:A294")
If Cel = 0 Then
If Rng Is Nothing Then
Set Rng = Cel
Else
Set Rng = Union(Rng, Cel)
End If
End If
Next Cel
Rng.EntireRow.Hidden = True
Set Rng = Nothing
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Une remarquecomplémentaire, l'instruction ScreenUpdating est
automatiquement
remise à True en sortie de procédure; il n'est pas nécessaire de
l'indiquer
(tu gagnes un coup d'horloge).
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
F2.Rows("21:294").Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
MP
"coco74" a écrit dans le message de
news:Bonjour à tous,
Soit 3 macros :
Dim blk
Sub MasquerLignes()
Application.ScreenUpdating = False
F2.Unprotect
blk = 1
For rwIndex = 21 To 294
With F2.Cells(rwIndex, 1)
If .Value = 0 Then .EntireRow.Hidden = True
End With
Next rwIndex
blk = 0
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
-------------------------------
Sub AfficherLignes()
Application.ScreenUpdating = False
F2.Unprotect
Rows("21:294").EntireRow.Hidden = False
F2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
--------------------------------
Sub Aperçu()
ActiveWindow.SelectedSheets.PrintPreview
End Sub
Le but est de masquer les lignes dont la valeur de la première cellule
de
chacune d'entres elles est égale à 0 !
Je ne suis pas programmeur, mais ca marche quand je veux afficher ou
masquer
les lignes, avec une vitesse d'execution convenable.
Le problème est que si j'execute la macro "Apercu", il se passe je ne
sais
quel phénomène qui fait que la macro "MasquerLignes" devient tout à
coup
très
lente !
Celà dépasse mes connaissances ; pourriez-vous m'éclairer ?
Merci d'avance de votre aide ! !
--
coco