VBA - Application.ScreenUpdating = False bloqué à True en pas à pas et en mode run

Le
twinley
Bonsoir,

Jai un truc bizarre.

J'utilisais depuis un moment les deux lignes suivantes:

Application.EnableEvents = False
Application.ScreenUpdating = False

Or en pas à pas je m'aperçois que ScreenUpdating reste bloqué à True.
J'ai beau repasser dessus, il ne bouge pas.

J'ai inversé les deux lignes ScreenUpdating et EnableEvents, cela ne
change rien.
Par contre EnableEvents se modifie bien.

De quel côté faut-il aller chercher ?

Merci pour votre aide.

--
à+twinley
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
anonymousA
Le #1956795
bonsoir,

as-tu fait une essai réel pour voir si ton
Application.screenupdating=true est true ou pas.

Par ailleurs, appelles tu un sous programme ou une fonction qui ferait
varier pour une raison quelconque cette propriété ?

A+



Bonsoir,

Jai un truc bizarre.

J'utilisais depuis un moment les deux lignes suivantes:

Application.EnableEvents = False
Application.ScreenUpdating = False

Or en pas à pas je m'aperçois que ScreenUpdating reste bloqué à True.
J'ai beau repasser dessus, il ne bouge pas.

J'ai inversé les deux lignes ScreenUpdating et EnableEvents, cela ne
change rien.
Par contre EnableEvents se modifie bien.

De quel côté faut-il aller chercher ?

Merci pour votre aide.



twinley
Le #1956787
Bonsoir aA

Merci pour tes idées.

Je viens de trouver une piste intéressante, je ne soupçonnais pas la
répercution sur le screenupdating.
Mes ennuis viennent de la protection de la structure avec

ActiveWorkbook.Protect "toto", Structure:=True, Windows:úlse

La sub perturbée affiche quelques onglets parmi la totalité, et il aime
pas quand la structure est figée.
Il faut que je trouve les endroits ou je dois protéger et
déprotéger dans la commandbadpopup et cela devrait tourner à nouveau.

Quelle cochonnerie les protections.

Le logiciel bute sur Sheets(k).Visible = True
et dans la doc j'ai vu que protect s'appliquait à l'objet sheet mais je
n'arrive plus à retrouver le texte. Pas facile cette doc.
il doit y avoir un lien, que je ne saisi pas bien mais que je constate.

:'(

à+twinley

bonsoir,

as-tu fait une essai réel pour voir si ton
Application.screenupdating=true est true ou pas.

Par ailleurs, appelles tu un sous programme ou une fonction qui ferait
varier pour une raison quelconque cette propriété ?

A+




Bonsoir,

Jai un truc bizarre.

J'utilisais depuis un moment les deux lignes suivantes:

Application.EnableEvents = False
Application.ScreenUpdating = False

Or en pas à pas je m'aperçois que ScreenUpdating reste bloqué à True.
J'ai beau repasser dessus, il ne bouge pas.

J'ai inversé les deux lignes ScreenUpdating et EnableEvents, cela ne
change rien.
Par contre EnableEvents se modifie bien.

De quel côté faut-il aller chercher ?

Merci pour votre aide.





anonymousA
Le #1956785
re, twinley

suis pas sur d'avoir vraiement tout compris ce que tu me dis,mais
peut-être donneras-tu + de détails + tard.
Suis intéréssé. Aime bien apprendre et apprendre encore.

A+

Bonsoir aA

Merci pour tes idées.

Je viens de trouver une piste intéressante, je ne soupçonnais pas la
répercution sur le screenupdating.
Mes ennuis viennent de la protection de la structure avec

ActiveWorkbook.Protect "toto", Structure:=True, Windows:úlse

La sub perturbée affiche quelques onglets parmi la totalité, et il aime
pas quand la structure est figée.
Il faut que je trouve les endroits ou je dois protéger et
déprotéger dans la commandbadpopup et cela devrait tourner à nouveau.

Quelle cochonnerie les protections.

Le logiciel bute sur Sheets(k).Visible = True
et dans la doc j'ai vu que protect s'appliquait à l'objet sheet mais je
n'arrive plus à retrouver le texte. Pas facile cette doc.
il doit y avoir un lien, que je ne saisi pas bien mais que je constate.

:'(

à+twinley


bonsoir,

as-tu fait une essai réel pour voir si ton
Application.screenupdating=true est true ou pas.

Par ailleurs, appelles tu un sous programme ou une fonction qui ferait
varier pour une raison quelconque cette propriété ?

A+




Bonsoir,

Jai un truc bizarre.

J'utilisais depuis un moment les deux lignes suivantes:

Application.EnableEvents = False
Application.ScreenUpdating = False

Or en pas à pas je m'aperçois que ScreenUpdating reste bloqué à True.
J'ai beau repasser dessus, il ne bouge pas.

J'ai inversé les deux lignes ScreenUpdating et EnableEvents, cela ne
change rien.
Par contre EnableEvents se modifie bien.

De quel côté faut-il aller chercher ?

Merci pour votre aide.







twinley
Le #1956774
.../...

moi non j'ai pas tout compris, mais ça tourne. J'explique.

J'ai une sub qui crée un menu et affiche les feuilles index, janvC,
janvS, janvJ, recap soit 5 feuilles parmi 38 feuilles, ou index, févC,
févS, févJ, recap etc.
J'ai ce code qui risque certains aléas voir un non fonctionnement dixit
Alain CROS, sur certaines config.
J'ai testé sur winMe/XL2000 et XP/XL2003, ça tourne pour l'instant.

Sub CreateMenuMois()
Dim MenuMois As CommandBarPopup
On Error Resume Next
With Application.CommandBars(1)
Set MenuMois = .Controls.Add(Type:=msoControlPopup,
before:=.Controls.Count - 1)
End With
MenuMois.Caption = "Mois"
'Creation des sous-menus
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Janvier"
.OnAction = "'montre5onglet ""2""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Février"
.OnAction = "'montre5onglet ""5""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Mars"
.OnAction = "'montre5onglet ""8""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Avril"
.OnAction = "'montre5onglet ""11""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Mai"
.OnAction = "'montre5onglet ""14""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Juin"
.OnAction = "'montre5onglet ""17""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Juillet"
.OnAction = "'montre5onglet ""20""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Août"
.OnAction = "'montre5onglet ""23""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Septembre"
.OnAction = "'montre5onglet ""26""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Octobre"
.OnAction = "'montre5onglet ""29""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Novembre"
.OnAction = "'montre5onglet ""32""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Décembre"
.OnAction = "'montre5onglet ""35""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Tout"
.OnAction = "ShowAllSh"
End With
End Sub


J'ai la sub qui affiche les onglets :

Sub montre5onglet(pos As Integer)
Dim onglet(100) As Boolean
Dim k As Integer
ActiveWorkbook.Unprotect "toto" 'deprotege le classeur avec mdp toto
Application.ScreenUpdating = False
Application.EnableEvents = False
onglet(1) = True
onglet(pos) = True
onglet(pos + 1) = True
onglet(pos + 2) = True
onglet(38) = True
For k = 1 To Sheets.Count
If onglet(k) Then
Sheets(k).Visible = True
Else
Sheets(k).Visible = False
End If
Next
Sheets(2).Activate
Application.EnableEvents = True
Application.ScreenUpdating = True
ActiveWorkbook.Protect "toto", Structure:=True, Windows:úlse
End Sub

Sur un point de sécurité que tu as soulevé aA, à savoir être sûr de la
position des feuilles toujours comme je les ai placé, j'ai ajouté dans
le module ThisWorkbook
une ligne de protection de la structure :

Private Sub Workbook_Open()
MsgBox ("ouverture") 'test pour voir si j'y passe
Application.EnableEvents = True
ActiveWorkbook.Protect "toto", Structure:=True, Windows:úlse
Module6.CreateMenuMois
Module7.CreateMenuTrim
End Sub

Si je ne mets pas les lignes unprotect et protect dans la sub
montre5onglet, le code plante sur le ligne
Sheets(k).Visible = True

Pourtant je ne touche pas à l'ordre des feuilles, mais il faut
déprotéger la structure. C'est comme ça !
Curieusement au moment de l'err 1004, j'ai vu en pas à pas que

Application.ScreenUpdating = True

était bloqué et ne changeait pas d'état, puis j'ai cerné le pb sur
unprotect struture.

Je me suis perdu dans l'aide sur unprotect, j'ai vu un exemple
Sheets(k).Visible = True qui disait que l'objet était en rapport avec,
puis je ne l'ai pas retrouvé, pas vraiment compris, enfin bref, ça tourne.
Si j'ai des pb avec win98/xl2000, Alain CROS m'a donné un code que je
n'arrive pas à utiliser et j(y compren rien, et j'ai encore une
alternative avec un code de Michel Pierron :

news://news.microsoft.com:119/


Voilà, voilà.

ci joint
Sub SupprMenuMois()
Dim NomBarre$
NomBarre = "Mois"
On Error Resume Next
Application.CommandBars(1).Controls(NomBarre).Delete
End Sub


à+twinley

re, twinley

suis pas sur d'avoir vraiement tout compris ce que tu me dis,mais
peut-être donneras-tu + de détails + tard.
Suis intéréssé. Aime bien apprendre et apprendre encore.

A+


Bonsoir aA

Merci pour tes idées.

Je viens de trouver une piste intéressante, je ne soupçonnais pas la
répercution sur le screenupdating.
Mes ennuis viennent de la protection de la structure avec

ActiveWorkbook.Protect "toto", Structure:=True, Windows:úlse

La sub perturbée affiche quelques onglets parmi la totalité, et il
aime pas quand la structure est figée.
Il faut que je trouve les endroits ou je dois protéger et
déprotéger dans la commandbadpopup et cela devrait tourner à nouveau.

Quelle cochonnerie les protections.

Le logiciel bute sur Sheets(k).Visible = True
et dans la doc j'ai vu que protect s'appliquait à l'objet sheet mais
je n'arrive plus à retrouver le texte. Pas facile cette doc.
il doit y avoir un lien, que je ne saisi pas bien mais que je constate.

:'(

à+twinley


bonsoir,

as-tu fait une essai réel pour voir si ton
Application.screenupdating=true est true ou pas.

Par ailleurs, appelles tu un sous programme ou une fonction qui
ferait varier pour une raison quelconque cette propriété ?

A+




Bonsoir,

Jai un truc bizarre.

J'utilisais depuis un moment les deux lignes suivantes:

Application.EnableEvents = False
Application.ScreenUpdating = False

Or en pas à pas je m'aperçois que ScreenUpdating reste bloqué à True.
J'ai beau repasser dessus, il ne bouge pas.

J'ai inversé les deux lignes ScreenUpdating et EnableEvents, cela
ne change rien.
Par contre EnableEvents se modifie bien.

De quel côté faut-il aller chercher ?

Merci pour votre aide.









anonymousA
Le #1956773
merci de toutes ces précisions.

A+


.../...

moi non j'ai pas tout compris, mais ça tourne. J'explique.

J'ai une sub qui crée un menu et affiche les feuilles index, janvC,
janvS, janvJ, recap soit 5 feuilles parmi 38 feuilles, ou index, févC,
févS, févJ, recap etc.
J'ai ce code qui risque certains aléas voir un non fonctionnement dixit
Alain CROS, sur certaines config.
J'ai testé sur winMe/XL2000 et XP/XL2003, ça tourne pour l'instant.

Sub CreateMenuMois()
Dim MenuMois As CommandBarPopup
On Error Resume Next
With Application.CommandBars(1)
Set MenuMois = .Controls.Add(Type:=msoControlPopup,
before:=.Controls.Count - 1)
End With
MenuMois.Caption = "Mois"
'Creation des sous-menus
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Janvier"
.OnAction = "'montre5onglet ""2""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Février"
.OnAction = "'montre5onglet ""5""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Mars"
.OnAction = "'montre5onglet ""8""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Avril"
.OnAction = "'montre5onglet ""11""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Mai"
.OnAction = "'montre5onglet ""14""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Juin"
.OnAction = "'montre5onglet ""17""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Juillet"
.OnAction = "'montre5onglet ""20""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Août"
.OnAction = "'montre5onglet ""23""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Septembre"
.OnAction = "'montre5onglet ""26""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Octobre"
.OnAction = "'montre5onglet ""29""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Novembre"
.OnAction = "'montre5onglet ""32""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Décembre"
.OnAction = "'montre5onglet ""35""'"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Tout"
.OnAction = "ShowAllSh"
End With
End Sub


J'ai la sub qui affiche les onglets :

Sub montre5onglet(pos As Integer)
Dim onglet(100) As Boolean
Dim k As Integer
ActiveWorkbook.Unprotect "toto" 'deprotege le classeur avec mdp toto
Application.ScreenUpdating = False
Application.EnableEvents = False
onglet(1) = True
onglet(pos) = True
onglet(pos + 1) = True
onglet(pos + 2) = True
onglet(38) = True
For k = 1 To Sheets.Count
If onglet(k) Then
Sheets(k).Visible = True
Else
Sheets(k).Visible = False
End If
Next
Sheets(2).Activate
Application.EnableEvents = True
Application.ScreenUpdating = True
ActiveWorkbook.Protect "toto", Structure:=True, Windows:úlse
End Sub

Sur un point de sécurité que tu as soulevé aA, à savoir être sûr de la
position des feuilles toujours comme je les ai placé, j'ai ajouté dans
le module ThisWorkbook
une ligne de protection de la structure :

Private Sub Workbook_Open()
MsgBox ("ouverture") 'test pour voir si j'y passe
Application.EnableEvents = True
ActiveWorkbook.Protect "toto", Structure:=True, Windows:úlse
Module6.CreateMenuMois
Module7.CreateMenuTrim
End Sub

Si je ne mets pas les lignes unprotect et protect dans la sub
montre5onglet, le code plante sur le ligne
Sheets(k).Visible = True

Pourtant je ne touche pas à l'ordre des feuilles, mais il faut
déprotéger la structure. C'est comme ça !
Curieusement au moment de l'err 1004, j'ai vu en pas à pas que

Application.ScreenUpdating = True

était bloqué et ne changeait pas d'état, puis j'ai cerné le pb sur
unprotect struture.

Je me suis perdu dans l'aide sur unprotect, j'ai vu un exemple
Sheets(k).Visible = True qui disait que l'objet était en rapport avec,
puis je ne l'ai pas retrouvé, pas vraiment compris, enfin bref, ça tourne.
Si j'ai des pb avec win98/xl2000, Alain CROS m'a donné un code que je
n'arrive pas à utiliser et j(y compren rien, et j'ai encore une
alternative avec un code de Michel Pierron :

news://news.microsoft.com:119/


Voilà, voilà.

ci joint
Sub SupprMenuMois()
Dim NomBarre$
NomBarre = "Mois"
On Error Resume Next
Application.CommandBars(1).Controls(NomBarre).Delete
End Sub


à+twinley


re, twinley

suis pas sur d'avoir vraiement tout compris ce que tu me dis,mais
peut-être donneras-tu + de détails + tard.
Suis intéréssé. Aime bien apprendre et apprendre encore.

A+


Bonsoir aA

Merci pour tes idées.

Je viens de trouver une piste intéressante, je ne soupçonnais pas la
répercution sur le screenupdating.
Mes ennuis viennent de la protection de la structure avec

ActiveWorkbook.Protect "toto", Structure:=True, Windows:úlse

La sub perturbée affiche quelques onglets parmi la totalité, et il
aime pas quand la structure est figée.
Il faut que je trouve les endroits ou je dois protéger et
déprotéger dans la commandbadpopup et cela devrait tourner à nouveau.

Quelle cochonnerie les protections.

Le logiciel bute sur Sheets(k).Visible = True
et dans la doc j'ai vu que protect s'appliquait à l'objet sheet mais
je n'arrive plus à retrouver le texte. Pas facile cette doc.
il doit y avoir un lien, que je ne saisi pas bien mais que je constate.

:'(

à+twinley


bonsoir,

as-tu fait une essai réel pour voir si ton
Application.screenupdating=true est true ou pas.

Par ailleurs, appelles tu un sous programme ou une fonction qui
ferait varier pour une raison quelconque cette propriété ?

A+




Bonsoir,

Jai un truc bizarre.

J'utilisais depuis un moment les deux lignes suivantes:

Application.EnableEvents = False
Application.ScreenUpdating = False

Or en pas à pas je m'aperçois que ScreenUpdating reste bloqué à True.
J'ai beau repasser dessus, il ne bouge pas.

J'ai inversé les deux lignes ScreenUpdating et EnableEvents, cela
ne change rien.
Par contre EnableEvents se modifie bien.

De quel côté faut-il aller chercher ?

Merci pour votre aide.











Alain CROS
Le #1956748
Bonjour.

Je pense que ça doit pourvoir fonctionner.
C'est encore simplifiable mais je te laisse le faire.

Alain CROS

Sub CreateMenuMois()
Dim MenuMois As CommandBarPopup
On Error Resume Next
With Application.CommandBars(1)
Set MenuMois = .Controls.Add(Type:=msoControlPopup, before:=.Controls.Count - 1)
End With
MenuMois.Caption = "Mois"
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Janvier"
.OnAction = "Action"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Février"
.OnAction = "Action"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Mars"
.OnAction = "Action"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Avril"
.OnAction = "Action"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Mai"
.OnAction = "Action"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Juin"
.OnAction = "Action"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Juillet"
.OnAction = "Action"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Août"
.OnAction = "Action"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Septembre"
.OnAction = "Action"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Octobre"
.OnAction = "Action"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Novembre"
.OnAction = "Action"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Décembre"
.OnAction = "Action"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Tout"
.OnAction = "Action"
End With
End Sub

Sub Action()
Dim pos&, Tblo, Ws As Worksheet
Tblo = Array(2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 32, 35, 40)
pos = Tblo(Application.Caller(1) - 1)
ActiveWorkbook.Unprotect "toto" 'deprotege le classeur avec mdp toto
Application.ScreenUpdating = False
Application.EnableEvents = False
If pos < 40 Then
Worksheets(1).Visible = True
Worksheets(pos).Visible = True
Worksheets(pos + 1).Visible = True
Worksheets(pos + 2).Visible = True
Worksheets(38).Visible = True
Else
For Each Ws In Worksheets
Ws.Visible = True
Next Ws
' Sheets(2).Activate 'J'ai comme un doute Si choix février Sheets(2) n'est pas visible
Application.EnableEvents = True
Application.ScreenUpdating = True
ActiveWorkbook.Protect "toto", Structure:=True, Windows:úlse
End Sub
Poster une réponse
Anonyme