VBA : équivalent de la touche F9 de recalcul dans excel

garth_algar

XLDnaute Junior
Bonjour,
je cherche à créer un échantillon à partir d'une case, dont la valeur est issue d'un calcul aléatoire.
La valeur de la cellule E67 varie à chaque recalcul de la feuille, et je souhaiterai créer une colonne contenant N valeurs de cette case après autant de recalculs.
La cellule N1 contient la valeur de N, et la cellule M8 est la première cellule de la colonne de sortie.
Voici ce que j'ai pour l'instant :

Sub Echantillon3()
Dim n As Long
Dim i As Long
Dim Entree As Range
Dim Sortie As Range
n = ActiveSheet.Range("N1").Value
Set Entree = ActiveSheet.Range("E67")
Set Sortie = ActiveSheet.Range("M8")
For i = 1 To n

Sortie.Offset(i - 1, 0) = Entree.Value
Next i
End Sub

En l'état la macro me donne N fois la même valeur.
Je souhaiterait insérer dans la ligne vide la commande vba équivalente du F9 d'excel pour recalculer.
Une telle commande existe-t-elle ? Si oui, est-il possible de recalculer uniquement le feuillet utilisé ? Chaque cellule de la colonne de sortie va être garder sa première valeur ou être recalculée à chaque itération ?

Merci d'avance pour vos réponses
 

wilfried_42

XLDnaute Barbatruc
Re : VBA : équivalent de la touche F9 de recalcul dans excel

Bonjour

je ne comprends pas, mais Entrée.value te renvoie une valeur
donc, ce n'est pas un recalcul qui modifiera ta valeur
maintenant, si tu veux y placer une formule :
For i = 1 To n
Sortie.Offset(i - 1, 0).formula = Entree.Formula
Next i
Application.calculate ' appres la boucle, ca ne sert à rien à l'interieur
End Sub
 

garth_algar

XLDnaute Junior
Re : VBA : équivalent de la touche F9 de recalcul dans excel

Merci pour ton aide wilfried_42.
Pour l'instant cela ne fonctionne pas, mais c'est peut-être dû à ma fonction aléatoire.
Je viens de m'apercevoir que je peux recalculer une nouvelle valeur en cliquant dans la cellule puis en tapant entrée, alors que la touche F9 n'a aucun effet.
Voici ma fonction aléatoire :

Function BootStrap(plage_carree As Range) As Variant
Dim n As Integer
Dim i As Integer
Dim j As Integer
n = plage_carree.Rows.Count
Do
i = Int(Rnd() * (n - 1) + 1)
j = Int(Rnd() * (n - 1) + 1)
Loop While i + j > n + 1
BootStrap = plage_carree.Cells(i, j)
End Function

Comment puis-je la modifier pour qu'elle donne une nouvelle valeur en faisant F9 ?
 

garth_algar

XLDnaute Junior
Re : VBA : équivalent de la touche F9 de recalcul dans excel

Merci à tous les deux, ma fonction aléatoire me donne bien de nouvelles valeurs.
Cependant ma macro devant créer un échantillon me donne toujours N fois la meme valeur.
Je vais essayer d'être plus clair pour expliquer ce que je veux faire :

Ma cellule E67 est issue de calculs provenant de ma fonction aléatoire. Donc à chaque fois que je fais F9 j'ai une nouvelle valeur en E67.
Le but de ma macro est de
- recalculer toute la feuille afin d'avoir une nouvelle valeur en E67
- ajouter cette nouvelle valeur dans la première cellule de la colonne de sortie
- recalculer à nouveau
- ajouter la nouvelle valeur dans la deuxième cellule
etc
et ceci N fois.

N'hésitez pas à me redemander des explications si ce n'est toujours pas assez clair.
Merci encore pour votre aide.
 

wilfried_42

XLDnaute Barbatruc
Re : VBA : équivalent de la touche F9 de recalcul dans excel

re:

comme je te l'ai dit dans le premier post, je ne comprenais pas ta premier macro
du plus, Application.calculate ne te sera d'aucune utilité si ce n'est que de donner des valeurs fausse, etant donné qu'il relancera un calcul et un nouveau nombre aleatoire sera généré

envoie un bout du fichier, avec un maximum d'explication, ca nous aidera et te permettra d'avoir une reponse plus adaptée à ton besoin

@ te lire
 

pierrejean

XLDnaute Barbatruc
Re : VBA : équivalent de la touche F9 de recalcul dans excel

bonjour garth algar

Salut Wil

La macro test que tu trouveras dans le module echantillon , aboutit bien a des recalculs mais le total en E67 est particulierement stable !!!
 

Pièces jointes

  • exemple chain ladder.zip
    13.6 KB · Affichages: 126

garth_algar

XLDnaute Junior
Re : VBA : équivalent de la touche F9 de recalcul dans excel

C'est bon, j'ai réussi. Merci à tous pour votre aide.
Voici le code, ça servira peut-être à de futurs visiteurs

Sub Echantillon3()
Dim n As Long
Dim i As Long
Dim Entree As Range
Dim Sortie As Range
Dim Valeur As Double
n = ActiveSheet.Range("N1").Value
Set Entree = ActiveSheet.Range("E67")
Set Sortie = ActiveSheet.Range("M8")
For i = 1 To n
Application.Calculate
Valeur = Entree.Value
Sortie.Offset(i - 1, 0).Value = Valeur
Next i
End Sub
 

Discussions similaires

Réponses
7
Affichages
347

Statistiques des forums

Discussions
312 196
Messages
2 086 100
Membres
103 116
dernier inscrit
kutobi87