Bonjour à Tous
Dans le cadre de mes propres recherches j'ai eu besoin de faire patienter l'utilisateur pendant le "Recalcule" d'excel après l'avoir passé sur ordre pour de gros fichier.
Mais comme vous le savez peux être et comme j'ai pu m'en rendre compte dans mes différentes recherches infructueuses il est impossible d'éffectuer une "action" pendant cette phase puisque excel s'arrete pour redonner la main à la machine. Donc impossible de réaliser une progress barre pendant ce temps.
Je me suis finalement tournée vers une option qui fonctionne et que je vous propose, si elle peux rendre service et ou être amélioré, d'ou le vote.
Bien évidement le code qui suit n'est parlant que sur une grande quantité de calcule.
Le Modul Gif qui ouvre la feuille internet, bien évidement vous devez crée cette page html...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Sub Recalcule() 'Appel un autre module qui ouvre une page web contenant un gif animé de barre de chargement Call Gif 'Lance le calcule de la feuille active ou d'une autre feuille ou zone, au choix... ActiveSheet.Calculate End Sub
La feuille html affiche le gif animé et pour le fermer en fin de calcule, le code s'execute sur l'évènement Calculate de la feuille.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Sub Gif() Dim MyIE As InternetExplorer Set MyIE = New InternetExplorer MyIE.Navigate "C:\Dossier_contenant la page\ProgressBar.html" MyIE.AddressBar = False MyIE.Height = 50 MyIE.Width = 280 MyIE.MenuBar = False MyIE.Toolbar = False MyIE.Left = 600 MyIE.Top = 400 MyIE.Resizable = False MyIE.Visible = True End Sub
Je vous donne en piece jointe le petit gif animé, mais bon on en trouve de toute sorte sur le net.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Private Sub Worksheet_Calculate() Dim IE As New InternetExplorer Dim winShell As New ShellWindows Dim maPageHtml As HTMLDocument For Each IE In winShell If IE.LocationURL = "file:///C:\Dossier_contenant la page\ProgressBar.html" Then IE.Quit Set IE = Nothing End If Next IE Set IE = Nothing End Sub
En espérant avoir aider certain...
Partager