rafraichir auto userform (affiché ou non) sur modif cellules feuil1

Phil39

XLDnaute Occasionnel
Bonjour,

Je dispose d'un userform qui m'affiche des données issues de la feuil1 (résultat d'un sumproduct, etc...) dans des textbox.
Les contenus des TextBox sont définis lors de l'appel de la sub userform_initialize() :

Textbox1.value=sumproduct....

userform.show 0

J'ai besoin de cela car je déclenche un tri (cacher les lignes ne correspondant pas à certains critères) sur Feuil1 en double cliquant sur les textBox contenant les résultats.

Mon souci est le suivant :

lorsque je travaille sur la feuil1, certaines cellules changent de valeur et donc influent sur le contenu des textbox du userform.
Je suis obligé de fermer le userform et de le réafficher pour voir les modifications effectuées.
C'est tout à fait normal allez-vous me dire...

Ma question est la suivante :
existe-t-il un moyen de rafraichir le userform (donc le userform_initialize) de façon dynamique lorsqu'il est ouvert (que ce soit en show ou en hide).

Le volume de données à traiter étant relativement limité, pas plus de 5000 lignes, l'idéal serait un rafraichissement se déclenchant pour toutes actions sur les cellules de l'application.


question subsidiaire si vous avez le temps : pour faire mes masquages de lignes, j'utilise l'habituelle Rows(i).Hidden = True....
Actuellement, je passe par un .Hidden=false avant de refaire le tri d'après, ce qui donne un effet de "flux-reflux" visible désagréable à l'oeil.
J'ai vu quelque part qu'il était possible de partir d'un masquage déjà à l'écran et de demander à Excel de refaire toutes les lignes pour afficher le nouveau résultat mais impossible de me souvenir où...

Merci d'avance
 
Dernière édition:

mfb

XLDnaute Occasionnel
Re : rafraichir auto userform (affiché ou non) sur modif cellules feuil1

Bonjour à Tous.
Phil,
Si j'ai bien pigé ton besoin,

Pour éviter ton flux et reflux insert la ligne ci dessous avant Rows Hidden ....

Application.ScreenUpdating = False

et la même avec True en fin de Rows.
Je ne suis pas expert mais je me sert de ce "truc" et ça marche alors pourquoi pas chez toi.

A+
Daniel
 

Papou-net

XLDnaute Barbatruc
Re : rafraichir auto userform (affiché ou non) sur modif cellules feuil1

Bonjour phil39,

Pour ta question subsidiaire, mfb y a répondu.

En ce qui concerne le 1er point, je te conseille la méthode suivante :

Tu effectues tes calculs dans des cellules (cachées de préférence) sur ta feuille de calcul, puis tu affectes chaque cellule à chaque TextBox de ton formulaire au moyen de la propriété ControlSource.

Cette méthode présente le double avantage de mettre tes TextBox à jour même si le formulaire n'est pas ouvert, et sauvegarde les données lors de la fermeture du classeur.

Espérant avoir aidé.

Cordialement.
 

Phil39

XLDnaute Occasionnel
Re : rafraichir auto userform (affiché ou non) sur modif cellules feuil1

Bonjour phil39,

Pour ta question subsidiaire, mfb y a répondu.

En ce qui concerne le 1er point, je te conseille la méthode suivante :

Tu effectues tes calculs dans des cellules (cachées de préférence) sur ta feuille de calcul, puis tu affectes chaque cellule à chaque TextBox de ton formulaire au moyen de la propriété ControlSource.

Cette méthode présente le double avantage de mettre tes TextBox à jour même si le formulaire n'est pas ouvert, et sauvegarde les données lors de la fermeture du classeur.

Espérant avoir aidé.

Cordialement.

Bonjour,

Merci du conseil mais j'ai un soucis avec cela :
toutes les valeurs contenues dans le userform sont des nb.si ou des sumproduct certains traitant jusqu'à 6 conditions.
J'ai constaté un gros ralentissement de l'exécution de mon programme lorsque je met ces calculs sur une feuil4 (hidden ou pas) car excel recalcule en temps réel toutes les feuilles.
Dans mon programme j'ai un userform de saisie qui me met aprés validation des valeurs à la suite dans ma feuille 1 et qui me permet d'imprimer un bordereau dans la foulée.
Le traitement est quasi instantané sans ma fameuse feuille 4 contenant une dizaine de nb.si et sumproduct. Avec la feuille 4, j'ai quasiment 20 secondes de latence pour le même boulot.

Cela dit, on vient de me parler de :
Application.Calculation = xlCalculationManual qui éviterait le recalcul complet.

Avec ce code pour revenir à la normal :

Application.Calculation = xlCalculationAutomatic

A tester...
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : rafraichir auto userform (affiché ou non) sur modif cellules feuil1

Rebonjour phil39,

Alors dans ce cas, la réponse est en partie dans ta question : pour mettre à jour dynamiquement ton formulaire, tu peux passer par la macro événementielle

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

dans laquelle tu testes si les cellules modifiées ont une incidence, auquel cas tu mets tes TextBox à jour.

Si celà ne convient pas, peux-tu mettre une version de ton fichier sans données confidentielles sur le fil ?

Cordialement.
 

Phil39

XLDnaute Occasionnel
Re : rafraichir auto userform (affiché ou non) sur modif cellules feuil1

Rebonjour phil39,

Alors dans ce cas, la réponse est en partie dans ta question : pour mettre à jour dynamiquement ton formulaire, tu peux passer par la macro événementielle

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

dans laquelle tu testes si les cellules modifiées ont une incidence, auquel cas tu mets tes TextBox à jour.

Si celà ne convient pas, peux-tu mettre une version de ton fichier sans données confidentielles sur le fil ?

Cordialement.

re,

Je vais tenté de refaire un petit fichier de demo, c'est une vraie usine à gaz mon truc... :)

pour le "Application.ScreenUpdating = False / True" c'était bien cela mais impossible de m'en souvenir...

Merci !
 

Discussions similaires

Statistiques des forums

Discussions
312 677
Messages
2 090 819
Membres
104 676
dernier inscrit
akram1619