Ajout calcul auto à une macro

Bonjour,

je voudrai ajouter à mon code existant (voir code ci-dessous), la fonction de calcul automatique du classeur.

Pour résumer, faire comme si j'appuyais sur F9 pour lancer un calcul auto des formules avant le lancement du reste de la macro...

Merci pour votre aide.

Sub attends()

Dim f As Integer
Dim Cellule As Range
Dim Plage_C As Range, Plage_D As Range

Heure_Actuelle = Timer
Randomize
Nb_Seconde = Int((2400 - 1200 + 1) * Rnd + 1200)

Do
    If Not Time = "13:00:00" Then
        If Int(Timer - Heure_Actuelle) Mod Nb_Seconde = 0 Then
            f = FreeFile
            Open "C:\30minutes.txt" For Output As #f
            For Each Cellule In Range("A1:A9")
                Print #f, Cellule.Text
            Next
            Close f
        End If
    Else
        If Int(Timer - Heure_Actuelle) Mod Nb_Seconde = 0 Then
            f = FreeFile
            Open "C:\30minutes.txt" For Output As #f
            For Each Cellule In Range("A1:A9")
                Print #f, Cellule.Text
            Next
            Close f
        End If
        Set Plage_C = Range("L10:O14")
        Set Plage_D = Range("L15:O19")
        Plage_D.Value = Plage_C.Value
        Set Plage_C = Nothing
        Set Plage_D = Nothing
    End If
    DoEvents
Loop

End Sub

Bonjour,

voir l'aide de la méthode calculate

A+

Bonjour,

L'équivalent VBA de F9 c'est : Application.Calculate

Mais tu peux peut-être te contenter d'un : Worksheets("xxx").Calculate 

Merci pour vos réponses super rapide ! Par contre comment l'integrer à mon code existant ? Désolé je suis plus que novice en VBA et je galère pas mal...

Re,

Le code "existant" est relativement bizarre : c'est une boucle perpétuelle sans sortie ...

Toi seul sait à quoi elle sert : je n'en vois pas l'utilité étant donné qu'elle mobilise les ressources sans qu'aucune valeur ne soit modifiée (hormis le temps).

En fait les données de la colonne A:A auront vocation à changer après chaque auto calcul car ce seront des résultats de formule.

Ces formule devront être recalculées et copiées toutes les 20 à 40 mins dans le fichier .txt

Cela est plus clair pour toi comme ça ?

Ma question est donc : Où est il le plus judicieux de placer ton code pour l'auto calcul ?

Au contraire, c'est encore plus obscur, si la colonne est le résultat de calculs,

comment pourrait-elle changer sans changer les données ? Donc sans changement, pourquoi toujours enregistrer la même chose ?

En outre, je n'ai jamais vu de code fonctionnel avec une boucle perpétuelle !!!

Les résultats découlent exclusivement de formules générant des aléatoires (alea entre bornes).

Je récupère ces valeurs aleatoires toutes les 20 à 40 minutes et je les copie sur un txt que j'exploite par la suite...

Il faudrait quand même prévoir une sortie de boucle !

Et s'assurer que le fichier txt n'est pas utilisé par ailleurs.

Places le calculate après le Do

Merci pour tes précisions !

Concernant la sortie de boucle...c'est sur que cela est plus propre/conventionnel mais je souhaite que la macro fonctionne non stop !

Après essais j'ai placé ton code après le Do mais cela ne produit pas l'effet souhaité !
Il me recalcule, non stop et immédiatement, les cellules (et non à la fin du timer de 20 à 40 mins comme je voulais) !

J'ai donc placé la ligne "Application.Calculate" après le 2eme "f = FreeFile" et là il ne recalcule qu'a la fin du timer...cela est-il correcte niveau syntaxe ?

Dans ce cas, il faut calculer avant chaque enregistrement, il faut aussi un calculate dans la première condition.

Pour la clarté du programme je l'aurais placé juste avant chaque f=freefile (mais juste après ça marche aussi).

Rechercher des sujets similaires à "ajout calcul auto macro"