Afficher l'avancement du "calcul" d'une macro

Bonjour,

je possède un fichier pour un jeu online (pour ceux et celles qui me découvrent )

Ce fichier peut s'afficher en français, anglais ou espagnol, via une macro. A ce jour, au vu des données à traduire, la macro mouline 2 bonnes minutes. Est il possible de faire apparaitre l'avancement de ce calcul?

Je pensais à afficher une barre qui va de 0 à 100%... mais je n'y connais toujours rien en macro, et ne sais même pas si ma demande est faisable! Pour moi, ce n'est pas gênant, mais comme ce fichier est actuellement utilisé par environ 5000 joueurs, de tout âge, je pensais que ça pourrait être utile, afin de voir si c'est planté ou si ca mouline toujours...

Si c'est faisable, voila la macro utilisée :

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Dim LangueChoisie As String, Nomfeuille As String

Dim AddDest

Dim Languecolonne As Byte, PosSepar As Byte

Dim Nomcellule As String

Application.ScreenUpdating = False

If Target.Address = Range("Language").Address Then

Nomfeuille = ActiveSheet.Name

LangueChoisie = Target.Value

With Sheets("Textes")

.Select

.Range("IV1").Select

End With

Do

Selection.End(xlToLeft).Select

Loop Until ActiveCell.Value = LangueChoisie Or ActiveCell.Column = 1

Languecolonne = ActiveCell.Column

If Languecolonne = 1 Then

Selection.End(xlToRight).Select

Languecolonne = Languecolonne - ActiveSheet.Column

End If

ActiveSheet.Range("ColonneAdresse").Select

Languecolonne = Languecolonne - ActiveCell.Column

ActiveCell.Offset(1, 0).Select

Do While ActiveCell.Value <> ""

With ActiveCell

AddDest = .Value

PosSepar = WorksheetFunction.Search("!", AddDest, 1)

Nomfeuille = Left(AddDest, PosSepar - 1)

Nomcellule = Right(AddDest, Len(AddDest) - PosSepar)

If .Offset(0, Languecolonne).MergeCells Then

.Offset(0, Languecolonne)(1).Select

Selection.Copy

Else

.Offset(0, Languecolonne).Copy

End If

On Error GoTo Erreur

Application.EnableEvents = False

With Sheets(Nomfeuille)

.Select

.Range(Nomcellule).Select

.Paste

End With

Application.EnableEvents = True

Sheets("Textes").Select

If IsEmpty(.Offset(1, 0)) Then Application.CutCopyMode = False: Sheets("notice").Select: Exit Sub

.Offset(1, 0).Select

End With

Loop

With Sheets(Nomfeuille)

.Select

.Range("Language").Activate

End With

Else

End If

Application.CutCopyMode = False

Exit Sub

Erreur:

MsgBox "Erreur de procédure"

Application.EnableEvents = True

End Sub

Merci pour vos réponses!

Gigi

Re bonsoir,

pas de réponse : personne ne peut m'aider, ou est ce tout simplement impossible?

Merci!

Re,

le plus dur, dans un code, c'est de déterminer le temps de déroulement d'icelui...

Donc, pour une barre de progression, il faut connaître le temps d'éxécution, sachant que cette barre va ralentir le code...

si tu as des boucles bien structurées, c'est à dire que si tu sais que la première boucle prend 25% du temps, la 2 en prend 5 et ainsi de suite, cela serait envisageable.....

Maintenant, mettre une barre de progression qui affiche 100% au bout de 20 secondes, alors que ton code fait 2 minutes........

Tu devines la perplexité????

ouais, je me doutais que ce serait galère...

Merci quand même pour ta réponse!!

topic à cloturer, soire à supprimer...

Bonne soirée, cher fofo!!

RE-,

clôture pas comme ça....

Tu peux mettre des jalons dans tes boucles, et écrire le temps de chaque jalon dans une cellule...

Ensuite, un petit calcul....

Faut pas désespérer....

oui, je pourrais, mais avec le temps, il y aura plus de données à traiter, donc les jalons à revoir... Je laisse comme ça pour le moment : les joueurs ont un message qui apparait des le lancement de la macro indiquant le temps de "moulinage" de celle ci.

Re-,

et bien, facile, si tu as le temps d'exécution de ta macro

ben grosso modo c'est entre 1min30 et 1min50

Bonjour,

ci-joint un fichier exemple de progress bar

J'ai mis la durée à 120 secondes, tu peux l'adapter

https://www.excel-pratique.com/~files/doc/gBnu1Exemple_barre_de_progression.zip

salut,

oui, quelque chose comme cela (si c'est adapable à ma macro actuelle) serait sympa...

Si tu veux bien m'aider à l'intégrer, merci d'avance!

Gigi

Re-,

je voudrais bien, mais sans le fichier.....pas facile

De plus, en regardant ton code, on pourrait aisément le simplifier.....

Mais il faudrait comprendre le pourquoi du comment, donc, avoir le fichier

10book4.xlsx (14.11 Ko)

je ne peux malheureusement pas le mettre ici : il fait plus de 2Mo. Par contre, son envoi par email est possible...

Re-,

je t'ai envoyé mon adresse mail via Message privé

PS, je mettrai le résultat, si je le trouve, bien sûr, sur le site, afin que tout le monde puisse en profiter

pas de problème!

Juste un avis sans m'être penché sur le code.

J'ai déjà fait du multilingue et le changement de langue était quasi instantané.

Ca me paraît vraiment long comme temps de traitement, personnellment je chercherais d'abord à le réduire.

Salut Soft,

Le réduire, certes, mais vu comment est fait le fichier, je crains que l'on puisse pas gagner grand chose... NAD-DAN s'est déja penché sur le sujet... mais si tu t'y connais en macro, et que tu as du temps pour y jeter un oeil, je peux également t'envoyer le fichier par email...

Re,

Soft, pas de souci, mais avec 22 onglets à transcrire, avec des emplacements différents sur chaque onglet, des cellules fusionnées(GRRRRRRR), un peu moins simple, mais tout conseil est le bienvenu

PS :Gigi, j'y travaille, quelques point à règler, mais, je pense pas avant demain

oui félix, les cellules fusionnées... tu n'es pas le 1er à pester contre ça... mais la mise en page était comme ça avant le passage en multi langue et reprendre toute la mise en page, c'est plus que long! (quand tu vois que ca fait plus d'un an que ce fichier vit...)

Y a pas urgence Felix, t'inquiètes pas!

Re-

question bêêêêêête, si je défusionnne, c'est le souk dans la ferme?

Rechercher des sujets similaires à "afficher avancement calcul macro"