Question pour 1 champion "Fonction facto répétée!"

Bjr les champions

Comment lancer une fonction "Facto" dans cellule A2 à partir du résultat "1" de la cellule A1, et relancer la fonction "Facto" si la cellule A1 passe de 1 à 0 ?

Cellule A1 = 1 Lance Facto cellule A2

Cellule A1 = 0 relance Facto cellule A2

A titre d'exemple ci-après la macro qui lance la fonction Alea dans les mêmes conditions, Que faut t'il modifier pour lancer Facto à la place ?

Merci les champions

Débutons en VBA, mais attendez vous à de plus en plus fort vue notre programme COLOSAL !!! :):)

JB Playbo07

De "Grand Chaman Excel" 02 Mai 2011, 02:36

Bonjour Playbo07,

Avec une macro dans la feuille :

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = [A1].Address Then

If [A1] = 1 Then

[A2] = Rnd

ElseIf [A1] = 0 Then

[A2] = Rnd

End If

End If

End Sub

Bonjour.

Au risque de passer pour imbécile, qu'entends-tu par fonction "Facto"? Une factorielle, soit A1 multiplié par A2 ?

Si A1 = 0 ou 1, A2 qui est aléatoire sera égale a ALEA() ou 0 ce qui revient donc au même.

Aurais-tu plus de détail ou un fichier avec ce que tu veux faire ? Parfois je ne comprends pas vite.

pass-pass a écrit :

Bonjour.

Au risque de passer pour imbécile, qu'entends-tu par fonction "Facto"? Une factorielle, soit A1 multiplié par A2 ?

Si A1 = 0 ou 1, A2 qui est aléatoire sera égale a ALEA() ou 0 ce qui revient donc au même.

Aurais-tu plus de détail ou un fichier avec ce que tu veux faire ? Parfois je ne comprends pas vite.

Réponse

Une fonction facto renvoit la factorielle d'un nombre à 1*2*3*...*nombre

Exemple factorielle de 3 = 3*2 = 6 puis 3*3=9 puis 3*4 =12 puis ....

Dans mon probléme En A2 il y a la formule =facto(3) qui donne 6

Je veux que si A1 = 1 soit lancé de nouveau la fonction facto en A2 et donc que le résultat soit 9

de même si A1 passe de 1 à 0 que soit lancé à nouveau la fonction facto en A2 et donne 12.

Autrement dit cela veut dire que l'exécution de la fonction facto contenu dans A2 est conditionnée par le 1 ou le 0 de la cellule A1 Comprends qui peut ? :):):):)

Bonsoir

La factorielle d'un nombre est donnée par Excel avec la formule

=FACT("nombre")

=FACT(3)

Si =FACT(3) renvoie 6, là s'arrête ta comparaison avec les factorielles puisque, ce que tu demandes est une progression arithmétique à partir de la formule =FACT(3)

En partant du code précédent, le résultat est obtenu avec

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = [A1].Address Then
    If [A1] = 1 Then
        [A2] =  [A2]+3
    ElseIf [A1] = 0 Then
        [A2] = [A2]+3
    End If
End If
End Sub

A partir de là, un "VBAiste" trouvera bien à extraire le nombre et à l'inclure dans une variable.

Cordialement

Bsr les champions

Cet Amadeus c'est un malin lui ( Il a, comme les chats des trucs pour retomber sur ces pates

Pour le fun attendons les vrais VBAistes

merci Amadeus ca colle !!!

JB dit Playboy07

-- 02 Mai 2011, 20:30 --

Playbo07 a écrit :

Bsr les champions

Cet Amadeus c'est un malin lui ( Il a, comme les chats des trucs pour retomber sur ces pates

Pour le fun attendons les vrais VBAistes

merci Amadeus ca colle !!!

JB dit Playboy07

Amadeus

Dsl ca ne fonctionne pas !!

rien ne s'affiche en A2 !!

Pourtant a première vue

A ++

JB

Bonjour

Si tu veux que ton message soit visible (et remonte dans la pile) utilise le Bouton Répondre au lieu de Editer.

Tu dis que rien ne s'affiche? Tu m'étonnes.

Envoie l'exemple où rien ne s'affiche.

Cordialement

Bonjour

Merci de ton aide

voici l'exemple

a++

11macro-facto.xlsx (9.46 Ko)

Bonjour.

Il faut mettre le code de la macro dans VBA

Clique droit sur l'onglet de la feuille, puis visualiser le code.

Dans la feuille VBA, tu peux mettre ce code.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
    If Target = 1 Or Target = 0 Then
        Range("A2") = Range("A2") + 3
    End If
End If
End Sub

Re Amadéus

Ok c'est parfait

Merci encore

JB

Rechercher des sujets similaires à "question champion fonction facto repetee"