Addition sous excel en vba

cs_valer
Messages postés
140
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
26 juillet 2004
- 10 juin 2004 à 08:14
Vb Lover
Messages postés
221
Date d'inscription
vendredi 30 novembre 2001
Statut
Membre
Dernière intervention
13 février 2010
- 10 juin 2004 à 21:31
bonjour,
j'ai un classeur excel avec dans la colonne A des noms d'opération tels que "finition" ou "prepa composant"
je sais afficher en vba la valeur d'une de ces cases en tapant par ex:

for p=0 to 50
       if  range("A1").offset(p)="finition" then
          page_2.label4.caption=range("B8").offset(p) 'valeur 'correspondante dans la colonne b
       end if
next p


Mais si j'ai plusieurs cases finition comment dois-je faire pour toute les additionner??
merci beaucoup :)

Valer

8 réponses

scoder
Messages postés
140
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
20 mars 2006

10 juin 2004 à 08:42
si tu veux par exemple additionner les cellules A2 à A8 :

result= 0
for i = 2 to 8
result = result + cells (i,1)
next
0
scoder
Messages postés
140
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
20 mars 2006

10 juin 2004 à 08:42
si tu veux par exemple additionner les cellules A2 à A8 :

result= 0
for i = 2 to 8
result = result + cells (i,1)
next
0
cs_valer
Messages postés
140
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
26 juillet 2004

10 juin 2004 à 09:32
le truc est un peu + complique,
je peux tres bien avoir une case "finition" en "A12" puis en A13 une case "PrepComp" jusqu'en "A18", en "A19" on a "TestDiode" et enfin en A20 "finition", sachant que les numero de lignes sont completment différent d'un fichier a un autre,
comment faire pour que VBA m'additionne ici ce que contient "finition" (numero des lignes aléatoire, donc methode de recherche comme dans le message precedent.)
merci
Valer
0
cs_valer
Messages postés
140
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
26 juillet 2004

10 juin 2004 à 09:37
mal dit ,
plutot comment faire pour que VBA additionne dans une cellule le contenu qu'il y a dans un chaque case coreespondant a finition...
Valer
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_valer
Messages postés
140
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
26 juillet 2004

10 juin 2004 à 10:38
svp repondez...
Valer
0
HFanny
Messages postés
699
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
13 mai 2011
20
10 juin 2004 à 11:07
Bonjour,

je ne comprends pas bien ton problème.
Si tu sais quelle plage de données parcourir, il te suffit de mettre une variable total (comme l'a fait scoder), et de faire un If pour l'incrémenter !!

Je reprends à partir de ton code :

for p=0 to 50
if range("A1").offset(p)="finition" then
result = result + range("B8").Offset(p).Value
end if
next p


Par contre, tu devrais faire aussi un test pour savoir si tu additionnes bien avec une valeur numérique, avec la fonction IsNumeric().

Si ce que Scoder a dit ne te convient pas, pourrais tu réexpliquer mieux ton problème ?

Fanny
0
cs_valer
Messages postés
140
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
26 juillet 2004

10 juin 2004 à 11:18
1. j'ai un fichier avec des noms d'operation dans la colonne
2.a ces operation correspondent un temps dans la colonne D
3.si plusieurs opération ont le meme nom, elles ne sont pas forcement a la suite
4.j'ai quelques 500 fichiers a traiter , où les opérations sont disposées dans des ordres totalement différents.
5.je dois additionner le total des temps allouée a chaque opération ayant le meme nom

si tu as besoin de plus d'info fais moi signe
merci

je v qd meme tester ce que tu m'a dit, ca a pas l'air bete!! :-p
Valer
0
Vb Lover
Messages postés
221
Date d'inscription
vendredi 30 novembre 2001
Statut
Membre
Dernière intervention
13 février 2010
5
10 juin 2004 à 21:31
Si j'ai bien compris, le problème principal, c'est que les fonctions ne sont pas dans l'ordre. Il suffit donc simplement de les trier (fonction Sort ou SortSpecial)

et puis après tu fais comme tu veux

VB Lover
0