Microsoft 365 Macro provoque rafraichissement (avec Screenupdating false)

Lisette

XLDnaute Junior
Bonjour à tous
j'ai un petit souci : quand je clique sur une image, j'ai une macro qui s'exécute et qui fait apparaître un onglet caché le reste du temps.
J'ai bien mis screenupdating false, mais quand l'onglet s'affiche, j'ai l'impression que l'affichage se rafraichit tout de même car les images "sautent".
Avez-vous des idées ?
D'avance un grand merci !
 

Pièces jointes

  • EVAC2.xlsm
    97.1 KB · Affichages: 21

soan

XLDnaute Barbatruc
Inactif
Bonjour Lisette,

ton fichier en retour ; à toi de faire les tests. :) (y compris tes nouvelles subs)

code VBA de Module2 :

VB:
Sub Image8_Cliquer()
  Application.ScreenUpdating = 0: [J9] = "": [B9] = "ü"
End Sub

Sub Image9_Cliquer()
  Application.ScreenUpdating = 0: [B9] = "": [J9] = "ü"
End Sub

Sub Image11_Cliquer()
  Application.ScreenUpdating = 0
  If [A12] = "" Then [A12] = "X" Else [A12] = ""
  Worksheets("Tranche 0").Visible = ([A12] = "X")
End Sub

code VBA de Module1 :

VB:
Option Explicit

Private Sub Job(k As Byte)
  Dim b As Boolean, i As Byte
  b = -1: Application.ScreenUpdating = 0
  For i = 2 To 4
    If k > 1 Then b = i = k
    Worksheets(i).Visible = b
  Next i
  Worksheets(k).Select
End Sub

Sub ShowÉvacuation()
  Job 2
End Sub

Sub ShowEnvironnement()
  Job 3
End Sub

Sub ShowAccident()
  Job 4
End Sub

Sub ShowAll()
  Job 1
End Sub

même si les images sautent encore un peu, j'ai rien d'mieux à proposer. 😢

soan
 

Pièces jointes

  • EVAC2.xlsm
    100.3 KB · Affichages: 3

Dudu2

XLDnaute Barbatruc
Bonjour,
La feuille "Tranche 0" est peu ordinaire et Excel met pas mal de temps à la rendre visible ce qui provoque cette saute d'écran.
J'ai essayé des trucs divers.
La seule variante qui ait un effet est ce code qui évite les sautes d'écran en rendant la feuille visible, mais on voit quand même un rapide ré-affichage des Shapes que tu as placées dans la feuille aux boutons. Mais plus de saute d'écran.
VB:
Sub Image11_Cliquer()
    If ActiveSheet.Range("A12").value = "" Then
        Application.ScreenUpdating = False
        Sheets("Tranche 0").Visible = True
        Application.ScreenUpdating = True
        ActiveSheet.Range("A12").value = "X"
    Else
        Sheets("Tranche 0").Visible = False
        ActiveSheet.Range("A12").value = ""
    End If
End Sub

Faudrait voir avec des CommandButtons ActivX si ils bougent aussi.
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
J'ai simplifié le code ci-dessus.
Les CommandButtons, quand ils activent le même code, ne bougent pas avec les Shapes.
Tu aurais peut-être intérêt à revoir tes boutons.
La saute des Shapes n'est pas systématique et ne survient qu'une fois sur 2 en moyenne (sur mon PC). Difficile de savoir pourquoi. Exclusivité de la CPU ? Contexte préchargé ?
 

Pièces jointes

  • Copie de EVAC2.xlsm
    105.9 KB · Affichages: 6
Dernière édition:

Lisette

XLDnaute Junior
Bonjour à tous et un grand merci pour vos réponses :)
j'ai testé vos deux fichier et cela fait la même chose chez moi avec toutes les versions.

Je pense que ce n'est pas un problème de VBA donc mais bien de ressources matérielles, car l'onglet Tranche 0 est effectivement peu commune, je vous rejoins :)

Tant pis, je vais voir à faire différemment... ou à accepter que cela saute un peu (mais c'est difficile quand on essaie de faire un truc propre.

Merci beaucoup en tous les cas de votre support !
Belle journée et bon week-end !
 

patricktoulon

XLDnaute Barbatruc
Bonjour @Lisette
j'ai cru comprendre que tu avais des petits sursauts quand
tu cliquais sur tes vignettes "Tranche"
sur ton exemple seule la vignette "tranche0" a une macro attribuée les autres n'en n'ont pas
par contre bien Evidemment si tu teste en ayant une cellule sélectionnée avant tu verra ça ne sursaute plus
par contre si tu sélectionne une tranche et que tu clique sur tranche0 tu verra ça va sursauter
donc en conclusion
dans la macro attribuée je sélectionne une cell avant et voila plus de sursaut
VB:
Sub Image11_Cliquer()
 [A13].Select'on sélectionne une cell pour éventuellement désélectionner une vignette qui le serait  
 Application.ScreenUpdating = False
 If Range("A12").value = "" Then
 Range("A12").value = "X"
 Sheets("Tranche 0").Visible = True
 Else
 Range("A12").value = ""
 Sheets("Tranche 0").Visible = False
 End If
 Sheets("ÉVACUATION").Select
 Application.ScreenUpdating = True
 End Sub
j'ajoute que si tes vignette auraient toutes leur macro attribuées tu n'aurais pas ce problème
car une fois une macro attribuée le click gauche ne sélectionne plus les vignette ca devient des boutons a part entière


;)
 

Dudu2

XLDnaute Barbatruc
Bonjour @patricktoulon,
Kif kif bourricot ;)
Agent01.gif


j'ajoute que si tes vignette auraient toutes leur macro attribuées tu n'aurais pas ce problème
Non, toutes les vignettes sautent. Il n'y a que la CommandButton1 qui est associé au même code qui ne saute pas (même si on le voit sauter sur le gif).
 

Dudu2

XLDnaute Barbatruc
j'ai testé vos deux fichier et cela fait la même chose chez moi avec toutes les versions.
Que se passe-t-il chez toi au juste ?
- Saute d'écran "violente"
- Saute des Shapes seulement ?
A part si tu as un PC avec une CPU de l'an 1000, en utilisant le fichier que je t'ai envoyé séparant les Shapes tu ne devrais pas avoir de saute d'écran "violente". En séparant les Shapes on peut voir ce qui saute et en principe, avec le fichier envoyé, ce ne sont que les Shapes (à droite) qui sautent.
 

Lisette

XLDnaute Junior
bonjour à tous,
dans mon fichier de base, chaque bouton a sa macro, j'ai juste simplifié dans le fichier que je vous envoie :)
Par contre, cela saute quand j'active le bouton (et que ça unHide la feuille) mais quand je la cache cela ne saute pas :)
 

Dudu2

XLDnaute Barbatruc
dans mon fichier de base, chaque bouton a sa macro, j'ai juste simplifié dans le fichier que je vous envoie
On avait bien compris.
Par contre, cela saute quand j'active le bouton (et que ça unHide la feuille) mais quand je la cache cela ne saute pas
Oui, on le sait déjà.

Je suppose que, comme sur mon PC, ce qui "saute", ce sont les Shapes. Pas l'écran.
Tu as 2 options:
1 - Supprimer les contours des Shapes pour ne pas qu'on voit qu'elle sautent et, s'il faut un contour, utiliser le cadre des cellules
2 - Remplacer les clics sur Shapes par des double-clics sur cellule interceptés par l'évènement Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dans le fichier joint, j'ai utilisé l'option 1.
Et pour supprimer ces contours de Shapes j'ai fait ça
1620222909990.png
 

Pièces jointes

  • Copie de Copie de EVAC2-1.xlsm
    100.7 KB · Affichages: 3

Lisette

XLDnaute Junior
Bon désolée, j'avais... visiblement mal compris.
Oui, ce sont les shapes qui sautent.
Par contre, pour les shapes, le but est justement d'avoir cet aspect visuel, sinon j'aurais mis directement des boutons et noms des images.
 

Discussions similaires

Statistiques des forums

Discussions
315 124
Messages
2 116 473
Membres
112 753
dernier inscrit
PUARAI29