Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Afficher un userform pendant recalcul sommeprod ?

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 !

terence75017

XLDnaute Nouveau
Bonjour, enfin Re !


juste une question, est-il possible d'afficher un userform pendant le recalcule d'une info (avec la formule sommeprod entre autre...)

Car je compte créer un message du style "veuillez patienter" pendant que ma formule recalcul les données.


Encore une fois merci d'avance pour votre réponse !

a++🙂🙂🙂
 
Re : Afficher un userform pendant recalcul sommeprod ?


Apparemment, la macro évenementielle ne s'execute qu'après le calcul et pas en même temps.
De même, si application.calculate se trouve dans la macro, la macro ne continue pas tant que le calcul n'est pas fini, à confirmer...
J'ai aussi le phénomène de clignotement 🙁
 
Re : Afficher un userform pendant recalcul sommeprod ?

Re,

basé sur ce que j'ai dis précédemment, ce code doit marcher (en tout cas chez-moi oui):

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$36" Then
  Application.Calculation = xlCalculationManual
  UserForm1.Show 0
  Application.Calculate
  UserForm1.Hide
  Application.Calculation = xlCalculationAutomatic
End If
End Sub

Pourquoi ce compliquer la vie?🙄
 
Dernière édition:
Re : Afficher un userform pendant recalcul sommeprod ?

Bonjour à tous,

Nickel Skoobi, ça fonctionne parfaitement. j'ai juste rajouté un DoEvents après Userform1.Show 0 pour qu'il redessine la boîte de dialogue.

j'ai juste l'impression qu'il calcule deux fois (moi j'ai fait des tests avec des fonction ALEA alors je vois bien la différence) mais je vois pas comment contourner ça...
 
Re : Afficher un userform pendant recalcul sommeprod ?

Bon, finalement une possibilité pour que le calcul n'ai lieu qu'une fois :

on met la Propriété EnableCalculation de la Feuille à False

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
    UserForm1.Show 0
    DoEvents
    ActiveSheet.EnableCalculation = True
    ActiveSheet.EnableCalculation = False
    UserForm1.Hide
End If
End Sub

Bon, le gros problème est que la feuille ne se recalcule pas en temps normal, seulement si on modifie les cellules prévues dans Worksheet_Change...
 
Re : Afficher un userform pendant recalcul sommeprod ?

je vais tenter de poster un fichier plus léger car le miens fait 18Mo ! c'est une gross base de données !

merci à vous de préoccuper de mon prob !

bonne journée !
 
Re : Afficher un userform pendant recalcul sommeprod ?


Re bonjour,

pour cela il faut éviter que l'évenement devienne récursive comme ceci (ne pas oublié de la rendre à nouveau active à la fin du code) et là sa devrait le faire😉


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
[COLOR=blue][B]Application.EnableEvents = False[/B][/COLOR]
If Target.Address = "$A$36" Then
  Application.Calculation = xlCalculationManual
  UserForm1.Show 0
  DoEvents
  Application.Calculate
  UserForm1.Hide
  Application.Calculation = xlCalculationAutomatic
End If
[B][COLOR=blue]Application.EnableEvents = True[/COLOR][/B]
End Sub
 
Dernière édition:
Re : Afficher un userform pendant recalcul sommeprod ?

Encore moi.....,

Je pensais que la macro événementielle s'exécute avant le calcul, que nini,
ce dernier se produit en premier d'où 2 calculs, rrrrrr 😡.
Donc, pour que ça marche il faut passer le calcul excel en manuel (dans l'option) puis exécuter ceci:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
[COLOR=Black]Application.EnableEvents = False[/COLOR]
If Target.Address = "$A$36" Then
  UserForm1.Show 0
  DoEvents
  Application.Calculate
  UserForm1.Hide
End If
[COLOR=Black]Application.EnableEvents = True[/COLOR]
End Sub
Remettre éventuellement l'option en auto à la fermeture du fichier avec l'évènement Private Sub Workbook_BeforeClose(Cancel As Boolean) ET
l'option en manuel à l'ouverture du fichier avec l'évènement Private Sub Workbook_Open()

Code:
Private Sub Workbook_Open()
Application.Calculation = xlCalculationManual
End Sub

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Calculation = xlCalculationAutomatic
End Sub


Voili voilou.
 
Dernière édition:
- 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

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…