Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Somme évolutive avec VBA

adebrux

XLDnaute Occasionnel
Salut le forum !

En ce week end qui approche, j'ai encore de grande questions méthaphysiques à vous poser.

Je dois dans mon tableau, et à l'aide de VBA, réaliser la somme des valeurs contenues dans certaines cellules.

Le problème, c'est que je ne sais pas avant de lancer ma macro ou seront ces cellules.

En cours de macro, je rempli donc un tableau donnant les positions des résultats intermédiaires :
Code:
 prix_intermediaire(i) = x
x étant une variable définie dans certaine de mes procédures.

Lorsque je clique sur mon bouton 'finish', je lance donc le code suivant:
Code:
cells(5,10).formula =''
for j = 1 tu Ubound(prix_intermediaire)
       cells(5,10).formula ='=RC+ RC[(prix_intermediaire(j)-10)]'
next j

'...

Ce qui me donne mon code d'erreur préféré: le 1004, ou erreur d'éxécution,
Erreur définie par l'application ou par l'objet...

Je suppose que ca vient du fait que je fait appel à la cellulle 'mère' dans ma formule, mais je sais pas comment faire sinon.

Il y aurait pu avoir la solution cells(1,2).value = Cells(,).value + etc...
Mais ca ne peut pas marcher parceque le programme ne me génère que le corps des calcul et des choix, que donc g des #N/A partout et que ducoup, cette somme là ne marche pas du tout nom plus...

Merci de votre aide!!!

Arnaud

Message édité par: adebrux, à: 05/11/2005 20:33
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonsoir Arnaud, bonsoir le forum,

Je suis désolé mais je n'ai pas compris grand chose à tes explications, même associées à tes exemples de codes.

Tu n'aurais pas un fichier exemple ?

Amicalement
Charly
 

adebrux

XLDnaute Occasionnel
Je vais essyé d'être plus clair.

Lorsque j'exécute ma macro, je génère des résultats qui ne sont dans des colonnes différentes en fonction des choix que j'ai fais dans mon USF.
Afin de savoir ou sont placé ces résultat, j'enregistre dans un tableau leur numéro de colonne.

Ensuite, c'est là ou je bloque, je voudrais créer un code qui me permettrait de mettre dans une cellule la somme de tous les résultats précédents.

Comme les coordonnée des cellules à sommer sont dans un tableau, il faut que je créer une boucle (cf premier message du fil) avec un code du style
Code:
activecells.formula = 'RC + Cells(3, résultat(i))'
ou résultat(i) représente le numéro de colonne du iémé résultat intermédiaire.

Sauf que ca marche pas... [file name=departfonctionnel.zip size=24304]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/departfonctionnel.zip[/file]
 

Pièces jointes

  • departfonctionnel.zip
    23.7 KB · Affichages: 21

Charly2

Nous a quittés en 2006
Repose en paix
Bonsoir Arnaud, bonsoir le forum,

Je n'ai pas réussi à aller au bout de ton USF car il faut entrer des valeurs que je ne connais pas. Ceci dit, j'ai l'impression que c'est la partie de code :

Code:
For temp = 1 To 2 * NbofProcess(i) + 1
  Cells(2 * i + 4, decalage(i) + 1).Formula = '=Cells(2 * i + 4, decalage(i) + 1).Formula + RC[(finalprice(i,temp)-decalage-1)]'
Next temp

qui te pose problème (Procédure : Private Sub Cmdnext3_Click), non ?

Si c'est le cas, tu peux essayer de la transformer ainsi :

Code:
For temp = 1 To 2 * NbofProcess(i) + 1
  If temp = 1 Then
    Cells(2 * i + 4, decalage(i) + 1).FormulaR1C1 = '=RC[' & (finalprice(i, temp) - decalage - 1) & ']'
  Else
    Cells(2 * i + 4, decalage(i) + 1).FormulaR1C1 = Cells(2 * i + 4, decalage(i) + 1).FormulaR1C1 & '+ RC[' & (finalprice(i, temp) - decalage - 1) & ']'
  End If
Next temp

Tiens nous au courant...

Amicalement
Charly
 

Charly2

Nous a quittés en 2006
Repose en paix
Oups ! Petit oubli : pour la lisibilité du code, tu feras naturellement à l'initialisation de ta cellule (dans la même procédure) :

TaCellule.FomulaR1C1 = ''

A+
Charly
 

Discussions similaires

Réponses
0
Affichages
305
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…