ne pas faire apparaitre les lignes avec totale=0  Sujet résolu

Pour toutes vos questions à propos d'Excel ...

Re: ne pas faire apparaitre les lignes avec totale=0

Messagepar dubois » 20 Mars 2010, 18:14

Bonjour,
si tu rajoute des colonnes, il te faudra modifier ce code
Code: Tout sélectionner
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("d2:f" & _
        [c65000].End(xlUp).Row)) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        Call MasqueTotZéro
    End If
End Sub

cette partie: Range("d2:f"
Claude
Faire simple, c'est ce qui est le plus compliqué ! et vice versa (à méditer)
dubois
Passionné d'Excel
 
Messages: 9256
Inscription: 08 Déc 2007, 12:03
Localisation: MEUDON région parisienne
Version Excel: Vista Office 2007FR

Re: ne pas faire apparaitre les lignes avec totale=0

Messagepar FRANCKIN » 22 Mars 2010, 15:20

Bonjour Claude

Je suis vraiment désolé de te solliciter de nouveau. Ta soluce fonctionne super bien, mais le souci c'est que le fichier que je t'ai envoyé, par souci d'allègement à été tronqué. Tout d'abord, après l'onglet base, j'ai 2 onglets (mode opératoire et acceuil) qu'il ne faut pas traiter, et en plus dans les autres onglets il y a une autre colonne avant la colonne A c'est à dire que dans le vrai fichier la colonne A devient B. J'ai essayé de faire des modifs, mais rien ni fait. Es qu'il y a une solution, ou est infaisable.

Merci d'avance pour ton aide
FRANCKIN
Membre fidèle
 
Messages: 103
Inscription: 25 Fév 2009, 16:09
Version Excel: 2003fr

Re: ne pas faire apparaitre les lignes avec totale=0

Messagepar dubois » 22 Mars 2010, 18:51

Bonjour à tous,

Pas de problème, remèdes:
1) pour les feuilles à ne pas traiter, tu les places en tête,
si 2 feuilles => 2+ Base = 3
la boucle macro commencera à traiter à partir de la feuille 4
remplacer:
Code: Tout sélectionner
For i = 2 To Worksheets.Count

par:
Code: Tout sélectionner
For i = 4 To Worksheets.Count

---------------------
2) toutes les feuilles doivent avoir le total dans la même colonne
sur mon fichier c'est "N"
arrange-toi pour cela et si tu as le total en colonne "O", remplace la macro par celle-ci:
Code: Tout sélectionner
Sub MasqueTotZéro() 'en partant de la feuille base
Dim i As Byte
Application.ScreenUpdating = False
    For i = 4 To Worksheets.Count
        With Worksheets(i)
            .Activate
            On Error Resume Next
                .ShowAllData
            On Error GoTo 0
            Cells(2, 15) = "=$o4<>0"
            Range("a3:o" & [a65000].End(xlUp).Row) _
            .AdvancedFilter Action:=xlFilterInPlace, _
            CriteriaRange:=Range("o1:o2"), Unique:=False
            Cells(2, 15).ClearContents
        End With
    Next
End Sub

Claude
Faire simple, c'est ce qui est le plus compliqué ! et vice versa (à méditer)
dubois
Passionné d'Excel
 
Messages: 9256
Inscription: 08 Déc 2007, 12:03
Localisation: MEUDON région parisienne
Version Excel: Vista Office 2007FR

Re: ne pas faire apparaitre les lignes avec totale=0

Messagepar FRANCKIN » 22 Mars 2010, 20:13

Encore merci Claude. Je teste et te tiens au courant

Bonne fin de journée
FRANCKIN
Membre fidèle
 
Messages: 103
Inscription: 25 Fév 2009, 16:09
Version Excel: 2003fr

Re: ne pas faire apparaitre les lignes avec totale=0

Messagepar dubois » 22 Mars 2010, 21:46

re,

en relisant, je m'aperçois qu'une erreur s'est glissée dans la macro, je la remet corrigée
Code: Tout sélectionner
Sub MasqueTotZéro() 'en partant de la feuille base
Dim i As Byte
Application.ScreenUpdating = False
    For i = 4 To Worksheets.Count
        With Worksheets(i)
            .Activate
            On Error Resume Next
                .ShowAllData
            On Error GoTo 0
            Cells(2, 15) = "=$o4<>0"
            Range("a3:o" & [b65000].End(xlUp).Row) _
            .AdvancedFilter Action:=xlFilterInPlace, _
            CriteriaRange:=Range("o1:o2"), Unique:=False
            Cells(2, 15).ClearContents
        End With
    Next
End Sub

Bizarre ! l'aperçu ne reflète pas le code original, sur cette ligne: çà rajoute amp; devant [b65000]
Code: Tout sélectionner
Range("a3:o" & [b65000].End(xlUp).Row) _
.AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("o1:o2"), Unique:=False

il faut donc effacer ce amp;
--------------------------
tu en profiteras pour remplacer aussi :
Code: Tout sélectionner
Sub AfficherTout()
Dim i As Byte
    For i = 4 To Worksheets.Count
        With Worksheets(i)
            On Error Resume Next
            .ShowAllData
            On Error GoTo 0
        End With
    Next
End Sub

Je préviens Sébastien
Claude
Faire simple, c'est ce qui est le plus compliqué ! et vice versa (à méditer)
dubois
Passionné d'Excel
 
Messages: 9256
Inscription: 08 Déc 2007, 12:03
Localisation: MEUDON région parisienne
Version Excel: Vista Office 2007FR

Re: ne pas faire apparaitre les lignes avec totale=0

Messagepar Sébastien » 22 Mars 2010, 23:14

Bonsoir,

Le problème est réglé.

Merci Claude :wink:

Cordialement,
Image
Avatar de l’utilisateur
Sébastien
Administrateur
 
Messages: 1182
Inscription: 04 Déc 2004, 17:12
Localisation: Sion
Version Excel: 2002 FR, 2010 FR

Re: ne pas faire apparaitre les lignes avec totale=0  Sujet résolu

Messagepar FRANCKIN » 23 Mars 2010, 12:07

Encore merci Claude

Le résultat obtenu est exactement celui souhaité. Bravo

Cordialement
FRANCKIN
Membre fidèle
 
Messages: 103
Inscription: 25 Fév 2009, 16:09
Version Excel: 2003fr

Précédente

Retourner vers Excel - VBA

 


  • Sujets similaires
    Réponses
    Vus
    Dernier message

Utilisateurs en ligne

Utilisateurs parcourant ce forum: Bing [Bot], Google [Bot] et 6 invités