Affichage message.

baldron

XLDnaute Nouveau
Bonjours a tous,

voila j'ai une macro qui est assez longue qd elle fonctionne, du coup je me suis dit que ca ferait bien si je pouvais afficher un petit message pendant qu'elle tourne pour dire "Attendez svp..." Comment je fait ca?

Merci.
 

GIBI

XLDnaute Impliqué
Re : Affichage message.

Salut,

si tu veux vraiment un message visible, le plus simple est de lancer ton code à partir d'un userForm et afficher l'avancement dans une zone de texte
ou
tu peux effectivement afficher un userform non modal (UserForm1.Show vbModeless) et afficher dedans un message d'avancement

Bon courage

GIBI
 

baldron

XLDnaute Nouveau
Re : Affichage message.

Oula merci, ca m'a l'air compliquer. En gros ca donne quoi avec le message "Esperem por favor..."

Imaginons que le debut de la macro soit:



Sub ver()

Sheets("verdia").Select

End sub


Est ce que tu pourrais me montrer comment tu applique cela stp?

Merci
 

Evelynetfrancois

XLDnaute Impliqué
Re : Affichage message.

bonjour baldron

voila j'ai une macro qui est assez longue qd elle fonctionne..............

et pourquoi est elle longue a ce point !!?
a tout hazar , ne serait il pas judicieux de supprimer les calculs auto ??
ca peut dans certain cas (je ne connais pas le tient)accelerer considerablement une macro , a voir ...
E et F
 

cbea

XLDnaute Impliqué
Re : Affichage message.

Bonsoir à tous,

Voici un exemple avec l'affichage d'une fenêtre non modale lors d'un traitement.
Dans l'exemple, le traitement est d'afficher un compteur en cellule A2.
 

Pièces jointes

  • Fenêtre Chargement.zip
    14.8 KB · Affichages: 49

GIBI

XLDnaute Impliqué
Re : Affichage message.

salut,

tu peux afficher le suivi dans la fenêtre

Private Sub cmdChargement_Click()
Dim Lig As Long

usfChargement.Show vbModeless
For Lig = 1 To 1000
Range("A2").Value = Lig

usfChargement.Label1 = " en cours " & Lig

DoEvents
Next Lig

Unload usfChargement

MsgBox "Traitement terminé..."
End Sub


>remarque : le Doevents ne parait pas nécessaire

Pour éviter de ralentir la macro tu peux actualiser l'affichage moins souvent

if a > 100 then
usfChargement.Label1 = " en cours " & Lig
a = 1
else
a=a+1
end if


ou avec un délai


TimeFin = DateAdd("n", 10, Time) 'n= minute s = seconde

For Lig = 1 To 1000
Range("A2").Value = Lig

If TimeFin <= Time Then
usfChargement.Label1 = " en cours " & Lig
TimeFin = DateAdd("n", 10, Time) 'n= minute
End If
Next Lig







suivre
 
Dernière édition:

Spitnolan08

XLDnaute Barbatruc
Re : Affichage message.

Bonjour le fil,

Suite à la lecture de la proposition de cbea :) qui m'a inspiré pour un autre fil :
Une autre méthode ici le code se trouve dans le module 2 si je ne me trompe pas.

Cordialement

Edit : Je viens de Changer de fichier dans le fil indiqué à cause erreur de chargement DLL.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 754
Messages
2 091 685
Membres
105 048
dernier inscrit
Nicoeum