VBA x fois la fonction et mise sur plage de cells
bonjour à tous
Comment faire pour qu'à partir du résultat de la cellule de calcul B1 on obtienne x fois le calcul (ici 5 fois) pour les écrire dans une plage de cellules définie par la cellule G1, la raz de la plage de cellules se fait si la cell B1 donne 0
Private Sub Worksheet_Calculate()
Randomize
If Range("$B$1") >= 1 Then
Range("A3") = Int(9 * Rnd + 1)<=== à modifier
End If
End Sub
plage A1:A13---------------------------Cellule B1----------cellule E1----------Cellule G1
- ----5<---------------Contient----->= Si(E1=0;0;E1)--------->5-------------->A1:A13
- ----9<-------------- Contient------------->5
- ----4<-------------- Contient
- ----6<-------------- Contient
- ----6<---------------Contient
Bonjour.
Avoir si ce code te conviens. Les nombres aléatoires vont de 1 à 9. Je ne sais pas comment tu veux gérer ça.
Les macro se met dans la feuille à chaque calcul de la feuille.
Private Sub Worksheet_Calculate()
Dim res As Integer
Dim pl As String
Dim i As Integer
pl = Range("G1")
res = Range("B1")
If Range("B1") = 0 Then
Range(pl).ClearContents
Else
Range(pl).ClearContents
For i = 1 To res
Cells(i, 1) = Int((9 * Rnd) + 1)
Next i
End If
End Sub
Bsr Passe passe
Merci de ton aide c'est presque parfait ca fonctonne dans un sens utile et nous permet d'avancer dans nos simulations
En fait ta procédure n'integre pas la plage définie en G1 mais définie la colonne entiére
pour exemple si 35 et (A1:A10) on obtient 35 cellules remplies et la raz sur A1 :A10
je te donne le fichier prêt pour simuler avec ta formule en place
A+++
Merci de ton aide
JB
Re
Tel que j'ai compris (mais pas forcément tel que tu attends):
Private Sub Worksheet_Calculate()
Dim res As Integer, i As Integer
Dim pl0 As String, pl1 As String, pl2 As String
pl0 = Range("A1").End(xlDown).Address
pl = Range("A1:" & pl0).Address
Range("G1") = pl
pl2 = Range("G1")
res = Range("B1")
If Range("B1") = 0 Then
Range(pl2).ClearContents
Else
Range(pl2).ClearContents
For i = 1 To res
Cells(i, 1) = Int((9 * Rnd) + 1)
Next i
End If
pl0 = Range("A1").End(xlDown).Address
pl = Range("A1:" & pl0).Address
Range("G1") = pl
End Sub
re Passe passe
Tu avais oublié de déclarer la variable pl
Ca fonctionne bien, mais je ne peux plus définir dans ta procédure avec la cellule G1 mes variables plage de cellules
Pour mieux comprendre: Nous utiliserons ta procédure dans une trentaine de plages de cellules pilotées automatiquement par des formules de calcul qui aboutissent à donner au bon moment la plage concernée dans la cellule G1
Cellules de calcul de plages----------->plage donnée dans cel G1 (définissant l'emplacement et le nombre de cellules mise à disposition)
Cellule de calcul de lancement de la procédure et du nombre de tirages (ou nombres de cellules utilisées dans la plage)
Encore merci de ton aide on y est presque
cordialement
JB
-- 20 Mai 2011, 00:13 --
re passse passe
Encore merci ta procédure nous permet quand même de tester 1 par 1 les programmes concerné par les automatismes déclenchés, et ca c'est top pour nous!
cordialement
On joint le fichier comprenant ta procédure entièrement prêt pour simulation éventuelle.
Jb
-- 20 Mai 2011, 00:14 --
re
Re
Désolé, mais je ne vois pas ce que doit faire la cellule G1
Que se passe-t-il quand tu tape 6 en E1 alors que G1 correspond à une plage de 4 cellules?
Est ce que G1 permet d'effacer la plage de cellule définie ? Si oui, que se passe-t-il si le nombre de cellules de la colonne A est supérieure à la plage définie ?
Faut-il déterminer G1 (la dernière macro fait ce travail: détermination de la plage de cellules au départ puis à l'arrivée)
Bonjour Passe passe
Merci de suivre notre problm
Dans la procedure la cellule G1 est une cellule de calcul qui a pour but de réserver une plage de cellules différente selon les cas, environ une vingtaine...
G1 informe la procédure elle ne peut en aucun cas être modifiée par la procédure
Exemples:de ce qu'elle peut délivrer : A1:A10 => B1:C4 etc… en outre elle permet de connaitre le nombre de cellules réservée dans la plage
ex A1:A10 soit 10 cellules de façon à ce que le calcul de B1 donnant le nombre de cellules à écrire ne soit jamais supérieur au nombre de cells réservées. ça j'aurais du te le dire nous avons mis cette protection lorsque tu nous as proposé ta première procédure, dsl.
Dans ta procédure actuelle tout ce passe bien, sauf que tu utilises la cellule G1 pour définir une plage variable dans la colonne A, Comment dans ces conditions puis-je dire à ta produre d'utiliser la plage colonne B ou encore C1:D8 ?
Espérant avoir été clair
cordialement