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

Calcul automatique

  • Initiateur de la discussion Initiateur de la discussion spin
  • 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

spin

Guest
Comment bloquer le calcul automatique d'une feuille lors d'un déroulement de procédure VBA (pour empêcher une fonction perso de s'exécuter) ? Le calcul serait forcé à la fin de la procédure.

Mon pb est le suivant (un peu compliqué à expliquer ... désolé):
Une fonction perso est utilisée dans pas mal de cellules d'une feuille de calculs (feuille 1). Dans une autre feuille de calcul (feuille 2) se trouvent certains argument de cette fonction perso. Lorsque je change ces arguments dans la feuille 2, une procédure est lancée automatiquement via Worksheet_Change(ByVal Target As Range). Mais le résultat de cette procédure n'est pas correcte car son bon déroulement est perturbé par la fonction de la feuille 1.
Pour resoudre ce problème, il faudrait donc qu'au lancement de la procédure, la fonction soit bloquée. Je ne veux pas utiliser la propriété
Application.Calculation = xlCalculateManual car le risque est grand de voir l'application se fermer sur cet état, ce qui serait un autre pb plus grave à gerer...

Merci d'avance
Spin
 
Re : Calcul automatique

bonsoir

un ti fichiers exemple bien epure mais avec tout les codes

serait le bien venu pour que l on t aide

ps si tu a mis des mots de passes sur le fichier vire les on gagnera du temps

a+🙂
 
Re : Calcul automatique

Bonsoir Spin, Yojema

tu peux utiliser le code ci dessous :

Code:
Sub TEST()
Dim x As Integer

x = Application.Calculation
Application.Calculation = xlCalculationManual
'ton code
Application.Calculation = x
End Sub

Bonne soirée
@+
 
Re : Calcul automatique

Désolé yojema, je ne peux pas joindre le fichier, même une partie du fichier : beaucoup trop gros. Si je veux envoyer juste un bout, trop de boulot pour l'adapter. Mais je copie tout de même ci dessous les codes correcpondants.

Pierrot93, ça ne marche pas mieux. J'avais déjà essayé cette solution.
En fait, je pense que la fonction est lancée en même temps que la procédure. Et excel se comporte comme si la fonction devenait prioritaire devant la procédure qui n'est plus prise en compte.
Pour reprendre ton code, si je supprime la fonction, le mode de calcul passe en manuel sans pb. Si je laisse la fonction, le mode de calcul n'est pas changé


Codes

Procédure:
Public Sub Worksheet_Change(ByVal Target As Range)
' Macro de nettoyage des infos tribs lors d'un changement de type SLTE
' Laurence BISSON-BUET - Août 06
' Modifiée par Antoine OLIVIERO - Sept 06

On Error GoTo Out
If ProcIndice = 1 Then GoTo Out

If (Not Intersect(Target, Range("D😀")) Is Nothing) And Target.Row > 12 And InStr(1, ActiveCell.Value, "SLTE", 1) <> 0 Then
IndiceProtSheet = 1
If ActiveSheet.ProtectContents = True Then IndiceProtSheet = 0
ActiveSheet.Unprotect
ActiveCell.Offset(0, 1).Select
ActiveCell.ClearContents
If IndiceProtSheet = 0 Then ActiveSheet.Protect
End If

Out:

End Sub




fonction:

Function NbSpare(FITS, DaysRepair, ConfidenceLevel)

Const TempsFIT = 10 ^ 9
Dim lambdat As Variant
Dim n As Integer
Dim X As Integer

lambdat = (24 * FITS * DaysRepair) / TempsFIT

If FITS = 0 Then
NbSpare = 0

Else
If lambdat < 0.001 Then
NbSpare = 1
Else
n = 0
Do While Excel.WorksheetFunction.Poisson(n, lambdat, True) < ConfidenceLevel
n = n + 1
Loop
'
If n = 0 Then
NbSpare = 1
Else
NbSpare = n
End If
End If
End If

Out:

End Function
 
Re : Calcul automatique

Bonjour Spin, Yojema

je sais pas quoi te dire, et sans fichier pour exécution pas à pas, dur dur. Peut être une piste, en arretant les proc évènementielles

Code:
Public Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
'TON CODE
Application.EnableEvents = True

mais sans aucune garantie.

bon courage et bonne journée
@+
 
Re : Calcul automatique

Bonjour,

J'ai exactement le meme probleme que Spin.

Mais la fonction worksheet_calculate ne m'aide pas beaucoup car elle ne dit pas quelle cellule ont été modifiée. Et je ne veux pas refaire le calcul sur l'ensemble de la feuille.

Des idées ?

Je veux bien vous envoyer mon fichier, mais comment ?

Merci pour votre aide
 
Re : Calcul automatique

Bonjour H des steppes

comprends pas trop ton problème, tu dis que c'est le même que spin, hors celui ci avait été résolu...

Si c'est pour calculer une cellule ou une plage de cellule essaye avec le code ci dessous :

Code:
Worksheets("Feuil1").Range("A1").Calculate

Sinon mets peut être ton fichier en pièce jointe, avec le code utilisé.

Bonne journée
@+
 
Re : Calcul automatique

Apres plusieurs recherche, je tombe sur un truc bizzare. Voila le code.

Alors si on selectionne le contenu de la cellule avec la validation, ca ne marche pas. si on tape le meme contenu, ca marche....

Une idée ?
 

Pièces jointes

- 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

Réponses
3
Affichages
216
Réponses
3
Affichages
879
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…