Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion benj78
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

benj78

Guest
Bonjour!

Ma question est simple : peut on utiliser des boucles for .. next ou autre pour construire une fonction dans VBA ? ou c'est juste avec les macros ?
 
Re : Question VBA

Merci

Parce que j'ai un petit probleme,

j'ai construis un programme qui est le suivant

Sub dé()
Dim x As Integer
Dim y As Integer
Dim z As Integer
Dim score As Integer
x = Int((Rnd * 6) + 1)
y = Int((Rnd * 6) + 1)
z = Int((Rnd * 6) + 1)
If x + y + z < 10 Then
score = 0
ElseIf x + y + z >= 10 And x + y + z <= 15 Then
score = 2
ElseIf x + y + z > 15 Then
score = 8
End If
MsgBox ("les 3 lancés sont" & " " & x & " " & y & " " & z & " " & "vous avez gagné" & " " & score & " " & "points")
End Sub


On me demande alors d'écrire le code d'une fonction jeu(x,y,z) qui calcule le nombre de points gagnés a partir de trois résultats de lancers de dés passés en parametre

j'ai fais:

Function jeu(x as integer,y as integer ,z as integer) As integer
Dim score as integer
For i=1 to 3
x = Int((Rnd * 6) + 1)
y = Int((Rnd * 6) + 1)
z = Int((Rnd * 6) + 1)
If x + y + z < 10 Then
score =score+ 0
ElseIf x + y + z >= 10 And x + y + z <= 15 Then
score = score+2
ElseIf x + y + z > 15 Then
score = score+8
End If
MsgBox ("le nombre de points gagnés est " &score "points")
End Sub

Mais je pense pas qu'il fasse réecrire le meme programme qu'avant , je ne saisi peut etre pas bien la difference entre une fonction et macro ? Pouvez vous juste me donner un indice ?
 
Re : Question VBA

Re

regarde le code ci dessous, devrait pouvoir t'aider :

Code:
Option Explicit
Sub de()
Dim x As Integer, y As Integer, z As Integer
Dim score As Integer
Randomize
x = Int((Rnd * 6) + 1)
y = Int((Rnd * 6) + 1)
z = Int((Rnd * 6) + 1)
MsgBox "le nombre de points gagnés est " & jeu(x, y, z) & " points"
End Sub
Function jeu(xx As Integer, yy As Integer, zz As Integer) As Integer
jeu = xx + yy + zz
End Function

Une fonction permet de renvoyer des valeurs et en plus elle peut être utiliser dans une feuiille de calcul, essaaye avec celle ci, dans une cellule tu tape "= jeu", tu saisis les valeurs dans la boite de dialogue, et le résultat sera renvoyé dans ta cellule.

En espérant avoir été clair.

@+
 
Re : Question VBA

Ha ok oui je crois mieux comprendre.

En gros la fonction est "le cerveau " de l'instruction ,
Quant à la macro , elle applique cette instruction en fonction des données rentrées ?

Donc pour mon exercice on aurait :



Sub dé()
Dim x As Integer, y As Integer,z As Integer
Dim score As Integer
For i=1 to 3
x = Int((Rnd * 6) + 1)
y = Int((Rnd * 6) + 1)
z = Int((Rnd * 6) + 1)
If x + y + z < 10 Then
score = score+ 0
ElseIf x + y + z >= 10 And x + y + z <= 15 Then
score = score + 2
ElseIf x + y + z > 15 Then
score = score+ 8
End If
Next
MsgBox ("votre score est" & jeu(x, y, z) & " points")

End Sub



Function jeu(xx As Integer, yy As Integer, zz As Integer) As Integer
jeu = score
End Function

Mais la encore ça me semble bizard 🙁
 
Re : Question VBA

Re

il manque l'addition dans ta fonction :

Code:
Function jeu(xx As Integer, yy As Integer, zz As Integer) As Integer
jeu = [B][COLOR="Magenta"]xx + yy + zz[/COLOR][/B]
End Function

@+
 
Re : Question VBA

Mici, mais je ne comprends pas pourquoi c'est xx + yy + zz sachant qu'il y à trois lancés et que selon les lancés, le score varie ?
 
Re : Question VBA

Re

ce sont les arguments déclaré et donc attendus par la fonction "jeu", cela pourrait de1 de2 de3 ou reprendre x y z, je les avais modifiés pour éviter la confusion avec les variables utilisées dans la sub "dé"...
 
Re : Question VBA

D'accord, merci.

J'ai une dernière petite question

On a le tableau ci dessous.

On nous demande :
Ecrire un programme qui calcule le montant total des factures qui sont payées et le montant total des factures qui ne sont pas payées, puis qui affecte les résultats aux cellules D8 et D9

Pour cela j'ai fais ;

Sub montant()

Cells(8, 4) = Maplage.Cells(3, 5).Value + Maplage.Cells(4, 5).Value + Maplage.Cells(7, 5).Value
Cells(9, 4) = Maplage.Cells(2, 5).Value + Maplage.Cells(5, 5).Value + Maplage.Cells(6, 5).Value

End Sub

Mais bon je suis pas sure du tout qu'il faille agir comme ça car ça ne fonctionne pas
 

Pièces jointes

Re : Question VBA

Bonjour à tous,

benj78 ou ... ?

Que veux-tu ? une bonne note ou évoluer..... ?

Moi, je préconise d'évoluer.... donc je te donne en excel ce que l'on peut faire, à toi de le transposer en Vba

Sommeprod = sumproduct et NB.Si = countif

Alors ma petite aide pour ton avancement ....
 

Pièces jointes

Re : Question VBA

excusez moi j'avais plusieurs comptes car j'avais peur de poser trop de questions et gonfler tout le monde :s

bref quoi qu'il en soit oui mon but est d'évoluer afin davoir une bonne note , ou en tout cas de maximiser mes chances.

Merci pour votre aide, voilà ce que j'ai fais pour l'instant

Sub cellules()

Cells(8, 4) = Sum(Range("E3:E4,E7"))
Cells(9, 4) = Sum(Range("E2,E5:E6"))

End Sub

Ca ne marche tjrs pas , mais est ce que j'ai utilisé la bonne "formule" ?
 
Re : Question VBA

Il faut utiliser "sumproduct" alors ? Désolé si j'ai du mal mais on a pas fait d'application en cours ..

Ce qui donnerait :

Sub cellules()

Cells(8, 4) = SumProduct(Range("E3:E4,E7"))
Cells(9, 4) = SumProduct(Range("E2,E5:E6"))

End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
107
  • Question Question
Autres Planning
Réponses
8
Affichages
323
Réponses
10
Affichages
410
Réponses
7
Affichages
266
Réponses
15
Affichages
788
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…