begin process at 2008 08 22 04:07:41
1 229 771 membres
42 nouveaux aujourd'hui
14 267 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Recup valeurs [ Divers / Débutants ] (Jijudu)

Recup valeurs le 15/05/2008 13:40:10

Jijudu
Bonjour tout le monde

A1 04:50:00 | B1 3
A2 04:40:00 | B2 3.6
A3 04:30:00 | B3 3.9
A4 04:20:00 | B4 4.2
A5 04:10:00 | B5 4.3
A6 04:00:00 | B6 4.3
A7 03:50:00 | B7 4.1
A8 03:40:00 | B8 3.9


Voila j'ai une macro qui me trouve une zone par exemple A1-A8
J'aimerai stocker les valeurs dans la colonne B appartenant à la même zone (c'est à dire la zone de la ligne 1 à 8) dans un tableau. Ensuite le but sa serai d'extraire ces valeurs dans le tableau pour en faire une moyenne.
MAis est ce que quelqu'un pourrai me donner le code VB pour stocker les valeurs de la colonne B svp, parce que je ne vois pas comment faire!
Le reste j'essayerai de le faire tout seul en allant à mon rythme.

MErci pour l'aide !

Re : Recup valeurs le 15/05/2008 17:06:10

pile_poil
Membre Club
une bonne façon de commencer c'est d'aller dans excel , menu  outils , macros , nouvelle macro ,
ensuite tu fais manuellement ta manipe et quand elle est finie tu click sur arreter l'enregistrement de la macro
ensuite tu vas dans l'éditeur de macro et tu regardes comment excel a écrit l'opération !
il ne te reste plus qu'à adapter à ton besoin  exact pour rendre ça plus universel !
c'est de cette façon que j'ai procédé qsuand j'ai commencé sans rien connaitre à la programmation

si c'est la solution, penser : REPONSE ACCEPTEE

Re : Recup valeurs le 15/05/2008 20:59:40

mortalino
Membre Club
salut,

déjà, il faut créer une variable de type tableau (pour stocker les valeurs)

dim MesValeurs() As Double

Ensuite, déterminer le nombre de valeurs :

Dim NbValeurs as integer
NbValeurs = range("b1").End(xlDown).Row

On redimensionne le tableau :
REdim MesValeurs(NbValeurs)

Puis on boucle pour récupérer les valeurs :
Dim i as integer

for i = 1 to NbValeurs
    MesValeurs(i - 1) = cdbl(cells(i, 2).Value)
next i

Puis, la moyenne :
Dim Moyenne as double

For i = 1 to NbValeurs
    Moyenne = Moyenne + MesValeurs(i - 1)
next i
Moyenne = Moyenne / NbValeurs

Tu peux éviter le stockage dans la variable Tableau si tu le souhaites

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA

Re : Recup valeurs le 15/05/2008 21:32:18

Jijudu
Merci à toi mortolio !!! ^^

Le probléme  en faite c'est que je ne prends pas toutes les valeurs de la colonne B.
J'ai une macro qui me délimite une plage. Je connais le début et la fin de cette plage par la variable "n_ligne_debut" et "n_ligne_fin" qui me disent à quelle ligne la plage commence et à quelle ligne la plage finit. Ici dans l'exemple cité ci dessus
la plage commence à A1 et finit a A2.
Je dois prendre les valeurs de la colonne B qui appartiennent à la plage définit.


J'éspere avoir été assez clair.
Je dis cela parce que en faite j'ai l'impression que ta macro prend toutes les valeurs de la colonne B. Si ce n'est pas le cas, m'accordera tu ton pardon?? : )

A toute !
..

Re : Recup valeurs le 15/05/2008 21:39:11

mortalino
Membre Club
effectivement, mon code lisait depuis la première ligne, voici une petite modif :


dim MesValeurs() As Double

REdim MesValeurs(n_ligne_fin - n_ligne_debut + 1)

Dim as integer, j as integer

for i = n_ligne_debut to n_ligne_fin
    MesValeurs(j) = cdbl(cells(i, 2).Value)
    j = j + 1
next i

Dim Moyenne as double

For i = lbound(MesValeurs) to ubound(MesValeurs)
    Moyenne = Moyenne + MesValeurs(i - 1)
next i
Moyenne = Moyenne / ubound(MesValeurs) + 1
~ Mortalino ~ Colorisation automatique

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA

Re : Recup valeurs le 15/05/2008 21:41:27

mortalino
Membre Club
Oups :

Dim Moyenne as double

For i = lbound(MesValeurs) to ubound(MesValeurs)
    Moyenne = Moyenne + MesValeurs(i'enleve le -1
next i


@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA

Re : Recup valeurs le 15/05/2008 21:42:55

Jijudu
D'ac au d'ac je testerai Ta macro Demain

Bonne nuit !!
+
A tt!

Re : Recup valeurs le 17/05/2008 17:50:27

Jijudu
Slt !!
re c moi ^^,
J'ai essayé ta marco, elle fonctionne mise à part la partie pour le calcul de la moyenne ; )


Alors voilà, je me disai qu'il faudrai initialiser la variable "moyenne" au début de la boucle for
et mettre => moyenne = 0  qu'est ce t'en pense ?

Dim Moyenne as double
For i = lbound(MesValeurs) to ubound(MesValeurs)
    Moyenne = Moyenne + MesValeurs(i)
next i


De plus, "Ubound" donne la valeur de l'indice supérieur du tableau, alors pourquoi la somme des valeurs contenue dans le tableau serai donné par =>
ubound(MesValeurs) + 1   ??

Moyenne = Moyenne / ubound(MesValeurs) + 1

Merci les gars !!
++

Re : Recup valeurs le 17/05/2008 17:59:07

mortalino
Membre Club
salut,

pas besoin d'initialiser la variable, effectivement, elle vaut 0, mais dans
Moyenne = Moyenne + MesValeurs(i)
il faut traduire Moyenne = 0 + Ce que vaut MesValeurs(i)

Pour le Ubound(tata) + 1, c'est simple, sache que les tableaux de variables, par défaut, est en base 0, donc si ton Indice supérieur vaut 10, tu as 11 valeurs (car l'indice 0 en contient une aussi, donc 0 à 10 = 11)

Pour ton problème, là je ne vois pas, dans
Dim Moyenne as double

For i = lbound(MesValeurs) to ubound(MesValeurs)
    Moyenne = Moyenne + MesValeurs(i'enleve le -1
next i

Sous Moyenne = ..., met un MsgBox Moyenne & vbcrlf & MesValeurs(i)

et dit nous ce que la boite de message te retourne

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA

Re : Recup valeurs le 17/05/2008 18:26:14

Jijudu
Merci pour ta rapidité surprenante : ).

J'ai noté ton mesage. Je continuerai cela lundi car je n'ai pas en ce moment les moyens nécessaire pour réaliser la mainip. ^^

A suivre ......
A lundi
toute!


[Page 1 Page 2 Page 3]
Classé sous : recup, valeurs, zone, a1, a8

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS