Multiplier des cellules dans la meme colomne
Bonjour
je suis nouveau ici,et j'ai passé plusieurs heures sur un seul exercice mais en vain,le voila
j'ai plusieurs données,probabilites de deces,sur une meme colomne et je voulais les multiplier,le hic c'est que les lignes ne sont pas fixe et ca va etre donné par un inputbox,autrement dit,il peut etre demandé a multiplier la ligne 3*ligne4*ligne5........ligne10,voici le l'enonce de l'exercice ca sera plus simple et merci beaucoup pour votre aide,j'ai mis aussi lenonce en fichier joint
Après l’exécution de la sous-routine de la partie 3, la feuille table va contenir un sous-ensemble d’une table de mortalité (avec les données initiales, la table de mortalité entre 50 et 74 ans). La colonne x indique l’âge, Px la probabilité de survivre jusqu’au prochain anniversaire et Qx, la probabilité de décéder avant d’atteindre l’anniversaire suivant.
Vous allez écrire deux sous-routines, en VBA, pour calculer et afficher :
1. La probabilité de survie, de l’anniversaire d’un âge donné à un autre.
2. La probabilité de décès, à un âge donnée, selon l’âge courant.
Ces deux sous-routines seront associées à des boutons situés sur la feuille table comme suit :
Lors de l’exécution de chacune de ces sous-routine, des InputBox demanderont l’âge courant et l’âge futur (ou de décès), il y aura ensuite, vérification pour détecter les erreurs suivantes :
1. L’âge courant est plus grand ou égale à l’âge futur (ou de décès).
2. L’âge courant n’est pas dans la table.
3. L’âge futur (ou de décès) n’est pas dans la table.
En cas d’erreur, un MsgBox affichera un message expliquant l’erreur.
Le calcul de la probabilité de survie de 45 ans à 50 ans est comme suit :
P45 * P46 * P47 * P48 * P49
Votre sous-routine doit faire ce calcul, de façon itérative, en utilisant une boucle While…Wend.
Salut Huntergoth,
pas sûr qu'on te rende un service en te faisant ton TP mais bon, essayons!
Tu as déjà 9 points mais tu as oublié de joindre le fichier de travail!
Je suppose que les feuilles Observations et Table se trouvent dans TP1 ?
Définis, stp, ce que doit être et où placer l'en-tête avec vos noms.
Le reste, après...
A+
merci pour ta reponse mais si tu as bien lu le titre de mon post ainsi que le contenu de mon message,j'ai CLAIREMENT demandé uniquement le code pour le probleme suivant:
j'ai plusieurs données,probabilites de deces,sur une meme colomne et je voulais les multiplier,le hic c'est que les lignes ne sont pas fixe et ca va etre donné par un inputbox,autrement dit,il peut etre demandé a multiplier la ligne 3*ligne4*ligne5........ligne10
mon TP est presque terminé,si tu as une idée ou une direction avec un propre exemple simple pour cette multiplication de cellules variables,ca serait tres apprecié et nullement besoin que j'envoi le fichier excel,le word cetait juste pour clarifier d'avantage ma question et mon besoin ,merci
Salut Huntergoth,
ah zut, j'avais déjà presque 20 points!
Bon, à l'arrache, hein...
Voici un code qui permet d'encoder deux nombres (pas ma manière habituelle mais bon...), qui vérifie que l'âge courant est bien inférieur à l'âge futur et qui rentre dans une boucle WHILE...WEND, qui y recherche d'abord les lignes dans 'Table' qui correspondent aux âges encodés, qui refuse le calcul si un des deux manque et finalement exécute le boulot dans l'autre cas.
Ici, le calcul prend les données à multiplier dans la colonne B. A toi de vérifier!
Private Sub cmdSurvie_Click()
'
iFlag1 = CInt(InputBox("Encoder l'âge courant!"))
iFlag2 = CInt(InputBox("Encoder l'âge futur!"))
'
If iFlag1 >= iFlag2 Then
MsgBox "Données invalides!", vbCritical
Exit Sub
End If
'
iRow = Worksheets("Table").Range("A" & Rows.Count).End(xlUp).Row
iLig = 4 '4 : première ligne de données de 'Table' d'après ton énoncé
iFlag3 = 0: iFlag4 = 0
'
'Calcul SURVIE
While iLig < iRow 'tourne tant que la ligne lue (iLig) est inférieure à la dernière ligne de 'Table' (iRow)
If Cells(iLig, 1) = iFlag1 Then iFlag3 = iLig 'ligne de l'âge courant
If Cells(iLig, 1) = iFlag2-1 Then iFlag4 = iLig 'ligne de l'âge futur -1
iLig = IIf(iFlag4 > 0, iRow + 1, iLig + 1) 'incrémentation de iLig
If iLig >= iRow Then
If iFlag3 = 0 Then 'si pas d'âge courant dans la 'Table'...
MsgBox "L'âge courant n'est pas repris dans la table!", vbCritical
iOut = 1
End If
If iFlag4 = 0 Then 'si pas d'âge futur dans la 'Table'...
MsgBox "L'âge futur n'est pas repris dans la table!", vbCritical
iOut = 1
End If
If iOut = 0 Then 'les deux âges encodés sont présents dans la 'Table' donc calcul
For x = iFlag3 + 1 To iFlag4
iSurvie = IIf(x = iFlag3 + 1, Cells(x, 2) * Cells(x - 1, 2), iSurvie * Cells(x, 2))
Next
MsgBox "Probabilité de survie jusqu'à " & iFlag2 & " ans d'une personne âgée de " & iFlag1 & " ans." & Chr(10) & iSurvie, vbExclamation
End If
End If
Wend
'
End SubA+
Bonjour,
merci pour ta reponse mais si tu as bien lu le titre de mon post ainsi que le contenu de mon message,j'ai CLAIREMENT demandé uniquement le code pour le probleme suivant:
Et toi il t'a été CLAIREMENT écrit "votre routine..."
Pas de trouver quelqu'un d'autre pour faire tes devoirs.
eric
Merci Curulis je vois maintenant la direction a prendre
pour Eric,donc tu sers absolument a rien sur ce forum,va dormir et merci pour "ta contribution constructive".(sarcasm)