Forums Rue-Montgallet.com
Rue-Montgallet.comRue-Hardware.comRue-Occasion.comRue-DVD.comRue-Jeuxvideo.comRue-AudioVideo.comRue-Telephone.comForums
S'inscrire | S'identifier |
| Recherche avancée | Aide
 
 

Il y a 80 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

macro pour calculer la moyenne de nbs pairs

 
n°18254
gaya
pas 2 problèmes, ke des solut°
Profil : Jeune recrue
Posté le 03-02-2007 à 15:00:09  profilanswer
 

Bonjour a tous !
Voilà, ma prof d'info a trouvé le moyen de me mettre au défi avec une petite programmation
( car je débute débute débute vraiment les macros ) . Et bien entendu, me voilà bloquée ! A l'aide ! :cry:  
Le sujet :
1/ On souhaite calculer la somme des nombres pairs compris entre n1 et n2 non inclus.
           (j'ai un peu galéré, mais j'ai trouvé ça ! : voici la tronche de la macro fonction :
 
function sommepairs ( byval n1 as integer , byval n2 as integer ) as integer
 Dim Sp as integer ' somme des pairs compris ds la fourchette
 Dim np as integer ' nombres pairs compris ds la fourchette
 Dim i as integer
  Sp = 0
 For np = n1+1 to n2-1  
  i = np mod 2
   If i = 0 then
    Sp = Sp + np
   Else
    Sp = Sp
   End If
  sommepairs = Sp
 Next
End function
 
2/ On souhaite calculer la moyenne de ses nombres pairs ( et là, c'est le drame !)
       mon soucis est de lui faire compter le nombres de pairs compris dans la fourchette ( n1  n2 )
Merci pour les réponses que vous pourrez m'apporter :jap:

n°18255
galopin01
Profil : Membre
Posté le 03-02-2007 à 16:40:26  profilanswer
 

bonjour,  
rajoute une variable x qui s'incrémente de 1 à chaque fois que i=0
 

Code :
  1. For np = n1+1 to n2-1 
  2. If np mod 2  = 0 then
  3. Sp = Sp + np
  4. x = x+1
  5. End If
  6. Next
  7. MsgBox "moyenne = " & Sp / x
  8. sommepairs = Sp


 
A+


---------------
Je ne répondrai pas aux messages privés non sollicités. Merci de poser vos questions sur le forum.
n°18258
jxano
Le 'x' ? C'est pour décorer.
Profil : Membre
Posté le 04-02-2007 à 12:27:17  profilanswer
 

Tiens, cette question me rappelle l'histoire du maître d'école qui donne à un gamin de 8 ans la punition suivante : additionner tous les entiers de 1 à 100. D'aucuns commenceraient à poser l'addition... Mais ce garçonnet, lui, a trouvé la formule n(n+1)/2. Avec n=100, ça donne 5050. C'était à une époque où les ordinateurs n'existaient pas, ça aidait à se creuser la tête...
 
gaya, je me demande si ton problème ne pourrait pas être résolu de la même manière. Cherche voir si calculer la somme des nombres pairs entre n1 et n2 ne se ramène pas un peu à la somme des n premiers entiers, modulo la borne inférieure et la multiplication par deux, bien sûr.
 
La solution prend la forme d'une formule utilisable dans une cellule du tableur, sans programmation du tout.
 
Et en plus, comme il s'agit de faire la moyenne, c'est même encore plus benêt que ça : le résultat tournerait autour de (n1+n2)/2, si je ne me trompe pas.
 
J'ai l'impression que ta prof a voulu te jouer un mauvais tour...


Message édité par jxano le 04-02-2007 à 12:37:51

---------------
Miximus in lecto, fateor peccavimus hospes. Si dices quare nulla matella fuit !
n°18315
gaya
pas 2 problèmes, ke des solut°
Profil : Jeune recrue
Posté le 18-02-2007 à 18:06:26  profilanswer
 

MERCI a vous deux ( Galopin01 et Jxano ) pour vos lumières !!  :sweat: désolée pour le remerciement tardif...
Pour sûr : lorsque l'on connait la solution , cela parait évident !  
 
Du coup , je me posait une autre question sur la programmation ( a titre personnel , ce coup ci ! ):
au lieu de définir n1 et n2 ( deux cellules du tableau ) , je souhaiterais sélectionner une zone ( ces deux memes cellules mais "cliquée-glissée" ensemble ) , et l'idée serai de pouvoir faire : n1 / n2 , comment lui faire comprendre que n1 serai la première des deux cellules sélectionnées et n2 la seconde ?
 l'écriture de la fonction donnerai :
 
Function "division" ( byval zone() as integer ) as integer
    Dim a as integer  ' équivaudrai a n1
    Dim b as integer  ' equivaudrai a n2
    Dim c as integer  ' indice des colonnes
    Dim l as integer   ' indice des lignes
déjà, je ne suis pas sûre de bien commencée, ensuite je pense qu'il y a une histoire de " lbound(zone()) to ubound(zone()) quelquechose tralala dans le genre ... encore merci du temps que vous avez pris et prendrez pour moi !
 

n°18321
jxano
Le 'x' ? C'est pour décorer.
Profil : Membre
Posté le 19-02-2007 à 10:51:49  profilanswer
 

Citation :

ensuite je pense qu'il y a une histoire de " lbound(zone()) to ubound(zone()) quelquechose tralala dans le genre ...

Oui, tu as visé juste ! LBound() et UBound() sont respectivement les bornes inférieure et supérieure d'un tableau, ou dans notre cas les coins supérieur gauche et inférieur droit de la zone passée en paramètre. Il ne te reste plus qu'à définir une convention pour savoir quelle cellule porte le dividende : celle du haut et/ou à gauche, par exemple.


---------------
Miximus in lecto, fateor peccavimus hospes. Si dices quare nulla matella fuit !
n°18326
gaya
pas 2 problèmes, ke des solut°
Profil : Jeune recrue
Posté le 19-02-2007 à 16:12:43  profilanswer
 

YES ! bon... je pense avoir compris .... je vais tester quelque chose, encore merci !!! ( franchement la programmation, c'est terrible ! je débute tout juste, mais je suis capable de rester ( bloquée ! ) des jours dessus ! : j'adore ça ! ) ... a bientot !


Aller à :
Ajouter une réponse