Userform d'attente pendant q'une macro tourne

romrom

XLDnaute Nouveau
Bonjour à tous.

Après avoir longtemps discuté avec mon ami Google j'abandonne et viens vous importunez pour un problème assez courant il paraitrait. J'ai une macro et lorsque je la lance, j'aimerais faire apparaitre un userform avec un petit mot du style "Minute papillon, macro en cours" et qui disparaisse une fois celle ci finie. J'ai trouvé au moins 4 manières différentes de procéder :
- Mettre la propriété showmodal ou modal du userform sur false (mais ou est donc cette propriété ?? elle ne figurait pas dans la liste)
- Ecrire userform1.show false (marche pas)
- Ecrire userform1.show vbmodeless (marche pas)
- Ecrir userform1.show
Doevent (marche pas)

J'ai essayé de combiner les techniques, toujours rien à faire, il faut que je ferme mon userform pour que la macro se déclenche... ça me rend dingue car j'applique (en tout cas je pense) exactement ce que je vois sur les forums pour des personnes pour qui ça marche, mais moi, quelle que soit la technique... ça marche pas !!!! Ne sachant pas comment procéder je fais appel à votre science.

PS : Les éléments de code que j'ai écris ici sont peut être mal orthographiés, mais je ne pense pas que le problème vienne de là car Visual basic me les corrigeait à chaque fois.
 

Dranreb

XLDnaute Barbatruc
Re : Userform d'attente pendant q'une macro tourne

Bonsoir.
Sur un Userform sélectionné que j'ai sous les yeux, la fenêtre de propriété étant classée Par catégorie, ShowModal est la dernière propriété de la 2ième rubrique, à savoir Comportement.
 

Dranreb

XLDnaute Barbatruc
Re : Userform d'attente pendant q'une macro tourne

Re bonsoir.
Apparemment, un DoEvents derrière le Show suffit pour finaliser la mise à jour initiale de l'affichage, et pas besoin de Repaint.
Ou un seul devant suffit. Terminer par Unload UserForm1
 

romrom

XLDnaute Nouveau
Re : Userform d'attente pendant q'une macro tourne

Salut Danreb, MJ13.

Merci de vos réponses. Malheureusement j'ai appliqué les deux et essayé d'utiliser le fichier de MJ13, le problème reste le même... Je dois fermer le userform pour que la macro se lance... Qui plus est la propriété showmodal est toujours introuvable... Dans la rubrique comportement je n'ai que "cycle" et "enabled". Peut être tout celà est il du au fait que je suis sur mac...

Quoi qu'il en soit merci quandmême de m'avoir répondu.

Cordialement, Rom
 

laetitia90

XLDnaute Barbatruc
Re : Userform d'attente pendant q'une macro tourne

bonjour tous :):)

as tu essaye d'appeler la macro de l'user

en clair c'est user que tu call & pas la macro

j'ai mis la macro dans l'user on peut tres bien la mettre dans un module standard

repaint est suffisant dans ton cas

par contre avec MAC je sais pas si marcher???
 

Pièces jointes

  • Classeur1.xls
    37.5 KB · Affichages: 107
  • Classeur1.xls
    37.5 KB · Affichages: 116
  • Classeur1.xls
    37.5 KB · Affichages: 112

david84

XLDnaute Barbatruc
Re : Userform d'attente pendant q'une macro tourne

Bonjour tout le monde,
@Laetitia : en regardant ta macro, j'ai remplacé Repaint par DoEvents et cela semble donner le même résultat :
Code:
Private Sub UserForm_Activate()
 'Repaint
 DoEvents
 Call es
 Unload Me
End Sub
Mais peut-être que tu as sciemment choisi Repaint dans ce cas précis !
A+
 

Si...

XLDnaute Barbatruc
Re : Userform d'attente pendant q'une macro tourne

salut

un autre exemple avec la même idée que Laetitia :D mais un UsF vide
Code:
Private Sub UserForm_Activate()
  [A1] = 0
  Dim i As Long
  For i = 1 To 10000
    [A1] = i
    Me.Caption = "un moment " & Application.Rept(". ", 10 + i Mod 8)
  Next
  Unload Me
End Sub
 

Pièces jointes

  • UsF message d'attente.xls
    39 KB · Affichages: 81

laetitia90

XLDnaute Barbatruc
Re : Userform d'attente pendant q'une macro tourne

re tous:):)
pour repondre a l'ami David :)

la finalite c'est la meme par contre pour y arriver un peu different

la méthode Repaint que possede les users force a "redessiner " imediatement user avant la suite des instructions

tu as du remarquer que le code est dans activate & non dans initialise important

on aurait pu mettre une tempo qui rend la main au systeme un doevents en fin de compte!!! avant appel macro
Code:
Application.Wait Time + TimeSerial(0, 0, 1)
es
ect...


doevents
rend la main au system exploitation donc au processeur avec fil d'attente ect... un peu chiant a comprendre tous cela il faudrait faire une recherche sur google pour plus de precision

d'ailleurs certaines boucle do loop en particulier on utilise doevents pour rafraichir

sympa la demo de l'ami SI :)
 

Statistiques des forums

Discussions
311 720
Messages
2 081 909
Membres
101 836
dernier inscrit
karmon