Petit pb de VB sur excel

frederic R -  
 random -
Bonjour!

Je voudrai effectuer en A1 l'opération suivante:
SOMMEPRODUIT[(valeur des cases de couleur rouge(exA5))*(valeur des cases dans la colonne précédent chaque cellule rouge (ex A4))]/(SOMME des cellules précédent chaque cellule rouge)

Quelqu'un peut me proposer une procédure?

4 réponses

random Messages postés 1612 Date d'inscription   Statut Membre Dernière intervention   155
 
ben tu écris une fonction ou tu tries les cellules rouges manu
0
frederic R
 
t gentil mais ça m'avance pas car le nb de cellules rouges est variable donc le triage manu c pas trop ça...
si tu as d'autres bonnes idées...
0
random Messages postés 1612 Date d'inscription   Statut Membre Dernière intervention   155
 
par contre pourquoi ces cellules sont elles rouges ?
si cela dépend d'une condition logique
tu mets dans la case à coté
si(conditionlogiquequimetlacelluleenrouge;celluleenrouge*precedente;0)
tu sommes cette colonne et tu la divises par le total des rouges
0
frederic R
 
il n'y a pas de condition logique l'emploi de la couleur sert a différencier différents types d'informations je voudrai écrire une boucle IF...THEN mais je ne connais pas exactement la démarche pour écrire une telle procédure
0
frederic R
 
il n'y a pas de condition logique l'emploi de la couleur sert a différencier différents types d'informations je voudrai écrire une boucle IF...THEN mais je ne connais pas exactement la démarche pour écrire une telle procédure
0
frederic R
 
il n'y a pas de condition logique l'emploi de la couleur sert a différencier différents types d'informations je voudrai écrire une boucle IF...THEN mais je ne connais pas exactement la démarche pour écrire une telle procédure
0
random
 
essaye ca
Function spr(plage As Range, coul As Integer) As Double
Dim par As Range
Dim dep As Integer
Dim mult As Double
Dim spro As Double
Dim ss As Double
dep = plage.Column
For Each par In plage
If par.Column = dep Then
mult = par.Value
Else
If par.Interior.ColorIndex = coul Then
spro = spro + (mult * par.Value)
ss = ss + par.Value
End If
End If
Next
spr = spro / ss
End Function
Function couleur(a As Range) As Integer
couleur = a.Interior.ColorIndex
End Function
tu copies les deux fonctions dans un moduke
tu te mets dans une cellule
et tu tapes=spr(maplage;couleur(adressed'unecellulerouge))
évidemment ca ne gère pas les erreurs
0
frederic R
 
ok random je te remercie!
Par contre quand je tape
spr(maplage;couleur(adressed'unecellulerouge))
qu'est ce que je rentre pour maplage: la ligne sur laquelle je veux travailler??
et le résultat va se mettre dans quelle cellule?

...désolé je suis vraiment novice en VB...
0
random
 
maplage=les cellules qui vont composer la somme des produits
tu tapes cela dans la cellule dans lequel tu veux obtenir le résultat
cela marche avec deux colonnes consécutives dont les rouges
sont à droite
par contre c'est la fonction qui va sélectionner les rouges
0