Moyene avec selection des valeurs à prendre
Résolu
godzila182
-
ccm81 Messages postés 11033 Statut Membre -
ccm81 Messages postés 11033 Statut Membre -
Bonjour,
Je cherche a créer une fonction qui permettent de donner la variation entre la somme de 2 colonne. Si l'utilisateur met une des cases de la colonne 1 en rouge, on ne tiendra pas compte de cette valeur ni de la case au niveau de la même ligne dans la colonne 2.
Par exemple :
1 3
5 2
4 8
la fonction renvoie le résultat de 13/10
si l'utilisateur met le 5 en rouge la fonction renvoie le résultat de 11/5 (on enleve le 5 et le 2)
J'ai créé une fonction de ce type :
Public Function sommeCouleur(plage, pal As Range)
Application.Volatile
For Each c In plage
If Not (c.Interior.ColorIndex = 3) And (WorksheetFunction.IsNumber(c) = True) Then
tot = tot + c.Value
End If
Next c
For Each d In pal
If Not (d.Interior.ColorIndex = 3) And (WorksheetFunction.IsNumber(d) = True) Then
toto = toto + d.Value
End If
Next d
sommeCouleur = toto / tot
End Function
mais il manque une indication pour que ca marche. Si quelqu'un avait une solution.
Merci d'avance
Je cherche a créer une fonction qui permettent de donner la variation entre la somme de 2 colonne. Si l'utilisateur met une des cases de la colonne 1 en rouge, on ne tiendra pas compte de cette valeur ni de la case au niveau de la même ligne dans la colonne 2.
Par exemple :
1 3
5 2
4 8
la fonction renvoie le résultat de 13/10
si l'utilisateur met le 5 en rouge la fonction renvoie le résultat de 11/5 (on enleve le 5 et le 2)
J'ai créé une fonction de ce type :
Public Function sommeCouleur(plage, pal As Range)
Application.Volatile
For Each c In plage
If Not (c.Interior.ColorIndex = 3) And (WorksheetFunction.IsNumber(c) = True) Then
tot = tot + c.Value
End If
Next c
For Each d In pal
If Not (d.Interior.ColorIndex = 3) And (WorksheetFunction.IsNumber(d) = True) Then
toto = toto + d.Value
End If
Next d
sommeCouleur = toto / tot
End Function
mais il manque une indication pour que ca marche. Si quelqu'un avait une solution.
Merci d'avance
A voir également:
- Moyene avec selection des valeurs à prendre
- Prendre photo avec webcam - Guide
- Prendre une photo avec son mac - Guide
- Prendre des mesures avec son telephone - Guide
- Moyenne avec coefficient excel - Guide
- Ce coeur n'est plus a prendre adopte ✓ - Forum Mail
3 réponses
Essaies comme ceci
Cdlmnt
Public Function MoyCoul(plage1 As Range, plage2 As Range) As Single Dim li As Long, nbli As Long, n As Long, total As Single Application.Volatile nbli = plage1.Rows.Count total = 0 n = 0 For li = 1 To nbli If plage1.Cells(li, 1).Interior.ColorIndex <> 3 Then n = n + plage1.Cells(li, 1) total = total + plage2.Cells(li, 1) End If Next li MoyCoul = total / n End Function
Cdlmnt
Pour faire joli, tu peux ajouter une vérification du nombre de lignes qui doit être identique dans les deux plages
Si c'est fini, merci de mettre le sujet à Résolu (sous le titre de ta question)
Bonne fin de journée
Public Function MoyCoul(plage1 As Range, plage2 As Range)
Dim li As Long, nbli As Long, n As Long, total As Single
Application.Volatile
nbli = plage1.Rows.Count
If nbli <> plage2.Rows.Count Then MoyCoul = "ERREUR": Exit Function
total = 0
n = 0
For li = 1 To nbli
If plage1.Cells(li, 1).Interior.ColorIndex <> 3 Then
n = n + plage1.Cells(li, 1)
total = total + plage2.Cells(li, 1)
End If
Next li
MoyCoul = total / n
End Function
Si c'est fini, merci de mettre le sujet à Résolu (sous le titre de ta question)
Bonne fin de journée
Si j'enleve A3, j'enleve aussi B3