XL 2016 Shape qui ne s'affiche pas

ya_v_ka

XLDnaute Impliqué
Bonjour le monde,

Mon souci du jour :

J'ai créé une macro qui met un certain temps. Afin de faire savoir que tout va bien, au début de l'exécution j'affiche un shape (.visible = true), existant mais masqué sur la feuille au départ, et le re-masque juste à la fin du traitement.
En pas par pas tout fonctionne à merveille, mais lorsque la macro tourne normalement ça ne marche pas !
J'ai rajouté un .screenupdating = true pour être sûr, j'ai essayé avec un wait, un sleep, des beep, rien n'y fait !

Si quelqu'un a une idée ?

Merci d'avance

Ya'v
 

ya_v_ka

XLDnaute Impliqué
Meuh non mon ami ;)

Mais je crois que cet affichage de shape nous fait tourner en bourique !!!!
Je pense que ce n'est pas la meilleure solution, en plus plus on teste le même fichier, on dirait que elle apparait de moins en moins... A devenir fou !

Bon courage
@+Thierry

Ca c'est aussi mon humble avis… on teste qqchose, on se dit ça marche ! et au 2e ou 3e tour… raté ! :-(
 

GALOUGALOU

XLDnaute Accro
re le fil
test.gif


juste pour la curiosité,
(A tout hasard, meme avec une feuille blanche, si le code est très lourd l'écran peut rester vide)
le code ci-dessous s'éxécute et je voie le shappe tout au long du code, mais peut-être que cela vient de mon système. w10 64 bit office 2010 64bit

donc sur quatre feuille avec 5select, plusieurs msgbox et les deux boutons nommés rect1 et rect2
après le select "Application.ScreenUpdating = False " condition sine qua non a la conservation de l'image à l'écran pendant l'éxécution de la macro

les boutons à l’arrière plan, l'image et le cadre texte au premier plan

VB:
Sub numeroter_cellule_fonction_ligne2()
Dim i&, j&
Sheets("Feuil1").Select ' si le classeur n'a pas été fermé à cette page
MsgBox "effacement de la feuille"
ActiveSheet.UsedRange.ClearContents
MsgBox "l'information, l'image va masquer le déroulement de la macro"
ActiveSheet.Shapes("Image 2").Visible = True
ActiveSheet.Shapes("zonetexte").Visible = True
ActiveSheet.Shapes("zonetexte2").Visible = True
Sheets("Feuil1").Select 'rendre visible l'image avant de desactiver le rafraichissement écran
  Application.ScreenUpdating = False 'desactiver rafraichissement écran
   For i = 1 To 100: For j = 1 To 1000: Cells(i, j) = i: Next j: Next i
  MsgBox "nous quittons la feuille 1 pour la Feuil2"
   Sheets("Feuil2").Select
   For i = 1 To 100: For j = 1 To 1000: Cells(i, j) = i: Next j: Next i
   MsgBox "nous quittons la feuille 2 pour la Feuil3"
   Sheets("Feuil3").Select
   For i = 1 To 100: For j = 1 To 1000: Cells(i, j) = i: Next j: Next i
MsgBox "nous quittons la feuille 3 pour la Feuil4"
   Sheets("Feuil4").Select
   For i = 1 To 100: For j = 1 To 1000: Cells(i, j) = i: Next j: Next i
     Sheets("Feuil1").Select 'en premier selection de la feuille contenant les shapes
     MsgBox "nous quittons la feuille 4 pour la Feuil1"
        MsgBox "l'information, l'image va se fermer,nous allons voir le résultat"
   ActiveSheet.Shapes("Image 2").Visible = False 'en deuxième masquer l'image
     ActiveSheet.Shapes("zonetexte").Visible = False
     ActiveSheet.Shapes("zonetexte2").Visible = False
     Application.ScreenUpdating = True ' en troisième rafraichissement écran
      MsgBox "termine"
    End Sub
cordialement
galougalou
ps sylvanu je te prie de m'excuser pour la déformation de ton image.
 

Pièces jointes

  • avec et sans select v3.xlsb
    751.3 KB · Affichages: 12
Dernière édition:

ya_v_ka

XLDnaute Impliqué
Re tout le monde,

Galougalou, ça a l'air excellent… chez toi !
Chez moi par contre j'ai :
- msgbox effacement
--> la feuille se vide
- msgbox image va masquer
- msgbox feuille 1 à 2
- msgbox feuille 2 à 3
- msgbox feuille 3 à 4
- msgbox feuille 4 à 1
- msgbox image va se fermer
--> la feuille apparait remplie
- msgbox terminé
mais je n'ai jamais vu ni Sylvanu, ni les textes !
Ca doit venir de la différence de machines et configurations...

Quand à la page blanche, effectivement y'a aussi des ratés parfois… Je crois que je vais fournir des Post'it, c'est plus simple !

A noter aussi que ma statusbar, bien qu'affichant les bons messages, se colore en vert, texte grisé, pour certaines parties du code ???

Merci encore

Ya'v
 

GALOUGALOU

XLDnaute Accro
bonjour ya v ka
oui chez moi, j'ai peut-être de la chance mais je fais fonctionner plusieurs classeurs sur ce principe.
si tu fournissais un classeur exemple vide d 'information confidentielle, cela serait plus simple pour tous les membres du forum d'analyser tes codes.
je me pose une question ?
as tu ouvert le classeur #79 pour le test ou as tu copié le code dans un autre classeur.
cordialement
galougalou
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir les amis

On en aura passé du temps sur ce babatruc,

J'ai joué le jeu depuis un Windows 8.1 PRO 64 Bits, et un Excel 2013 Pro Plus 32 Bits, avec une machine 'potable'sur disk SSD et que néni ! En ne changeant pas une seule virgule de ton code GalouGalou bien entendu !

Shape.gif


Donc oui ca doit jouer cette différence de config.... Comme quoi ce n'est pas portable et pérenne comme solution de cache-cache de Shape !!

Bien à vous
@+Thierry
 

ya_v_ka

XLDnaute Impliqué
bonjour ya v ka
oui chez moi, j'ai peut-être de la chance mais je fais fonctionner plusieurs classeurs sur ce principe.
si tu fournissais un classeur exemple vide d 'information confidentielle, cela serait plus simple pour tous les membres du forum d'analyser tes codes.
je me pose une question ?
as tu ouvert le classeur #79 pour le test ou as tu copié le code dans un autre classeur.
cordialement
galougalou

Ouvert...

Et mon classeur est toujours en #13... il n'a rien de confidentiel, c'est un inventaire de cuisine pro.
 

GALOUGALOU

XLDnaute Accro
bonsoir le fil
mea culpa
j'ai vérifié sur d'autre machine, bien que cela marche sur excel 2010, ça ne fonctionne pas sur les versions suivantes,(merciiii eriiiic) donc conclusion il va falloir que j'adapte mes classeurs à cette évolution. (désolé thierry)

donc je me suis dit revenons à l'essentiel, si j'ai bien compris ya v ka veut faire patienter pendant l’exécution de la macro

je propose une solution avec un userform, testé sur excel 2016. trouvé sur ce lien
(a voir sur un code très lourd)

dans l'userform
VB:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  If CloseMode = vbFormControlMenu Then Cancel = True
End Sub
dans le code macro du module
Code:
Sub numeroter_cellule_fonction_ligne2()
Dim i&, j&
Sheets("Feuil1").Select ' si le classeur n'a pas été fermé à cette page
  USF_message.Show 0
USF_message.Repaint

  'code macro
     
        USF_message.Hide
         Sheets("Feuil1").Select
    End Sub
cordialement
galougalou
ps ya v ka je vais jeter un coup d'oeil sur le classeur du #13
 

Pièces jointes

  • shapes avec et sans select v4xlsm.xlsm
    20.1 KB · Affichages: 3

Dranreb

XLDnaute Barbatruc
Dans ce cas il ne reste plus qu'à l'arranger sérieusement. Qu'est-ce qu'elle fait, exactement ?
Comme il se doit, de très nombreux accès individuels aux cellules y sont-il complètement bannis, au moins ?
 
Dernière édition:

ya_v_ka

XLDnaute Impliqué
Dans ce cas il ne reste plus qu'à l'arranger sérieusement. Qu'est-ce qu'elle fait, exactement ?
Comme il se doit, de très nombreux accès individuels aux cellules y sont-il complètement bannis, au moins ?

Je suis dessus… et je viens de découvrir que les feuilles avaient leur propre procédures _activate, _avantdblclick et _avantclickdroit, _etc... donc je vais déjà éliminer bien du fourbi inutile !

Quant à ce qu'elle fait :
- C'est l'inventaire complet d'une cuisine professionnelle, 1 feuille par local, 135 locaux, 268 pages à l'impression;
- De pouvoir imprimer le tout en maintenant les formats règlementaires;
- Elle me permet de contrôler l'inventaire sur site, ligne par ligne;
- De noter ce qui manque (ou qui est en trop) dans chaque local;
- De traiter cette liste de notes;
- De transformer la liste de notes en facture et d'en mailer une version ad hoc à la compta;
- De sauvegarder la liste de notes avant nouveau contrôle;
- De créer un inventaire unique en regroupant tous les items similaires (ça fonctionne, mais je dois tout revoir car 25 minutes !) et d'en sauvegarder une copie.

Ce qui coûte pas mal de temps, c'est d'effacer et recréer le format conditionnel de chaque feuille avant de pouvoir utiliser le fichier… sinon, à la longue, avec les copier-coller de cellules ou lignes les formats se perdent ou bugent !

Et comme j'apprends et découvre au fur à mesure, c'est pas toujours très clean !

Et pour ce qui est de l'accès individuel aux cellules, je ne crois pas que ce soit le pire, sauf pour l'inventaire unique… mais j'essaye vainement de passer par un dictionnary :(! (et je dois pouvoir inverser le tri et le match pour gagner beaucoup…)

Amical merci

Ya'v
 

Discussions similaires

Statistiques des forums

Discussions
312 192
Messages
2 086 056
Membres
103 110
dernier inscrit
Privé