Mise à jour de l'affichage Excel

  • Initiateur de la discussion Initiateur de la discussion Sho7
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

Sho7

Guest
Bonjour,

J'ai un petit souchi au niveau de l'exécution d'une macro. Il se trouve que j'ai besoin de la mise à jour de l'affichage durant l'exécution. Seulement tant que je ne passe pas à autre chose (utilisation d'un autre programme) pendant que la macro tourne, tout va bien. Par contre, si j'utilise une autre application et reviens à la feuille Excel, je n'ai plus d'affichage et je dois attendre la fin d'exécution de la macro pour avoir de nouveau l'affichage.

La macro est basée sur des boucles toutes bêtes, je peux me permettre de mettre une temporisation si elles sont susceptibles de résoudre le problème.

Merki d'avance...

Sho7
 
Re : Mise à jour de l'affichage Excel

Bonjour,

Pas facile de te dire sans voir le ou les codes utilisés.
Essaie toutefois de voir si cette instruction n'est pas dans la macro :

Application.ScreenUpdating = False -> pour ne pas rafraichir l'écran lors de l'exécution de la macro. L'instruction FALSE doit passer à TRUE pour rafraichir à nouveau.

Ceci permet notamment d'accélerer l'exécution d'une macro.

Bon ap
 
Re : Mise à jour de l'affichage Excel

Oki doki, voici donc le code... En fait, comme je l'ai expliqué, tout se passe comme je le souhaite tant que je ne fais pas autre chose (ie que je laisse la fenêtre d'Excel active).

Private Sub Commandbutton1_Click()

chemin = Sheets("feuil1").Range("J3").Formula
fichier = chemin & "Work\temp.txt"

test = True
i = 3

While test

If Sheets("feuil1").Range("G" & i).Formula <> "" Then
Sheets("feuil1").Range("A" & i).Formula = ""
Sheets("feuil1").Range("A" & i + 1).Formula = ""
Sheets("feuil1").Range("B" & i).Formula = ""
Sheets("feuil1").Range("C" & i).Formula = ""
Sheets("feuil1").Range("D" & i).Formula = ""
Sheets("feuil1").Range("E" & i).Formula = ""
Sheets("feuil1").Range("F" & i).Formula = ""
Sheets("feuil1").Range("G" & i).Formula = ""

i = i + 1

Else
test = False
End If

Wend


Sheets("feuil1").Range("J10").Formula = ""
Sheets("feuil1").Range("J11").Formula = ""


fin = Timer

While Dir(fichier) = ""

Wend


k = 3

C_old = 0
eps1max_old = 0
eps1maxaxe_old = 0
angle_old = 0

While Dir(chemin & "Work\file.bat") <> ""

Open fichier For Input As #1

While Not EOF(1)

Line Input #1, Texte

If Mid(Texte, 1, 14) = "*SET,C ," Then
C = Val(Mid(Texte, 16, 20))
End If

If Mid(Texte, 1, 15) = "*SET,EPS_1_MAX," Then
eps1max = Val(Mid(Texte, 18, 20))
End If

If Mid(Texte, 1, 19) = "*SET,EPS_1_MAX_AXE," Then
eps1maxaxe = Val(Mid(Texte, 21, 20))
End If

If Mid(Texte, 1, 10) = "*SET,ANGLE" Then
Angle = Val(Mid(Texte, 17, 20))
End If

If Mid(Texte, 1, 10) = "*SET,N_PAS" Then
n_pas = Val(Mid(Texte, 17, 20))
End If

If Mid(Texte, 1, 14) = "*SET,PAS ," Then
pas = Val(Mid(Texte, 17, 20))
End If

Wend

Close #1

If C <> C_old Then

debut = fin
fin = Timer

Sheets("feuil1").Range("A" & k + 1).Value = Angle
Sheets("feuil1").Range("B" & k).Value = pas
Sheets("feuil1").Range("C" & k).Value = C
Sheets("feuil1").Range("D" & k).Value = eps1max
Sheets("feuil1").Range("E" & k).Value = eps1maxaxe

If n_pas = 999999 Then
Sheets("feuil1").Range("F" & k).Formula = "Planté !"
End If

Sheets("feuil1").Range("G" & k).Value = fin - debut

k = k + 1

End If

C_old = C

Wend

debut = fin
fin = Timer
Sheets("feuil1").Range("G" & k).Value = fin - debut






test = True
debut = Timer

While test
fin = Timer
If fin - debut > 5 Then
test = False
End If
Wend




Open chemin & "Output\result.txt" For Input As #1

Line Input #1, Texte

For i = 1 To Len(Texte)

If Mid(Texte, i, 6) = "N.m/mm" Then

Texte2 = Mid(Texte, i - 10, 8)
Sheets("feuil1").Range("J11").Formula = Texte2

End If

If Mid(Texte, i, 1) = ":" Then

Texte3 = Mid(Texte, 1, i - 2)
Sheets("feuil1").Range("J10").Formula = Texte3

End If

Next i

Close #1

End Sub​
 
Re : Mise à jour de l'affichage Excel

Bonjour
c'est à mon avis plus lié à Windows qu'à Excel : Windows ne raffraichit pas toujours l'affichage si l'appli n'est pas en mode interactif à ce moment et qu'un code tourne.
Cela s'observe sur d'autres applis qu'Excel donc je crains qu'il n'y ait pas de solution miracle.
 
Re : Mise à jour de l'affichage Excel

Beuh ben j'ai fini par répondre tout seul à ma question.

Le vrai problème est que la macro monopolise l'exécution d'Excel et que dès lors que je passe à autre chose (comme faire un démineur...) je perds l'affichage Excel, la feuille ne répond plus avant la fin de l'exécution.

Pour arranger les choses j'ai mis une temporisation :

Wait (Now + timevalue("0:00:01"))

Une seconde qui me permet de récupérer la main quand je le souhaite.

Voilou... Merci à toi Dan pour ton début de soutien.
 
Re : Mise à jour de l'affichage Excel

J'ai effectivement croisé la commande pendant que je cherchais une solution et essayé de la placer. Mais elle m'arrête ma macro violamment...

Le problème et que j'ai un process de calcul qui tourne en batch et une première macro chargée de lancer ce batch.

La macro que je présente dans ce topic ne me sert qu'à contrôler l'évolution du calcul dans un fichier texte. Si DoEvents fait ce qu'elle est sensée faire, je crois qu'il faut que toutes le taches existantes sous windows s'arrêtent pour que la macro reparte non ?
 
Re : Mise à jour de l'affichage Excel

Héhé autant pour moi, le jeune impatient que je suis m'a amené à cette conclusion parcequ'une des étapes de calcul était un peu longue... Merci beaucoup jmps.

A la prochaine 🙂

Sho7
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour