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

  1. random Messages postés 1612 Statut Membre 155
     
    ben tu écris une fonction ou tu tries les cellules rouges manu
    0
    1. 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
  2. random Messages postés 1612 Statut Membre 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
    1. 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
    2. 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
    3. 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
  3. 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
    1. 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
  4. 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