[Résolu] Qques infos sur l'évènement Worksheet_Calculate

Jenovae

XLDnaute Nouveau
Bonjour le forum,

Dans un fichier Excel avec de nombreuse macro, j'utilise "Worksheet_Calculate" sur plusieurs feuilles.
J'aurais aimé avoir quelques précisions sur l'utilisation de cet évènement :

- Sur la feuille nommée "Feuille de Saisie", pour faire référence à une cellule, dois-je me référencer à chaque fois à la feuille? Je m'explique :
Code:
Private Sub Worksheet_Calculate()
    
    With Sheets("Feuille de Saisie").Range("K7") .......

' ou simplement

    With Range("K7") ........
    
End sub
En effet sachant que cet évènement "Worksheet_Calculate" est utilisé sur plusieurs feuilles différentes, et qui ne sont pas forcément les feuilles actives, Excel fait-il directement le lien ou doit-on le lui indiquer?

- D'autre part, lorsque j'ouvre un autre classeur Excel en plus de celui contenant de nombreux évènements "Worksheet_Calculate", si je modifie une cellule dans ce nouveau classeur Excel il me lance les "Worksheet_Calculate" de l'autre classeur....
Est-ce normal? Comment empêcher cela?

Merci d'avance pour votre aide, si vous avez besoin de précisions sur ce que je raconte n'hésitez pas :)
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Qques infos sur l'évènement Worksheet_Calculate

Bonjour à tous

Toutes ces TextBox, Combobox sont aussi soumises à un évènement de type "ComboBox_Change".
Comment éviter que ces évènements n'aient lieu lors du remplissage de mes TextBox, ComboBox ... durant le UserForm_initialize ??
regarde peut être ceci :
Code:
Option Explicit
Dim b As Boolean
Private Sub TextBox1_Change()
If b Then Exit Sub
End Sub
Private Sub UserForm_Initialize()
b = True
'ton code
b = False
End Sub

bonne soirée
@+
 
G

Guest

Guest
Re : Qques infos sur l'évènement Worksheet_Calculate

bonjour Jenovae

Pierrot:)

Normalement la boucle suivante, attends la fin du recalcul du classeur tout en rendant la main au système d'exploitation pour d'autres tâches(ce qui permet de travailler sur ton classeur/userForm en attendant)


Code:
'Attends la fin du re-calcul du classeur
Do While Not Application.CalculationState = xlDone
    'tout en repassant la main au système d'exploitation pour d'autres tâches
     DoEvents
Loop

Peut-être que dans ton cas, il ne faut pas redonner la main au system et tout bloquer en attendant la fin du re-calcul. Alors il faut enlever 'DoEvents' dans la boucle(A faire avec precaution)

Il n'y a que toi qui puisses savoir où mettre cette boucle, à quels endroits sont lancés les recalculs du classeur, par exemple après avoir modifié par macro une ou plusieurs cellules.

Si tu n'as pas toujours besoin du re-calcul du classeur tu peux placer aux endroits idoines des:

Code:
'suspend le recalcul automatique
Application.Calculation = xlCalculationManual
'.............
'..............
'reprend le calcul automatique
Application.Calculation = xlCalculationAutomatic

Je ne sais pas quoi te dire de plus, n'ayant pas le classeur au bouts des doigts ni sous les yeux.

A+
 

Jenovae

XLDnaute Nouveau
Re : Qques infos sur l'évènement Worksheet_Calculate

Bonjour à tous, Pierrot93, Hasco,

Bon eh bien il semble que les deux derniers problèmes que je rencontrais soient maintenant résolus.

Concernant l'initialisation de mon Userform, plutôt que la méthode de Pierrot93 j'ai préféré modifier la plupart des évènements "_Change" en "_AfterUpdate". C'était d'une part plus rapide pour moi d'effectuer cette modification, et ça permet aussi d'optimiser le fonctionnement de mon classeur (par exemple lorsqu'on entre "1000" dans une textbox, la macro n'est pas lancée 4 fois lorsque le "1", puis les trois "0" sont inscrits mais uniquement à la fin de la saisie).

Et merci Hasco, ta solution fonctionnait dès le début en fait, mais je n'avais juste pas placé les 3 petites lignes de code au bon endroit dans la macro... Deux ligne en dessous et c'est parfait :)


J'avais juste une dernière question mais qui n'est pas forcément importante.... Lorsque j'écris dans une Textbox, et que j'appuie sur "Entrée" ou sur "Tab", puis-je désigner quelle est la TextBox suivante qui sera selectionnée?

Merci encore pour votre aide, je passerai le fil en "résolu" sous peu si je n'ai vraiment plus rien à vous demander.
Bonne journée !


EDIT : J'ai trouvé, il faut juste modifier la valeur de la propriété "TabIndex" de mes objets.
 
Dernière édition:
G

Guest

Guest
Re : Qques infos sur l'évènement Worksheet_Calculate

Bonjour,

Lorsque j'écris dans une Textbox, et que j'appuie sur "Entrée" ou sur "Tab", puis-je désigner quelle est la TextBox suivante qui sera selectionnée?

Pour changer facilement le TAbIndex des objets de userForm tu as un utilitaire dans l'éditeur VBE: menu Affichage/Ordre de tabulation.

A+
 

Discussions similaires

Réponses
3
Affichages
477

Membres actuellement en ligne

Statistiques des forums

Discussions
312 581
Messages
2 089 916
Membres
104 306
dernier inscrit
Bouhlal