Probléme exercie boucle for vba

dorian57290

XLDnaute Nouveau
Bonjour, je n'arrive pas faire un petite exercice avec la boucle for sous vba. je vous transmet l'énoncé en pièce jointe.
Si quelqu'un pourrait m'expliquer comment il a fait ce serai sympa !! Cette exercice paraîtra simple pour vous mais je suis novice en programmation excel.

Merci de votre aide
 

Pièces jointes

  • exemple boucle vba.xlsx
    9.9 KB · Affichages: 65

vgendron

XLDnaute Barbatruc
Re : Probléme exercie boucle for vba

Hello

le code que tu as récupéré dans ton exemple 4. n'est pas du code.. enfin.. pas que.. c'est un mélange avec de l'algorithme

Il faut tout traduire en code VBA
ce qui te donne
Code:
Function somPremEntIter(ByVal n As Integer) As Integer
' Hypothèse : n >= 0.
' Renvoie : la somme des entiers naturels compris entre 1 et n (inclus), renvoie 0 Si n=0.
  Dim i As Integer
  Dim res As Integer
  res = 0
  For i = 1 To n '(par pas de 1)
                 res = res + i
 Next i
somPremEntIter = res
End Function

Ce code doit etre mis dans un module standard VBA
pour ouvrir l'éditeur Alt+F11
ensuite à gauche dans l'explorateur du classeur: tu cliques droit inserer module
et tu y colles le code
tu viens donc de définir une fonction itérative directement utilisable dans ton classeur excel, tout comme quand tu utilises les fonctions de base Excel genre. Min, max, somme.....etc etc

ensuite.. dans ta colonne B: corrige le nom de la fonction
en B2=somPremEntIter(A2)

tu tires vers le bas..
et la.. horreur.. tu vois que ca ne marche pas pour les trois dernières lignes...
et oui.. dans la fonction, res est déclaré comme un entier (integer), il faudrait le déclarer comme un long..
je te laisse chercher la différence.. ;-)
 

ROGER2327

XLDnaute Barbatruc
Re : Probléme exercie boucle for vba

Bonjour à tous.


je te remercie beaucoup de tes explications, effectivement c'est un mélange d'algorithme et de vba j'ai toute une série d'exercice à effectuer !!
Oui, vous avez déjà posé l'exercice 1 ici.
Vous avez eu des réponses, mais les avez-vous vues ? En tous cas, vous n'avez pas donné signe de vie...

Autres propositions pour l'exercice 4 :​
Code:
Function somPremEntRoger_10(d)

'Respecte la condition : "... une fonction qui, étant donné
'un entier naturel n, renvoie la somme des entiers naturels
'compris entre 1 et n (inclus), renvoie 0 Si n=0."
'
'Cette condition impose que :
'   - si n n'est pas entier, la fonction ne renvoie rien (ou
'     une valeur d'erreur) ;
'   - si n n'est pas positif, la fonction ne renvoie rien
'     (ou une valeur d'erreur).

Dim i&, Res&
    somPremEntRoger_10 = ""
    If Not IsEmpty(d) And IsNumeric(d) Then
        If d = Int(Abs(d)) Then
            For i = 1 To d: Res = Res + i: Next
            somPremEntRoger_10 = Res
        End If
    End If

End Function
Code:
Function somPremEntRoger_20(d)

'Respecte la condition : "... une fonction qui, étant donné
'un entier naturel n, renvoie la somme des entiers naturels
'compris entre 1 et n (inclus), renvoie 0 Si n=0."
'
'Cette condition impose que :
'   - si n n'est pas entier, la fonction renvoie une valeur
'     d'erreur (ou rien) ;
'   - si n n'est pas positif, la fonction renvoie une valeur
'     d'erreur (ou rien).

Dim i&, Res&
    somPremEntRoger_20 = "argument invalide"
    If IsEmpty(d) Then
        somPremEntRoger_20 = ""
    Else
        If IsNumeric(d) Then
            If d = Int(Abs(d)) Then
            For i = 1 To d: Res = Res + i: Next
            somPremEntRoger_20 = Res
            End If
        End If
    End If

End Function


Bonne soirée.


ℝOGER2327
#7763


Dimanche 22 Gueules 142 (Saint Sexe, Stylite - fête Suprême Première seconde)
28 Pluviôse An CCXXIII, 7,4719h - cyclamen
2015-W08-1T17:55:57Z
 

Pièces jointes

  • Somme d'entiers.xlsm
    32.1 KB · Affichages: 33
  • Somme d'entiers.xlsm
    32.1 KB · Affichages: 40
  • Somme d'entiers.xlsm
    32.1 KB · Affichages: 41

vgendron

XLDnaute Barbatruc
Re : Probléme exercie boucle for vba

Hello. à mon avis; il y a une erreur dans l'ennoné..

déclare n: ok
déclare i: ok.. mais.. il sert à quoi?? c'est LA question à laquelle tu dois répondre
ce qui donne la correction
pour I (et pas n) compris entre 1 et n

pour comprendre à quoi sert le i..
on est d'accord que n prend toutes les valeurs 1 à 100 dans ton exemple. donc n est tour à tour impair puis pair..
or. toi. tu ne veux faire la somme que des nombres impair..
comment ne garder que ceux la..
autrement dit. comment faire une suite de chiffres impairs...
2n+1 ca te rappelle un cours??

donc. n=100
i= 1 to n
res=res + 2*i+1
..

le but étant de t'aider à comprendre tes exo. et pas les faire à ta place, je te laisse mariner un peu ;-)
 

dorian57290

XLDnaute Nouveau
Re : Probléme exercie boucle for vba

Oui je pense aussi cette énoncé est trés vague et de plus j'ai eu que 2h de cours téhorique la dessus! A assimilé c'est trés compliqué pour moi qui ne suit pas fan de programmation lol! Le 2n+1 c'est pour avoir un chiffre impairs a chaque fois ? j'ai fait mon petit programme ! je trouve des valeur mais je ne suis pas sure de savoir si c'est correct !!
en tous cas merci pour votre aide c'est vraiment sympa !
 

Pièces jointes

  • vba sommeImpairs.jpg
    vba sommeImpairs.jpg
    13.5 KB · Affichages: 97

vgendron

XLDnaute Barbatruc
Re : Probléme exercie boucle for vba

Si c'est très bien,
sauf que il te manque encore l'étape suivante de ta reflexion.
fais le calcul à la main pour n=10.. et lance ta fonction..
tu vas voir qu'il y a un écart..
et donc qu'il te manque une condition pour faire cette somme.
 

vgendron

XLDnaute Barbatruc
Re : Probléme exercie boucle for vba

Normalement..
pour n=10.. à la main. tu fais la somme des chiffres impairs entre 0 et 10. (somme des impairs COMPRIS entre 1 et n inclus)
donc 1 +3 +5 + 7 +9
sauf que ta fonction . fais la somme de
1+3+5+7+9+11+13+15+17+19+21...

donc la condition, c'est de prendre en compte le 2*i+1 SI il est inférieur ou égal à n

Regarde la PJ, tu as tous les cas pour te montrer les différences

Colonne A: n de 0 à 100
colonne B: le calcul des impairs 2*i+1
colonne C: le calcul des PAIRS: 2*i
Colonne D: les impairs SI ils sont <= à n (en H6)
colonne E: idem pour les pairs

dans le tableau à droite:
les sommes "manuelles"
puis la fonction associée


Voila.. reste plus qu'à faire la meme chose pour les chiffres premiers.. ;-) comment on les reconnait déjà? ;-)
 

Pièces jointes

  • somme impaire.xlsm
    22.8 KB · Affichages: 42

dorian57290

XLDnaute Nouveau
Re : Probléme exercie boucle for vba

Super merci pour le fichier excel ! Mais avec ou sans la condition sa ne change pas. Pour les chiffre premier j'ai quelque exercice la dessus !
le Chiffre parfait ce résume à :la somme de ses diviseur=chiffre entier N exemple 6=3+2+1
 

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 098
Membres
103 116
dernier inscrit
kutobi87