OVH Cloud OVH Cloud

Aide en macro

9 réponses
Avatar
Caro
Bonjour,

J’ai une macro qui exécute une mise à jour assez longue. J’aimerais afficher
un message à l’utilisateur lui indiquant de patienter durant la mise à
jour…J’ai pour cela créé un userform nommé Avis. Je ne sais pas comment
écrire le code. Une débutante qui s’essaie…

J’avais pensé mais ça ne fonctionne pas…

X= 0
Do While x = 0
Avis.Show
Mes instructions
X = 1

Loop

Merci pour toutes vos suggestions.

Caro

9 réponses

Avatar
MichDenis
Dans un module standard, tu écris une procédure pour afficher le formulaire

Dans le formulaire, une procédure de ce type :

'-----------------------
Private Sub UserForm_Activate()

Me.Repaint
'Tu appelles le nom de ta procédure à exécuter qui est dans
'un module Standard.
MaProcédureDeMiseAjour
Me.Hide
Unload Me

End Sub
'-----------------------

Et ton message à l'usager, tu l'inscris dans un contrôle "Label" du formulaire



"Caro" a écrit dans le message de news:

Bonjour,

J'ai une macro qui exécute une mise à jour assez longue. J'aimerais afficher
un message à l'utilisateur lui indiquant de patienter durant la mise à
jour.J'ai pour cela créé un userform nommé Avis. Je ne sais pas comment
écrire le code. Une débutante qui s'essaie.

J'avais pensé mais ça ne fonctionne pas.

X= 0
Do While x = 0
Avis.Show
Mes instructions
X = 1

Loop

Merci pour toutes vos suggestions.

Caro
Avatar
MichDenis
En supplément : dès que tu lanceras l'ouverture du formulaire,
ta macro de mise à jour s'exécutera.



Dans le formulaire, une procédure de ce type :

'-----------------------
Private Sub UserForm_Activate()

Me.Repaint
'Tu appelles le nom de ta procédure à exécuter qui est dans
'un module Standard.
MaProcédureDeMiseAjour
Me.Hide
Unload Me

End Sub
'-----------------------

Et ton message à l'usager, tu l'inscris dans un contrôle "Label" du formulaire



"Caro" a écrit dans le message de news:

Bonjour,

J'ai une macro qui exécute une mise à jour assez longue. J'aimerais afficher
un message à l'utilisateur lui indiquant de patienter durant la mise à
jour.J'ai pour cela créé un userform nommé Avis. Je ne sais pas comment
écrire le code. Une débutante qui s'essaie.

J'avais pensé mais ça ne fonctionne pas.

X= 0
Do While x = 0
Avis.Show
Mes instructions
X = 1

Loop

Merci pour toutes vos suggestions.

Caro
Avatar
JB
Bonjour,

Avec une zone de texte

-Créer une zone de texte et la nommer MonShape(en haut à gauche de la
barre de formule-valider avec Entrée)

Sub Attente()
ActiveSheet.Shapes("monshape").Visible = True
ActiveSheet.Shapes("monshape").TextFrame.Characters.Text = "Attendez
svp..."
'--- simulation attente
For i = 1 To 100000000
Next i
'---
ActiveSheet.Shapes("monshape").Visible = False
End Sub

http://cjoint.com/?lnqtGh6iVU

Cordialement JB

Bonjour,

J'ai une macro qui exécute une mise à jour assez longue. J'aimerais a fficher
un message à l'utilisateur lui indiquant de patienter durant la mise à
jour...J'ai pour cela créé un userform nommé Avis. Je ne sais pas comment
écrire le code. Une débutante qui s'essaie...

J'avais pensé mais ça ne fonctionne pas...

X= 0
Do While x = 0
Avis.Show
Mes instructions
X = 1

Loop

Merci pour toutes vos suggestions.

Caro


Avatar
Caro
Bonjour

Peut-être que je ne comprends pas correctement... voici ce que j'ai fait:
sur ma feuille j'ai un bouton macro qui dit:

Sub AfficheMessage()

Avis.Show 'Mon userform avec mon label demandant d'attendre

MASTER_Modèle_1 'Ma longue mise à jour dans un module standard

Avis.Hide

End Sub
Lorsque je tape me.repaint, et unload me comme tu me l'as inscrit, j'ai un
message qui dit: utilisation incorrecte du mot clé me

Le formulaire s'affiche bien, mais la mise à journe se fait pas....
Merci pour ton aide.


En supplément : dès que tu lanceras l'ouverture du formulaire,
ta macro de mise à jour s'exécutera.



Dans le formulaire, une procédure de ce type :

'-----------------------
Private Sub UserForm_Activate()

Me.Repaint
'Tu appelles le nom de ta procédure à exécuter qui est dans
'un module Standard.
MaProcédureDeMiseAjour
Me.Hide
Unload Me

End Sub
'-----------------------

Et ton message à l'usager, tu l'inscris dans un contrôle "Label" du formulaire



"Caro" a écrit dans le message de news:

Bonjour,

J'ai une macro qui exécute une mise à jour assez longue. J'aimerais afficher
un message à l'utilisateur lui indiquant de patienter durant la mise à
jour.J'ai pour cela créé un userform nommé Avis. Je ne sais pas comment
écrire le code. Une débutante qui s'essaie.

J'avais pensé mais ça ne fonctionne pas.

X= 0
Do While x = 0
Avis.Show
Mes instructions
X = 1

Loop

Merci pour toutes vos suggestions.

Caro






Avatar
Caro
Bonjour,

Oui, c'est une autre solution, par contre, je ne sais pas combien de temps
durera ma mise à jour... donc je ne sais pas combien de temps afficher mon
texte...

Je suis ouverte à toutes suggestions.
Merci.


Bonjour,

Avec une zone de texte

-Créer une zone de texte et la nommer MonShape(en haut à gauche de la
barre de formule-valider avec Entrée)

Sub Attente()
ActiveSheet.Shapes("monshape").Visible = True
ActiveSheet.Shapes("monshape").TextFrame.Characters.Text = "Attendez
svp..."
'--- simulation attente
For i = 1 To 100000000
Next i
'---
ActiveSheet.Shapes("monshape").Visible = False
End Sub

http://cjoint.com/?lnqtGh6iVU

Cordialement JB

Bonjour,

J'ai une macro qui exécute une mise à jour assez longue. J'aimerais afficher
un message à l'utilisateur lui indiquant de patienter durant la mise à
jour...J'ai pour cela créé un userform nommé Avis. Je ne sais pas comment
écrire le code. Une débutante qui s'essaie...

J'avais pensé mais ça ne fonctionne pas...

X= 0
Do While x = 0
Avis.Show
Mes instructions
X = 1

Loop

Merci pour toutes vos suggestions.

Caro






Avatar
MichDenis
Fichier exemple là : http://cjoint.com/?lnr2TMByCB
Avatar
Caro
Bonjour ,

C’est super, ça marche… et surtout je comprends grâce à ton exemple.

Merci beaucoup de ton aide.

Caro



Fichier exemple là : http://cjoint.com/?lnr2TMByCB





Avatar
JB
Il n'est pas nécessaire de connaître le temps, il suffit de remplacer
:

'--- simulation attente
For i = 1 To 100000000
Next i

Par le pgm réel.

L'instruction : ActiveSheet.Shapes("monshape").Visible = True
affiche la zone de texte au départ

Cette autre instruction : ActiveSheet.Shapes("monshape").Visible =
False
cache la zone de texte à la fin:

JB



Bonjour,

Oui, c'est une autre solution, par contre, je ne sais pas combien de temps
durera ma mise à jour... donc je ne sais pas combien de temps afficher mon
texte...

Je suis ouverte à toutes suggestions.
Merci.


Bonjour,

Avec une zone de texte

-Créer une zone de texte et la nommer MonShape(en haut à gauche de la
barre de formule-valider avec Entrée)

Sub Attente()
ActiveSheet.Shapes("monshape").Visible = True
ActiveSheet.Shapes("monshape").TextFrame.Characters.Text = "Attendez
svp..."
'--- simulation attente
For i = 1 To 100000000
Next i
'---
ActiveSheet.Shapes("monshape").Visible = False
End Sub

http://cjoint.com/?lnqtGh6iVU

Cordialement JB

Bonjour,

J'ai une macro qui exécute une mise à jour assez longue. J'aimera is afficher
un message à l'utilisateur lui indiquant de patienter durant la mis e à
jour...J'ai pour cela créé un userform nommé Avis. Je ne sais pas comment
écrire le code. Une débutante qui s'essaie...

J'avais pensé mais ça ne fonctionne pas...

X= 0
Do While x = 0
Avis.Show
Mes instructions
X = 1

Loop

Merci pour toutes vos suggestions.

Caro








Avatar
Caro
Mais oui, bien sûr... j'avais mal saisi. J'ai maintenant 2 solutions
différentes de procéder.

Merci pour ton aide.


Il n'est pas nécessaire de connaître le temps, il suffit de remplacer
:

'--- simulation attente
For i = 1 To 100000000
Next i

Par le pgm réel.

L'instruction : ActiveSheet.Shapes("monshape").Visible = True
affiche la zone de texte au départ

Cette autre instruction : ActiveSheet.Shapes("monshape").Visible > False
cache la zone de texte à la fin:

JB



Bonjour,

Oui, c'est une autre solution, par contre, je ne sais pas combien de temps
durera ma mise à jour... donc je ne sais pas combien de temps afficher mon
texte...

Je suis ouverte à toutes suggestions.
Merci.


Bonjour,

Avec une zone de texte

-Créer une zone de texte et la nommer MonShape(en haut à gauche de la
barre de formule-valider avec Entrée)

Sub Attente()
ActiveSheet.Shapes("monshape").Visible = True
ActiveSheet.Shapes("monshape").TextFrame.Characters.Text = "Attendez
svp..."
'--- simulation attente
For i = 1 To 100000000
Next i
'---
ActiveSheet.Shapes("monshape").Visible = False
End Sub

http://cjoint.com/?lnqtGh6iVU

Cordialement JB

Bonjour,

J'ai une macro qui exécute une mise à jour assez longue. J'aimerais afficher
un message à l'utilisateur lui indiquant de patienter durant la mise à
jour...J'ai pour cela créé un userform nommé Avis. Je ne sais pas comment
écrire le code. Une débutante qui s'essaie...

J'avais pensé mais ça ne fonctionne pas...

X= 0
Do While x = 0
Avis.Show
Mes instructions
X = 1

Loop

Merci pour toutes vos suggestions.

Caro