[VBA] comment cacher une ligne si TOUTE les cellules de la ligne sont = à 0 ?

Skaori

XLDnaute Nouveau
Bonjour,

J'ai un graaaaaaaaaaaand tableau à exploiter (10 colonnes, 4000 lignes), cependant pour le rendre plus clair, je voudrais cacher certaines lignes.

Je voudrais cacher seulement les lignes dont les 10 colonnes valent 0 et seulement celles-là.

Je cherche, j'essaye, je re-cherche, je me casse là tête mais je m'avoue vaincu..

Please help...!

Merci d'avance,
Skao
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : [VBA] comment cacher une ligne si TOUTE les cellules de la ligne sont = à 0 ?

Bonjour Skaori, bonjour le forum,

la macro ci-dessous fonctionne si :
- c'est la colonne A qui détermine la dernière ligne éditée
- ce sont les dix premières colonnes qu'il faut considérer...
sinon il te faudra adapter ou être plus explicite.
Code:
Sub Macro1()
Dim li As Integer 'déclare la variable li (LIgne)
For li = 1 To Range("A65536").End(xlUp).Row 'boucle sur toutes les cellules éditées de la colonne A
    'si la somme des dix premières cellules de la ligne est nulle, masque la ligne
    If Application.WorksheetFunction.Sum(Range(Cells(li, 1), Cells(li, 10))) = 0 Then Rows(li).Hidden = True
Next li 'prochaine cellule de la boucle
End Sub
 
Dernière édition:

CBernardT

XLDnaute Barbatruc
Re : [VBA] comment cacher une ligne si TOUTE les cellules de la ligne sont = à 0 ?

Bonjour Skaori,

Bonjour Robert

Une macro exemple pour supprimer les lignes d'un tableau dont la colonne 10 est égale à 0

Le principe est de partir de la dernière ligne du tableau vers la première ligne, ici la 2.

Sub SupprLignes()
Dim Derlig As Integer, i As Integer
With Sheets("Feuil1")

Derlig = .Range("J65536").End(xlUp).Row
For i = Derlig To 2 Step -1
If Application.WorksheetFunction.Sum(Range(.Cells(i, 1), .Cells(i, 10))) = 0 Then
.Cells(i, 1).EntireRow.Hidden = True
End If
Next i
End With
End Sub

J'ai repris la fonction de ROBERT Application.WorksheetFunction.Sum(Range(.Cells(i, 1), .Cells(i, 10))) = 0 avec des points en plus hi hi .....
 
Dernière édition:

Guiv

XLDnaute Occasionnel
Re : [VBA] comment cacher une ligne si TOUTE les cellules de la ligne sont = à 0 ?

Bonjour à tous,

Juste pour chercher la petite bête...
Code:
Application.WorksheetFunction.Sum(Range(.Cells(i, 1), .Cells(i, 10))) = 0

OK, la ligne sera masquée si la somme des valeurs des 10 cellules est nulle...ce qui n'est pas la même chose que "la valeur des 10 cellules est nulle", ce qui me semble être la demande de Skaori. (on peut imaginer une valeur à -8 , une à 6 et une à 2 par exemple)

Il faudrait donc tester chaque cellule de la ligne:
Code:
if .cells(i,1)=0 and .cells(i,2)=0 and.....

ou une deuxième boucle sur les colonnes.

Cordialement,
Guiv
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : [VBA] comment cacher une ligne si TOUTE les cellules de la ligne sont = à 0 ?

Bonjour le fil, bonjour le forum,

Ha p... de cafard !!! Tu as tout as fait raison Guiv mais il faut dire que Skaori n'a pas été très bavard sur ce coup là... J'attends qu'il daigne se manisfester pour voir avec lui les modifs à apporter.
 

CBernardT

XLDnaute Barbatruc
Re : [VBA] comment cacher une ligne si TOUTE les cellules de la ligne sont = à 0 ?

Re,


Bonjour Guiv

Bien vu pour la somme qui ne répond pas exactement à la question sans données du problème plus explicites.:confused:


C'est la faute à Robert ! :eek::eek:

Avant de modifier, j'avais compris que la colonne 10 représentait la somme des colonnes 1 à 9. :rolleyes:

quant à la petite bête, excellent !
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : [VBA] comment cacher une ligne si TOUTE les cellules de la ligne sont = à 0 ?

Bonjour le fil,

Peut-être l'un de ces calculs :

Code:
If Application.CountIf(Range(Cells(li, 1), Cells(li, 10)), 0) = 10 Then

'ou

If Application.CountBlank(Range(Cells(li, 1), Cells(li, 10))) = 10 Then

'voire

If Application.CountIf(Range(Cells(li, 1), Cells(li, 10)), 0) + Application.CountBlank(Range(Cells(li, 1), Cells(li, 10))) = 10 Then

A+
 

Staple1600

XLDnaute Barbatruc
Re : [VBA] comment cacher une ligne si TOUTE les cellules de la ligne sont = à 0 ?

Bonsoir à tous

Une variante ( histoire de saluer les habitués) et pour le fun :)

Code:
Sub Cache_Cache()
Dim krit As Range
    With [A1]
    Set krit = .End(-4161)(1, 3).Resize(2)
    krit.Item(2).FormulaLocal = "=NON(NB.SI(A2:J2;0)=10)"
    .CurrentRegion.AdvancedFilter xlFilterInPlace, krit, False
    End With
Set krit = Nothing
End Sub
 
Dernière édition:

pitou67

XLDnaute Nouveau
Re : [VBA] comment cacher une ligne si TOUTE les cellules de la ligne sont = à 0 ?

Bonjour à tous
Depuis plusieurs jours je n'arrive pas à mettre au point le vba me permettant de masquer ou de réafficher les lignes dont les cellules colonnes A sont égales à zéro puis d'imprimer lorsque les lignes sont masquées, dans mes "feuil de présence 1 session" et "2 session".
Si vous pouviez m'aider cela me rendrez un grand service.
Je me permets de vous joindre le fichier.
D'avance merci
Pitou67
 

Pièces jointes

  • 2 session Essai01.xlsx
    16.2 KB · Affichages: 55
  • 2 session Essai01.xlsx
    16.2 KB · Affichages: 58
  • 2 session Essai01.xlsx
    16.2 KB · Affichages: 65
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 176
Messages
2 085 966
Membres
103 069
dernier inscrit
jujulop