mettre un message lors d'un traitement

patsyl60

XLDnaute Occasionnel
Bonjour à tous,

J'ai réalisé une macro sur un fichier à 4000 lignes. Ma macro prend la derniere ligne et remonte une par une chaque ligne en supprimant les lignes à 0. Le traitement dure environ 2 minutes. Peut-on mettre un message du genre " veuillez patienter, traitement en cours"?

Merci de votre aide.

Patsyl60 :confused:
 

jp14

XLDnaute Barbatruc
Re : mettre un message lors d'un traitement

Bonjour

En mettant la macro dans un usf il est possible d'utiliser un ProgressBar et le faire évoluer avec le nombre de ligne traitée
ProgressBar1.max = 4000
ProgressBar1.min = 0
ProgressBar1.Value = i i étant le numéro de la ligne utilisé

JP
 

patsyl60

XLDnaute Occasionnel
Re : mettre un message lors d'un traitement

Merci à vous deux pour vos réponses. J'ai testé celle de Jean-Marcel, elle fonctionne mais n'est pas assez voyante. Pour celle de JP14, peux tu m'aider car je débute et je ne sais pas faire un usf.

D'avance merci.

Patsyl60 :confused:
 

job75

XLDnaute Barbatruc
Re : mettre un message lors d'un traitement

Bonsoir patsyl, salut JP, Jean-Marcel

4000 lignes ce n'est pas beaucoup et 2 minutes c'est considérable.

Même en supprimant toutes les lignes, l'opération devrait prendre quelques secondes.

Qu'y a-t-il dans votre macro patsyl qui prend tant de temps ?

Pour accélérer une macro :

- utiliser Application.ScreenUpdating = False

- ne pas utiliser de Select

- mettre éventuellement le calcul en manuel s'il y a des formules

A+
 
Dernière édition:

patsyl60

XLDnaute Occasionnel
Re : mettre un message lors d'un traitement

Merci pour ta réponse JOB75 . ci joint ma macro :

Sheets("EDI").Select
Dim J As Long
Dim Plage As Range
Set Plage = Range("G2", Range("G10000").End(xlUp))
For J = Plage.Cells.Count To 1 Step -1
If Plage.Cells(J).Value = "0" Then
Plage.Cells(J).EntireRow.Delete
End If
Next

Merci pour ton aide.

patsyl60
 

James007

XLDnaute Barbatruc
Re : mettre un message lors d'un traitement

... Bonjour à tous ...

Pour compléter ce que te conseilles job75, si tu as des calculs ...
Code:
Application.Calculation = xlmanual
' au début
...
' et à la fin
Application.Calculation = xlautomatic

A+
 

job75

XLDnaute Barbatruc
Re : mettre un message lors d'un traitement

Re patsyl, salut James,

Dites-nous le temps mis par cette macro :

Code:
Sub Supprime()
Dim J As Long
Sheets("EDI").Select
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For J = Range("G10000").End(xlUp).Row To 2 Step -1
If Range("G" & J).Value = "0" Then Rows(J).Delete
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Edit : si vous avez dans le code de la feuille une macro Private Sub Worksheet_Change, il faut en plus que vous rajoutiez dans la macro Supprime :

Application.EnableEvents = False au début

Application.EnableEvents = True à la fin

A+
 
Dernière édition:

patsyl60

XLDnaute Occasionnel
Re : mettre un message lors d'un traitement

Merci pour vos réponses.

Job75 , pour ta macro ( 2 mn 12 pour 4300 lignes traitées), C'est pourquoi je voulais mettre un message d'attente. Si vous avez une idée, je suis preneur.

Merci pour votre aide.

Patsyl60
 

jp14

XLDnaute Barbatruc
Re : mettre un message lors d'un traitement

Bonjour

Ci dessous un fichier avec la procédure de job75.
La procédure est dans USF.
Affichage d' un ProgressBar qui indique la progression de la macro.

Des données sont dans la feuille 2 pour faire des essais.

A tester

JP
 

Pièces jointes

  • Classeur1.zip
    25.2 KB · Affichages: 77
  • Classeur1.zip
    25.2 KB · Affichages: 68
  • Classeur1.zip
    25.2 KB · Affichages: 89

jeanpierre

Nous a quitté
Repose en paix
Re : mettre un message lors d'un traitement

Bonjour patsyl60, jp14, Jean-Marcel, job75, James007,

Ne pas oublier, toutefois, qu'une ProgressBar va encore ralonger le temps d'exécution.

Pourquoi ne pas mettre un petit USF en début de macro avec "Patienter, travail en cours" et qui serait fermé à la sortie de la macro ?

C'est le plus simple et sans aucune gourmandise en terme de temps.

Bonne après-midi et réflexion sur la chose.

Jean-Pierre
 

nolich

XLDnaute Occasionnel
Re : mettre un message lors d'un traitement

Bonjour PatSyl60, Jean-Pierre, Jean-Marcel, job75, James007 et jp14, bonjour à toutes et à tous :)

Je t'assure qu'il y moyen de faire plus rapide en temps d'exécution. Mais pour cela, je te demande, si c'est possible et non confidentiel, de nous envoyer un fichier exemple. Je suis assez intéressé par les optimisations de la vitesse d'exécution de code ;)

@+
 

jeanpierre

Nous a quitté
Repose en paix
Re : mettre un message lors d'un traitement

Re,

Plus courageux que moi Jean-Marcel....

C'est cela la meilleure solution, mais il est vrai qu'avec un disque lombaire à la retourne et un nerf bloqué, pas facile de travailler au clavier... donc à minima.

Jean-Pierre
 

jp14

XLDnaute Barbatruc
Re : mettre un message lors d'un traitement

Bonjour à tous et bon Week end

Si on désire diminuer le temps de traitement il faut utiliser les fonctions d'excel
Exemple
Trier les données au niveau de la colonne G en choisissant le tri pour que les 0 soient en fin de feuille.
Puis sélectionner la zone et la supprimer.

JP
 

nolich

XLDnaute Occasionnel
Re : mettre un message lors d'un traitement

Re le fil, bonjour à toutes et à tous :)

patsyl60 : comment tes colonnes sont-elles classées ? Je vois que tu recherches les 0 de la colonne G (moins le titre), mais est-il possible de classer tes valeurs en fonction de la colonne G puis de revenir à ton classement initial ?

Si oui, je te promets une procédure qui mettra certainement beaucoup moins de 2 mn pour s'exécuter. Sinon, je te promets simplement une procédure un peu plus rapide ;)

@+

EDIT : Oups ! Désolé : BOUM ! JP :)
Je vois qu'on a des idées similaires.
 
Dernière édition:

patsyl60

XLDnaute Occasionnel
Re : mettre un message lors d'un traitement

Merci à tous pour votre aide.

Ci joint une partie de mon fichier. Rien de confidenciel. Il s'agit de commandes clients dont je dois supprimer les lignes à zéro. Sur le fichier, il y a 1500 lignes. Selon le nombre de clients , il peut y avoir entre 4000 et 6000 lignes.

Sur la feuille que j'utilise pour le test, il y a 4243 lignes.

Encore merci pour votre aide.

Patsyl60 :confused:
 

Pièces jointes

  • fichier.zip
    42.1 KB · Affichages: 24
  • fichier.zip
    42.1 KB · Affichages: 25
  • fichier.zip
    42.1 KB · Affichages: 35

Discussions similaires

Statistiques des forums

Discussions
311 715
Messages
2 081 822
Membres
101 822
dernier inscrit
holale