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

Rechercher des sujets similaires à "vba fois fonction mise plage"