Userform "veuillez patienter svp" VBA pendant excution Macro

bibbip35

XLDnaute Occasionnel
Bonjour à tous

Je voudrais , afficher un message d'attente pendant l'excution d'une macro assez "longue"

Après des recherches, j'ai trouvé, ceci...mais le problème est je rentre ce code dans userform
ca me met 1 message d'erreur
"Impossible d'afficher une feuille non modale lorsqu'une feuille modale est affichée "

Je precise que je dois resté sous cette procédure modale ( option explicit en début de feuille )

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

FERMETURE.Show 0
FERMETURE.Repaint
"Macro"

Unload FERMETURE

Aurriez vous une solution a me proposée?

Merci a tous & bonne soirée

Bibbip35
 

Papou-net

XLDnaute Barbatruc
Re : Userform "veuillez patienter svp" VBA pendant excution Macro

Bonsoir bibbip35,

Sans copie de ton fichier, je te propose un module de code d'une de mes applications qui affiche une barre de progression par pas de 10% effectués.

Tu peux tenter de t'en inspirer en remplaçant le nom de mon formulaire (UFBarreAvance) par le tien (FERMETURE). ensuite tu remplaces les lignes de code en italique par celui de ta macro.

Sub TriGrilles()
UFBarreAvance.Show vbModeless
Application.ScreenUpdating = False
nbr = Sheets("Grilles").Range("CG1")

With Sheets("Grilles")
For Each cel In .Range("A:A").SpecialCells(xlCellTypeConstants)
For c = 1 To 81
.Range("CD" & cel.Row) = .Range("CD" & cel.Row) & .Cells(cel.Row, c)
Next
.Range("CD" & cel.Row).Formula = "=concatener(" & .Range("A" & cel.Row & ":CC" & cel.Row).Address & ")"
With UFBarreAvance
.Label1.Width = 296 / nbr * cel.Row
If CInt(100 / nbr * cel.Row) Mod 20 = 0 Then
.Label2.Caption = "Enregistrement en cours... " & CInt(100 / nbr * cel.Row) & "% Effectués"
.Repaint
End If
End With
Next
.Range("A:CD").Sort Key1:=.Range("CD1")
.Range("CD:CD").ClearContents
End With

UFBarreAvance.Hide
DoEvents
Application.ScreenUpdating = True
End Sub

Espérant avoir pu t'aider.

Cordialement.

Edit: Bonsoir Michel.
 

bibbip35

XLDnaute Occasionnel
Re : Userform "veuillez patienter svp" VBA pendant excution Macro

Merci mj13...mais qd je supprime le 0... ca ne fonctionne pas

Merci papou.net...par l idee de barre de progression m intéresserait. .comment puis je procéder..

Merci d avance
 

Papou-net

XLDnaute Barbatruc
Re : Userform "veuillez patienter svp" VBA pendant excution Macro

RE:

Pas facile de t'aider sans avoir une copie de ton application. Tu peux l'envoyer si tu le veux, mais sans oublier de remplacer d'éventuelles données confidentielles.

Bonne soirée.
 

Roland_M

XLDnaute Barbatruc
Re : Userform "veuillez patienter svp" VBA pendant excution Macro

bonjour,

à savoir que UFBarreAvance.Hide ne libère pas la mémoire ! l'userform reste en mémoire !!!
il faut mettre Unload UFBarreAvance pour libérer et aussi éviter une erreur au prochain appel !!!

à propos des messages avec un userform pendant le déroulement d'une macro
j'en ai fait un qui tourne toujours dans mes programmes.
le principe simple
application.screenupdating = false
affichage de l'userform avec son message et unload aussitôt (sans doevents après sinon il disparaît !)
application.screenupdating = false
tant que l'écran n'est pas rafraichi il reste visible à l'écran ! malgré qu'il est déchargé !

seulement voilà, jusque 2003 ça fonctionnait bien ! mais depuis 2007 c'est fini !
malgré application.screenupdating = false, avec 2007 il disparait de l'écran comme si il effectuait un doevents

dommage c'était impeccable, toujours ces problèmes de compatibilité et de suivi avec Microsoft !
 

Papou-net

XLDnaute Barbatruc
Re : Userform "veuillez patienter svp" VBA pendant excution Macro

Bonjour à tous,

@ Roland:

Effectivement, et tu as raison, Hide conserve le formulaire en mémoire. Mais comme il est souvent affiché, je n'ai pas utilisé UnLoad (d'autant que je n'ai pas de problème de Ram à optimiser). De plus, il ne génère pas d'erreur au prochain appel, tant sur XL2003 que sur 2010.

Quant à ta deuxième proposition, elle ne me conviendrait pas car ma barre affiche la progression de la macro tous les 10% effectués.

Cordialement.
 

MJ13

XLDnaute Barbatruc
Re : Userform "veuillez patienter svp" VBA pendant excution Macro

Bonjour Bipbip, Papou, Roland

C'est le genre de demande, avec le fichier, ne représentant que le problème rencontré, ce serait plus simple pour tout le monde :).

N'oublions pas qu'un forum est fait, pour que cela puisse profiter dans les 2 sens.
 

bibbip35

XLDnaute Occasionnel
Re : Userform "veuillez patienter svp" VBA pendant excution Macro

Bonsoir à tous

Vous trouverez ci-joitnun fichier exemple, ou je souhaiterais
mettre en place l'userform" Veuillez patienter SVP " ...
Ce serait un plus d'avoir la barre de progression:p

Merci d'avance

Bibbip35
 

Pièces jointes

  • Classeur2.xlsm
    112.4 KB · Affichages: 167
  • Classeur2.xlsm
    112.4 KB · Affichages: 195
  • Classeur2.xlsm
    112.4 KB · Affichages: 215

bibbip35

XLDnaute Occasionnel
Re : Userform "veuillez patienter svp" VBA pendant excution Macro

Bonsoir a tous
Je reviens vers vous tous car malgré mes essai je n arrive pas a mettre l userform veillez patienter svp

J ai toujours 1 problème avec la feuille modale

Merci d avance a tous

Bonne soirée
 

Roland_M

XLDnaute Barbatruc
Re : Userform "veuillez patienter svp" VBA pendant excution Macro

bonsoir,

bon, ça ne répond pas à ton problème, mais juste une petite question !
as tu vraiment besoin d'un message patientez ?
le temps d'exécution représente combien de temps ?
quelque fois on se complique bien la vie avec des fioritures inutiles.
et puis il y a aussi le status barre !

j'ai posté là-dessus une explication concernant un message avec userform qui restait affiché avec 2003 mais plus avec 2007
excel ne se prête pas bien à ce genre de fantaisies
c'est comme les cellules clignotantes avec timer qui posent plus de problèmes qu'autres choses
 

Papou-net

XLDnaute Barbatruc
Re : Userform "veuillez patienter svp" VBA pendant excution Macro

Bonsoir,

j'ai posté là-dessus une explication concernant un message avec userform qui restait affiché avec 2003 mais plus avec 2007

Effectivement Roland, j'ai remarqué moi aussi ce phénomène. J'ai continué à travailler sur ce sujet et je me heurte à un souci que je n'ai toujours pas élucidé. Le formulaire s'affiche et se ferme bien automatiquement, mais il reste vierge: on n'y voit aucun contrôle à l'intérieur alors que sur XL2003 je n'avais jamais eu ce dysfonctionnement. J'avoue mon impuissance à comprendre ce phénomène dans l'état actuel de mes connaissances. J'ai bien regardé également du côté des StatusBar, mais je n'ai pas encore trouvé comment les faire évoluer. Mic...oft me fatigue avec ces changements qui ne vont pas dans le sens de la simplicité mais peut-être est-ce le prix à payer pour augmenter la puissance du logiciel.

Je confirme donc à bibbip que je sèche lamentablement, bien que le code que je lui avais communiqué initialement fonctionne toujours parfaitement.

A +

Cordialement.
 

bibbip35

XLDnaute Occasionnel
Re : Userform "veuillez patienter svp" VBA pendant excution Macro

Bonsoir a tous les deux et autres membres bien sûr

Je vois que en effet. .c est pas si simple mon histoire ...
Entre les évolutions microsoft et mon problème de feuille modale...je vais me passer du message dans mon fichier...je préviendrai l utilisateur avant lancement de la macro que l exécution peux prendre un certain temps

Et tous un grand merci pour le temps que vous m aurrez accorder et l aide bien entendu

Bonne soirée et longue vie au forum
 

Si...

XLDnaute Barbatruc
Re : Userform "veuillez patienter svp" VBA pendant excution Macro

salut

sans chercher à comprendre l'utilité ici d'un tel contrôle, voici un exemple d'intégration d'une barre de progression (réalisé sous 2010).
 

Pièces jointes

  • ProgressBar.xlsm
    144.3 KB · Affichages: 415

bibbip35

XLDnaute Occasionnel
Re : Userform "veuillez patienter svp" VBA pendant excution Macro

Merci pour le Progress bar; je l'avais en effet vue sur le forum et je le trouvais intérressant...
Mais je vais être franc le mettre en place dans mon userform, semble bien compliquée pour moi ( debutant en VBA ) ==> Fichier exemple post 9


Sinon,pour infos ...l'objectif pour moi est de prevennir l'utilsateur lors des macro longues ( 15 sec. )
que excel n'ai pas "planter" mais en fonctionement

En tous les cas MERCI !!!

A+

Bibbip35
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin