Empêcher un arrêt dans la procédure lors affichage userform

Gysmo

XLDnaute Junior
Bonjour,

J'ai un petit problème sans doute niaiseux mais ....Dans mon code vba de recherche je veux afficher un userform "recherche en cours" mais quand je l'afficher ma procédure arrête...je veux qu'il affiche et continuer la recherche....Est-ce qu'il y a une propriété dans userform pour cela ????

merci
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Empêcher un arrêt dans la procédure lors affichage userform

Bonjour Gysmo,

deux manière de procéder:

au début de la recherche:
Application.StatusBar = "Recherche en cours Veuillez patienter"
et à la fin de la recherche
Application.StatusBar = False


ou alors:
ouvrir l'usf: (avec un bouton sur celui-ci qui aura pour fonction de déclencher la procédure de recherche)
éventuellement mettre un label "Veuillez patienter pendant la recherche"

à+
Philippe

Édit: Bonjour Pierrot
 
Dernière édition:

Gysmo

XLDnaute Junior
Re : Empêcher un arrêt dans la procédure lors affichage userform

application.status bar ne me satisfait pas car mon but est de cacher le recherche et le tri avant l'affichage final....voici mon code :
Private Sub CommandButton5_Click()
Dim numéro As Integer
Dim celluletrouvee As Range
Dim ligne As Integer
Dim col As Integer


ligne = 3
motachercher = TextBox1.Value
motachercher2 = TextBox3.Value


If TextBox4.Value = "" Then an = ""
an = TextBox4.Value
Sheets("feuil3").Range("h1") = an

If UserForm1.CheckBox1.Value = True Then GoTo exact

Sheets("feuil2").Activate
For n = 1 To Sheets("feuil2").Range("A65536").End(xlUp).Row

If InStr(1, Cells(n, 2).Value, motachercher, vbTextCompare) <> 0 And InStr(1, Cells(n, 2).Value, motachercher2, vbTextCompare) <> 0 Then


If Sheets("feuil2").Range("f" & n) = Sheets("feuil3").Range("h1") Then GoTo suite
If Sheets("feuil3").Range("h1") = "" Then GoTo suite
GoTo prochain

suite:
Sheets("feuil3").Range("A" & ligne) = Sheets("feuil2").Range("E" & n)
Sheets("feuil3").Range("B" & ligne) = Sheets("feuil2").Range("b" & n)
Sheets("feuil3").Range("c" & ligne) = Sheets("feuil2").Range("A" & n)
Sheets("feuil3").Range("d" & ligne) = Sheets("feuil2").Range("C" & n)
Sheets("feuil3").Range("e" & ligne) = Sheets("feuil2").Range("D" & n)
Sheets("feuil3").Range("f" & ligne) = Sheets("feuil2").Range("g" & n)
Sheets("feuil3").Range("g" & ligne) = Sheets("feuil2").Range("h" & n)


ligne = ligne + 1
End If

prochain:

Next n

GoTo fin


exact:

ligne = 3
motachercher = TextBox1.Value
motachercher2 = TextBox3.Value


Sheets("feuil2").Select

For n = 1 To Sheets("feuil2").Range("A65536").End(xlUp).Row


If DeuxMots(Cells(n, 2).Value, TextBox1.Value, TextBox3.Value) Then


If Sheets("feuil2").Range("f" & n) = Sheets("feuil3").Range("h1") Then GoTo suite2
If Sheets("feuil3").Range("h1") = "" Then GoTo suite2
GoTo prochain2

suite2:

Sheets("feuil3").Range("A" & ligne) = Sheets("feuil2").Range("E" & n)
Sheets("feuil3").Range("B" & ligne) = Sheets("feuil2").Range("b" & n)
Sheets("feuil3").Range("c" & ligne) = Sheets("feuil2").Range("A" & n)
Sheets("feuil3").Range("d" & ligne) = Sheets("feuil2").Range("C" & n)
Sheets("feuil3").Range("e" & ligne) = Sheets("feuil2").Range("D" & n)
Sheets("feuil3").Range("f" & ligne) = Sheets("feuil2").Range("g" & n)
Sheets("feuil3").Range("g" & ligne) = Sheets("feuil2").Range("h" & n)

ligne = ligne + 1

End If

prochain2:

Next n

fin:




Sheets("feuil3").Activate
Range("A2:G50000").Select

Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

For c = 4 To 1000 Step 2

Range("a" & c, "g" & c).Select

Selection.Interior.ColorIndex = 15
Next c
Sheets("feuil3").Select
Range("A3").Select
Unload UserForm1
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Empêcher un arrêt dans la procédure lors affichage userform

Re,

à mettre au début de la procédure de recherche

Private Sub CommandButton5_Click()
Application.ScreenUpdating = False



et en fin de procédure:
Application.ScreenUpdating = True
End Sub


à+
Philippe

Edit:
ton code présenté tel quel ci-dessus ne me donne pas envie de le lire et le comprendre
il aurait été préférable de joindre ton fichier
 

destmobil

XLDnaute Nouveau
Re : Empêcher un arrêt dans la procédure lors affichage userform

La solution qu'attend notre ami Gysmo est la suivante :

'Tu affiches ton userform comme suit
UserForm1.show false

La macro l'affichera et continuera à exécuter le code.

Dans le reste du code, tu peux modifier le contenu des label et autres textbox du userform que tu as déjà afficher.

Si ta macro est longue à éxécuter ou parfois gourmande en ressources machine, il se peut que l'affichage se bloque.
La statusbar se fait bloquer de la même manière.

A ce moment là, tu écrit DoEvents juste après la modif de tes labels, textbox, ou statusbar...

Et là, tu sauras toujours où en est ta macro :eek:)

T'aimes bien ?
 

jerico

XLDnaute Nouveau
Re : Empêcher un arrêt dans la procédure lors affichage userform

Bonjour tout le monde,

Je viens d'essayer ta solution destmobil. Le UserForm apparait pendant que la procédure de ma macro s'effectuer mais le Userform est tout blanc et le Label1 "Veuillez patientez" n'apparait pas...
J'ai pas bien compris comment fonctionne le DoEvents. Ou doive l'insérer?

Merci bonne fin de journée
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 173
dernier inscrit
Cerba95