Masquer des lignes selon couleur sans modifier le résultat ...

Laeti3112 -  
 Laeti3112 -
Bonjour,

J'utilise cette formule afin de masquer dans mon tableau toutes mes lignes rouges (colorisées manuellement sans MFC) :

Sub test()
Dim X As Long
Rows.Hidden = False
For X = 1 To [A65536].End(xlUp).Row
If Range("A" & X).Interior.ColorIndex = 3 Then _
Rows(X).Hidden = True
Next X
End Sub

Jusque là tout va bien!
Le hic c'est que le montant de ces lignes rouges est pris en compte pour faire un total (en effet lignes rouges dans mon tableau = paiements débités). Et que lorsque j'applique ma formule ci dessus, le montant de mes totaux débités disparaît pour afficher #VALEUR!

Je calcule le montant de mon total débités avec cette formule :

Function SommeSiCouleur(Plage As Range, NumeroDeCouleur%) As Currency
Application.Volatile True
Dim wCell As Range
For Each wCell In Plage
If wCell.Interior.ColorIndex = NumeroDeCouleur Then
SommeSiCouleur = SommeSiCouleur + wCell.Value
End If
Next
End Function

'Formule à insérer dans cellule pour appeler la fonction
'=SommeSiCouleur($C$1:$C$34;3)

Ma question : comment masquer les lignes rouges de mon tableau sans pour autant affecter le calcul de leur montant total...

NB : Je précise que si je fais manuellement clic droit "masquer" sur les lignes rouges, elles disparaissent et mon montant n'est pas affecté...

Merci pour votre aide !!!

Cordialement+++



A voir également:

3 réponses

eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonjour,

Merci de déposer le fichier xls (réduit au nécessaire et anonymisé) sur cjoint.com et coller ici le lien fourni.

eric
1
Laeti3112
 
Merci eric pour votre collaboration.
Voici le lien :

http://www.cjoint.com/c/EGrnD5Eh1FN
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Ta fonction, volatile, est appelée inutilement à chaque masquage de ligne.
Et à cet instant .interior n'est pas lisible.
Tu peux suspendre les calculs et les rétablir ensuite :
Sub masquage()
    Dim X As Long
    Rows.Hidden = False
    'affichage de toutes les lignes
    Application.Calculation = xlCalculationManual
    For X = 1 To [A65536].End(xlUp).Row
        'pour x= 4 à dernière ligne non-vide en A
        If Range("A" & X).Interior.ColorIndex = 22 Then _
           Rows(X).Hidden = True
        'si le fond de la cellule Ax = 17 ou
        'si le fond de la cellule Ax = 28 alors
        'masquage ligne x = vrai
    Next X
    'X suivant
    Application.Calculation = xlCalculationAutomatic
End Sub

eric

PS: utilise la balise (icone : <>) pour mettre en forme ton code ici.
1
Laeti3112
 
Un grand Merci Eric, tout fonctionne parfaitement...

Bon week end !!!
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour

Peut être dans la fonction Somme tester si la ligne est masquée
http://www.cjoint.com/c/EGro1ZSZXlG

Cdlmnt
0