Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Message d'attente fin de macro

11 réponses
Avatar
Guy72
Bonjour à tous
Pouvez vous me dire quoi faire pour faire apparaître un message d'attente
pendant le déroulement de la macro.
Cordialement
Guy

10 réponses

1 2
Avatar
AV
Avec un simple textbox :

http://cjoint.com/?kbisC77Fr1

AV
Avatar
JB
Bonjour,

http://cjoint.com/?kbjjWSY8CM

Solution1:Message avec Shape

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

Solution2: Horloge d'attente

Horloge
Dim temps
Dim chrono As Double
Sub majHeure()
Sheets("Attente").Range("a1") = chrono / 86400
chrono = chrono + 1
temps = Now + TimeValue("00:00:1")
Application.OnTime temps, "majHeure"
End Sub

Sub attente3()
chrono = 0
majHeure
'--- Insérer la macro ici
n = 1000
For i = 1 To n
DoEvents
For j = 1 To 100000

Next j
Next i
'---------------------------
Sheets("Attente").Range("a1") = "Fin"
Application.OnTime temps, Procedure:="majHeure", Schedule:úlse
End Sub

Sub auto_close()
On Error Resume Next
Application.OnTime temps, Procedure:="majHeure", Schedule:úlse
End Sub

Solution3: Barre d'attente formulaire

Le formulaire est non modal (showmodalúlse)

Public témoin As Boolean
Sub Attente()
n = 20 ' nb de fichiers à traiter
témoin = True ' pour empêcher fermeture du formulaire
F_BarreAttente.Show
For f = 1 To n
'-- traitement fichier
For a = 1 To 50000000: Next a ' Simulation attente
'--------------
p = p + 1 / n ' calcul du pourcentage
F_BarreAttente.Label1.Width = p * 100
F_BarreAttente.Caption = Format(p, "0%")
DoEvents
Next f
témoin = False
Unload F_BarreAttente
End Sub

Pour empêcher la fermeture du formulaire:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As
Integer)
If témoin Then Cancel = True
End Sub

Solution4: Afficher un pourcentage d'avancement

Sub attente4()
n = 3000
For i = 1 To n
DoEvents
For j = 1 To 100000

Next j
Sheets("Attente2").Range("B1") = i / n
Next i
End Sub

Cordialement JB



Bonjour à tous
Pouvez vous me dire quoi faire pour faire apparaître un message d'atten te
pendant le déroulement de la macro.
Cordialement
Guy


Avatar
Guy72
Salut Alain
Ce que tu m'as proposé devrais me convenir, mais je ne sais pas comment
l'adapter.

Ma macro se nomme :
Private Sub CommandButton6_Click()
Comment faire pour établir le rapport avec ma macro.
Je voudrais avoir le message pendant le déroulement de cette macro.
Cordialement
Guy


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

Avec un simple textbox :

http://cjoint.com/?kbisC77Fr1

AV



Avatar
Pierre Fauconnier
Bonjour

Une autre solution

Application.StatusBar="Patientez svp. Je travaille..."
...
...
Application.StatusBar = False

qui fera apparaître un message dans la barre d'état d'Excel
Ok?


--
Pierre Fauconnier () (Skype:
pierre_fauconnier)
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"Guy72" a écrit dans le message de news:
erd7y%
Bonjour à tous
Pouvez vous me dire quoi faire pour faire apparaître un message d'attente
pendant le déroulement de la macro.
Cordialement
Guy



Avatar
AV
......, mais je ne sais pas comment l'adapter. Ma macro se nomme :
Private Sub CommandButton6_Click()


http://cjoint.com/?kbjWRX7uix

AV

Avatar
Guy72
Ok Merci Alain et JB
Cordialement
Guy


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

Bonjour,

http://cjoint.com/?kbjjWSY8CM

Solution1:Message avec Shape

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

Solution2: Horloge d'attente

Horloge
Dim temps
Dim chrono As Double
Sub majHeure()
Sheets("Attente").Range("a1") = chrono / 86400
chrono = chrono + 1
temps = Now + TimeValue("00:00:1")
Application.OnTime temps, "majHeure"
End Sub

Sub attente3()
chrono = 0
majHeure
'--- Insérer la macro ici
n = 1000
For i = 1 To n
DoEvents
For j = 1 To 100000

Next j
Next i
'---------------------------
Sheets("Attente").Range("a1") = "Fin"
Application.OnTime temps, Procedure:="majHeure", Schedule:úlse
End Sub

Sub auto_close()
On Error Resume Next
Application.OnTime temps, Procedure:="majHeure", Schedule:úlse
End Sub

Solution3: Barre d'attente formulaire

Le formulaire est non modal (showmodalúlse)

Public témoin As Boolean
Sub Attente()
n = 20 ' nb de fichiers à traiter
témoin = True ' pour empêcher fermeture du formulaire
F_BarreAttente.Show
For f = 1 To n
'-- traitement fichier
For a = 1 To 50000000: Next a ' Simulation attente
'--------------
p = p + 1 / n ' calcul du pourcentage
F_BarreAttente.Label1.Width = p * 100
F_BarreAttente.Caption = Format(p, "0%")
DoEvents
Next f
témoin = False
Unload F_BarreAttente
End Sub

Pour empêcher la fermeture du formulaire:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As
Integer)
If témoin Then Cancel = True
End Sub

Solution4: Afficher un pourcentage d'avancement

Sub attente4()
n = 3000
For i = 1 To n
DoEvents
For j = 1 To 100000

Next j
Sheets("Attente2").Range("B1") = i / n
Next i
End Sub

Cordialement JB



Bonjour à tous
Pouvez vous me dire quoi faire pour faire apparaître un message d'attente
pendant le déroulement de la macro.
Cordialement
Guy


Avatar
Guy72
Quand j'intègre ta macro dans la mienne, j'ai le message suivant :
L'élément portant ce nom est introuvable.
Cordialement
Guy

"AV" a écrit dans le message de news:
%
......, mais je ne sais pas comment l'adapter. Ma macro se nomme :
Private Sub CommandButton6_Click()


http://cjoint.com/?kbjWRX7uix

AV




Avatar
Guy72
Salut JB
J'ai pris la solution 4.
J'ai intégré ma macro.
Cela donne ça:
Private Sub CommandButton4_Click()
Sub attente4()
n = 3000
For i = 1 To n
DoEvents
For j = 1 To 100000
Difficulte = 4
Unload Me
Sheets("Attente2").Range("B1") = i / n
Next i
End Sub

Mais ça ne fonctionne pas.
Je suppose qu'il ne faut pas mélanger :
Private Sub CommandButton4_Click() et Sub attente4()

Cordialement
Guy
"JB" a écrit dans le message de news:

Bonjour,

http://cjoint.com/?kbjjWSY8CM

Solution1:Message avec Shape

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

Solution2: Horloge d'attente

Horloge
Dim temps
Dim chrono As Double
Sub majHeure()
Sheets("Attente").Range("a1") = chrono / 86400
chrono = chrono + 1
temps = Now + TimeValue("00:00:1")
Application.OnTime temps, "majHeure"
End Sub

Sub attente3()
chrono = 0
majHeure
'--- Insérer la macro ici
n = 1000
For i = 1 To n
DoEvents
For j = 1 To 100000

Next j
Next i
'---------------------------
Sheets("Attente").Range("a1") = "Fin"
Application.OnTime temps, Procedure:="majHeure", Schedule:úlse
End Sub

Sub auto_close()
On Error Resume Next
Application.OnTime temps, Procedure:="majHeure", Schedule:úlse
End Sub

Solution3: Barre d'attente formulaire

Le formulaire est non modal (showmodalúlse)

Public témoin As Boolean
Sub Attente()
n = 20 ' nb de fichiers à traiter
témoin = True ' pour empêcher fermeture du formulaire
F_BarreAttente.Show
For f = 1 To n
'-- traitement fichier
For a = 1 To 50000000: Next a ' Simulation attente
'--------------
p = p + 1 / n ' calcul du pourcentage
F_BarreAttente.Label1.Width = p * 100
F_BarreAttente.Caption = Format(p, "0%")
DoEvents
Next f
témoin = False
Unload F_BarreAttente
End Sub

Pour empêcher la fermeture du formulaire:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As
Integer)
If témoin Then Cancel = True
End Sub

Solution4: Afficher un pourcentage d'avancement

Sub attente4()
n = 3000
For i = 1 To n
DoEvents
For j = 1 To 100000

Next j
Sheets("Attente2").Range("B1") = i / n
Next i
End Sub

Cordialement JB



Bonjour à tous
Pouvez vous me dire quoi faire pour faire apparaître un message d'attente
pendant le déroulement de la macro.
Cordialement
Guy


Avatar
jps
alain n'étant pas encore rentré des champignons, je réponds à sa place,
peut-être bêtement car je prends le train en marche :
pour utiliser la macro d'AV, il faut bien entendu créer dans ta feuille la
fameuse Shape (la zone de texte en jaune avec "Message d'attente") et une
fois créée, la nommer "Msg"
HTH
jps

"Guy72" a écrit dans le message de news:
%
Quand j'intègre ta macro dans la mienne, j'ai le message suivant :
L'élément portant ce nom est introuvable.
Cordialement
Guy

"AV" a écrit dans le message de news:
%
......, mais je ne sais pas comment l'adapter. Ma macro se nomme :
Private Sub CommandButton6_Click()


http://cjoint.com/?kbjWRX7uix

AV








Avatar
AV
alain n'étant pas encore rentré des champignons,


** Z'étaient sortis y a une quinzaine.....
Se sont recachés depuis et sont pas encore ressortis....

je réponds à sa place,


** C'est une excellente initiative !

peut-être bêtement car je prends le train en marche :
pour utiliser la macro d'AV, il faut bien entendu créer dans ta feuille la
fameuse Shape (la zone de texte en jaune avec "Message d'attente") et une fois
créée, la nommer "Msg"


** C'est tout à fait ça !
(Pour ce faire : sélection de la zone >> aller la nommer dans la barre des noms)

AV

1 2