Quand je tape ce programme qui permet de calculer le poids idéal, tout fonctionne, le résultat me dit bien si je dois perdre ou prendre du poids :
Sub poids2()
Dim genre, pa, pi, nbk As Integer
genre = Range("F3")
ta = Range("F6")
pa = Range("F9")
If genre = 2 Then
pi = Int((ta - 100) - ((ta - 140) / 2))
Else
pi = Int((ta - 100) - ((ta - 150) / 4))
End If
nbk = Abs(pi - pa)
If pi > pa Then
MsgBox "Vous devez prendre " & CStr(nbk) & " kilos!"
Else
If pi < pa Then
MsgBox "Vous devez perdre " & CStr(nbk) & " kilos !"
Else
MsgBox "Gardez vos habitudes alimentaires"
End If
End If
End Sub
par contre, quand je remplace les cellules F6 et F9 par boîtes (MsgBox), systématiquement, le résultat me dit bien que je dois perdre du poids :
Sub poids2()
Dim genre, pa, pi, nbk As Integer
genre = Range("F3")
ta = InputBox("saisir votre taille en cm")
pa = InputBox("saisir votre poids en kg")
If genre = 2 Then
pi = Int((ta - 100) - ((ta - 140) / 2))
Else
pi = Int((ta - 100) - ((ta - 150) / 4))
End If
nbk = Abs(pi - pa)
If pi > pa Then
MsgBox "Vous devez prendre " & CStr(nbk) & " kilos!"
Else
If pi < pa Then
MsgBox "Vous devez perdre " & CStr(nbk) & " kilos !"
Else
MsgBox "Gardez vos habitudes alimentaires"
End If
End If
End Sub
Etant un grand débutant sous VBA, qlq1 pourrait-il m'éclairer sur ce qu'il se passe ?
merci d'avance et @+
-->Message édité par demandeinfos le 28/02/2009 17:15:00<--
Merci beaucoup pour l'info, je ne vois pas bien encore à quoi ça correspond mais je creuserai la question (je débute depuis peu sous VBA, et je recopie plus que je ne comprends dans l 'attente de progresser ...).
Il me reste à compléter une chose que je ne sais pas du tout faire : le résultat que j'obtiens s'affiche actuellement sur une fenêtre, est-t'il possible de conserver cet affichage du résultat et à la fois d'aller l'inscrire dans une cellule ?
J'aurai une dernière question svp, sur le programme ci-dessous, je voudrais que quand "genre" est différent de 2, les "Inputbox" ne soient pas lancées, mais que le programme s'arrêté pour que le choix de genre soit refait.
Sub poids2()
Dim genre, pa, pi, nbk As Integer
If genre = 2 Then
pi = Int((ta - 100) - ((ta - 140) / 2))
Else
MsgBox "Vous n'avez pas chosi le bon genre, essayez de nouveau"
End If
ta = CInt(InputBox("saisir votre taille en cm"))
pa = CInt(InputBox("saisir votre poids en kg"))
genre = Range("F3")
nbk = Abs(pi - pa)
If pi > pa Then
MsgBox "Vous devez prendre " & CStr(nbk) & " kilos!"
Else
If pi < pa Then
MsgBox "Vous devez perdre " & CStr(nbk) & " kilos !"
Else
MsgBox "Gardez vos habitudes alimentaires !"
End If
End If
End Sub
-->Message édité par demandeinfos le 27/02/2009 15:16:56<--
1) ton prog ne peut pas fonctionner, tu utilises des variables avant quelles soient initialisées (si genre = 2 )
2) Si le genre est toujours dans une cellule (et non pas une popup demandant le genre), tu peux bloquer la valeur de la cellule à 1 ou 2 (validation des données)
Ensuite, il te reste le cas ou la cellule est vide. Dans ce cas, tu fais un test
si cells(3,6).value = 0 et tu fais un "exit sub"
puis-je abuser svp .... pas de soucis déjà, tout fonctionne depuis le début ...
donc là si c'est "genre=1" le programme s'arrête, si c'est "genre=2", les fenêtres s'ouvrent,
ce que je voudrais ajouter, c'est une fenêtre qui s'ouvre en 1er, et dans laquelle on impose ce qui doit être écrit pour passer à la suivant ?
merci d'avance
Sub Soja()
Dim produit, ta, pa, pi, nbk As Integer
produit = Range("O6")
If produit = 2 Then
pi = Int((ta - 100) - ((ta - 140) / 2))
Else
MsgBox "Vous n'avez pas choisi le bon produit"
Exit Sub
End If
ta = CInt(InputBox("saisir votre taille en cm"))
pa = CInt(InputBox("saisir votre poids en kg"))
nbk = Abs(pi - pa)
If pi > pa Then
MsgBox "Vous devez prendre " & CStr(nbk) & " kilos!"
Else
If pi < pa Then
MsgBox "Vous devez perdre " & CStr(nbk) & " kilos !"
Else
MsgBox "Gardez vos habitudes alimentaires !"
End If
End If
Bonjour j'ai essayé ça mais ça ne fonctionne pas ?
Merci pour votre coup de pouce sur ce point, je n'y suis pas arrivé ...
Sub Soja()
Dim produit, ta, pa, pi, nbk As Integer
produit = Range("O6")
If produit = 2 Then
pi = Int((ta - 100) - ((ta - 140) / 2))
Else
MsgBox "Vous n'avez pas choisi le bon produit"
Exit Sub
End If
Do
ta = CInt(InputBox("saisir votre taille en cm"))
Loop While ta = 100
pa = CInt(InputBox("saisir votre poids en kg"))
nbk = Abs(pi - pa)
If pi > pa Then
MsgBox "Vous devez prendre " & CStr(nbk) & " kilos!"
Else
If pi < pa Then
MsgBox "Vous devez perdre " & CStr(nbk) & " kilos !"
Else
MsgBox "Gardez vos habitudes alimentaires !"
End If
End If
Cells(12, 6).Value = CStr(nbk)
End Sub
-->Message édité par demandeinfos le 28/02/2009 13:48:56<--
en fait ce n'est pas ce que je voudrais faire, c'est un exemple,
voilà, ce que je souhaiterai faire :
1 - il faut choisir le bon genre
2 - une fois le bon genre sélectionné, je voudrais qu'une box apparaisse pour demander une mot qui doit être rentrée exactement pour passer à la suite ?
je sais pas si je suis clair ?
-->Message édité par demandeinfos le 28/02/2009 14:11:18<--
Do
genre = 0
retour = InputBox("entrer votre genre: ""H"" pour homme, ""F"" pour femme")
If retour = "h" Or retour = "H" Then
genre = 1
ElseIf retour = "f" Or retour = "F" Then
genre = 2
End If
Loop While genre = 0
ok, encore super et , ça fonctionne très bien, j'ai juste adapté à ce que je voulais faire (cf en dessous en rouge), la macro est pas encore finie (pour l'instant elle pas trop de sens), mais c'est dans l'esprit de ce que je souhaiterai faire au final ...
Il me reste un petit détail à régler, que je n'ai pas réussi à améliorer, quand la box "entrer le nom de la Directive choisie" apparaît, quand je clique sur "Annuler" elle ne veut pas disparaître, comment peut-on faire ?
encore merci d'avance pour le coup de main ...
Sub Soja()
On Error GoTo suite
Dim produit, ta, pa, pi, nbk As Integer
produit = Range("G6")
If produit = 2 Then
pi = Int((ta - 100) - ((ta - 140) / 2))
Else
MsgBox "Vous n'avez pas choisi le bon produit"
Exit Sub
End If
Do
produit = 0
retour = InputBox("entrer le nom de la Directive choisie")
If retour = "CE/2000/36" Then
produit = 2
End If
Loop While produit = 0
ta = CInt(InputBox("saisir votre quantité de protéines"))
nbk = Abs(pi - pa)
If pi > pa Then
MsgBox "Vous devez prendre " & CStr(nbk) & " kilos!"
Else
If pi < pa Then
MsgBox "Vous devez perdre " & CStr(nbk) & " kilos !"
Else
MsgBox "Gardez vos habitudes alimentaires !"
End If
End If
Do
produit = 0
retour = InputBox("entrer le nom de la Directive choisie")
If retour = "CE/2000/36" Then
produit = 2
End If
Loop While produit = 0
Modifie comme ceci
Do
produit = 0
retour = InputBox("entrer le nom de la Directive choisie")
If retour = "CE/2000/36" Then
produit = 2 Else
Exit Sub
End If
Loop While produit = 0