colorier 1 ligne sur 2 et masquer colonne à zero

KIM

XLDnaute Accro
Bonjour à vous toutes et tous,
J'ai un souci de presentation de mon tableau et demande votre aide.
1- Colorier une ligne sur deux:
La macro (du forum) colorie bien une ligne sur deux. Je souhaite seulement colorier les lignes une ligne sur deux mais de la colonne D à la colonne O c-a-d colorier seulement à l'interieur du tableau.

2-Masquer la colonne dont la somme est à 0
a- La derniere ligne du tableau contient la formule sommme de la colonne.
Je n'ai pas réussi par macro à masquer les colonnes dont le resultat de la somme est à zero.
b- comment dire que c'est la derniere colonne non vide ?

ci-joint un fichier exemple

Merci de votre aide
Bien amicalement
KIM [file name=col1.zip size=11669]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/col1.zip[/file]
 

Pièces jointes

  • col1.zip
    11.4 KB · Affichages: 41
T

toubib

Guest
bonjour KIM,

bon j'ai regardé vite fait ton problème par contre tu ne dis pas si les plages changent ou pas de position c'est à dire est ce que la somme des colonnes sera toujours sur la ligne 21 ou pas?
dans le cas ou ca serait fixe alors pour masquer les colonnes dont la valeur de la somme est égale à 0 ca donne ça:

Sub masque()

Dim r As Range, plage As Range

Set plage = Range('d21:eek:21')
'si les colonnes ne changent pas mais seulement les lignes ca donnerait ça:
'dl = Range('d65000').End(xlUp).Row
'Set plage = Range('d' & dl & ':eek:' & dl)

For Each r In plage
If r.Value = 0 Then
r.EntireColumn.Hidden = True
End If
Next r

End Sub

voila :)

Message édité par: toubib, à: 07/11/2005 13:15
 

soft

XLDnaute Occasionnel
Bonjour Kim, Toubib, le forum,

En partant du même postulat que Toubib (le tableau est fixe), je te propose les 2 procédures suivantes :

Code:
Sub Couleur()
    Dim I As Integer
    For I = 7 To 20 Step 2
        Range('D' & I & ':' & 'O' & I).Interior.ColorIndex = 15
    Next I
End Sub

Sub MasqueSiZero()
    Dim I As Integer
    For I = 4 To 15
        If Cells(21, I).Value = 0 Then
            Columns(I).Hidden = True
        Else
            Columns(I).Hidden = False
        End If
    Next I
End Sub
 

KIM

XLDnaute Accro
Bonjour Toubib, Soft et le forum,

Merci de votre reaction,
je confirme que le tableau n'est pas fixe.
La colonne de depart est figée,
parcontre il faut recalculer la derniere ligne non vide et la derniere colonne non vide.
Merci d'avance de votre aide
KIM
 
T

toubib

Guest
donc si la colonne de départ est figée moi je ferais ça:

Sub masque()

Dim r As Range, plage As Range, dc As Variant
Dim dl As Byte

dl = Range('d65000').End(xlUp).Row
dc = Cells(dl, Range('iv5').End(xlToLeft).Address(0, 0) 'il faut modifier le 5 si la ligne de tes intitulés n'est plus 5
Set plage = Range('d' & dl & ':' & dc)

For Each r In plage
If r.Value = 0 Then
r.EntireColumn.Hidden = True
End If
Next r

End Sub

voila :)
++ ;)
 

soft

XLDnaute Occasionnel
Mes 2 procédures pour tenir compte d'un tableau de dimensiona inconnues avec départ fixe.

Code:
Sub Couleur()
    Dim I As Long
    For I = 7 To Range('D7').End(xlDown).Row Step 2
        Range('D' & I & ':' & 'O' & I).Interior.ColorIndex = 15
    Next I
End Sub

Sub MasqueSiZero()
    Dim I As Long
    For I = 4 To Range('D5').End(xlToRight).Row
        If Cells(21, I).Value = 0 Then
            Columns(I).Hidden = True
        Else
            Columns(I).Hidden = False
        End If
    Next I
End Sub
 

KIM

XLDnaute Accro
Re,
A Soft,
Avec le meme fichier exemple,
1- la macro couleur s'est arretee à la 1ere ligne non vide,
elle n'a colorie que la ligne 7 et la ligne 9
2- La macro MasqueSiZero n'a masqué que la prmiere colonne dont la somme = 0 c-a-d col E,
Merci de votre aide
KIM
 
T

toubib

Guest
normalement comme ça ça marche, enfin j'espère :) (chez moi en tout cas ca marche)

Code:
Sub masque()

Dim r As Range, plage As Range
Dim dl As Byte
Dim der As Variant

dl = Range('d65000').End(xlUp).Row
der = Cells(dl, Range('iv5').End(xlToLeft).Column).Address(0, 0) 'il faut modifier le 5 si la ligne de tes intitulés n'est plus 5
Set plage = Range('d' & dl & ':' & der)

For Each r In plage
If r.Value = 0 Then
r.EntireColumn.Hidden = True
End If
Next r

End Sub


++ :)

Message édité par: toubib, à: 07/11/2005 16:10
 

Discussions similaires

Statistiques des forums

Discussions
312 301
Messages
2 087 029
Membres
103 436
dernier inscrit
PascalH