probleme de calcul matriciel

probleme de calcul matriciel - VB/VBA/VBS - Programmation

Marsh Posté le 19-08-2010 à 21:47:17    

Bonjour
J'ai un probleme sur un tableau Excel contenant que des calculs matriciels (chaque cellule ayant une formule differentes) de ce type "=SOMME(SI(("mars"='MEP Opéra'!D2:DE2)*("1 Critique"='MEP Opéra'!D3:DE3);'MEP Opéra'!D4:DE4;0))".
Mon probleme est que ce fichier contient environ 500 cellules de ce type et je dois me placer sur chaque cellule et valider pour que le calcul se fasse.
J'aimerais faire une macro qui automatise cette validation, pour le moment je suis la piste suivante
------------------------------------------------
Sub matricielle()
    Range("B7" ).Select
    i = 28
    Do
    Range("B" & i).Select
    Selection.FormulaArray = _
        "=SUM(IF((""janvier""='MEP Opéra'!R[-25]C[-2]:R[-25]C[103])*(""1 Critique""='MEP Opéra'!R[-24]C[-2]:R[-24]C[103]),'MEP Opéra'!R[-22]C[-2]:R[-22]C[103],0))"
    i = i + 1
    Loop
    Range("G27" ).Select
End Sub
--------------------------------------------------
Mais cela ne valide pas la formule qu'il y a dans la cellule mais copie à la place celle de la macro, alors comment valider un calcul matriciel sans modifier la cellule.
MErci
 
Sebastien

Reply

Marsh Posté le 19-08-2010 à 21:47:17   

Reply

Marsh Posté le 25-08-2010 à 07:50:40    

Bonjour Sebastien,
 
Tu peux modifier ta formule par  
=SOMMEPROD(("mars"='MEP Opéra'!D2:DE2)*("1 Critique"='MEP Opéra'!D3:DE3)*'MEP Opéra'!D4:DE4) qui fait la même chose mais ne demande pas de valider chaque cellule.
 
Audrey

Reply

Marsh Posté le 25-08-2010 à 07:56:51    

Bonjour Sebastien,
 
Tu peux modifier ta formule par  
=SOMMEPROD(("mars"='MEP Opéra'!D2:DE2)*("1 Critique"='MEP Opéra'!D3:DE3)*'MEP Opéra'!D4:DE4) qui fait la même chose mais ne demande pas de valider chaque cellule.
 
Sinon si tu valide ta formule dans la première cellule, puis copie colle cette cellule dans les autres, tu ne devrais pas avoir besoin de valider chaque cellule.
 
Audrey

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed