Addition sous excel en vba

Signaler
Messages postés
140
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
26 juillet 2004
-
Messages postés
221
Date d'inscription
vendredi 30 novembre 2001
Statut
Membre
Dernière intervention
13 février 2010
-
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

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

si tu veux par exemple additionner les cellules A2 à A8 :

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

si tu veux par exemple additionner les cellules A2 à A8 :

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

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
Messages postés
140
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
26 juillet 2004

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
Messages postés
140
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
26 juillet 2004

svp repondez...
Valer
Messages postés
699
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
13 mai 2011
18
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
Messages postés
140
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
26 juillet 2004

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
Messages postés
221
Date d'inscription
vendredi 30 novembre 2001
Statut
Membre
Dernière intervention
13 février 2010
4
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