XL 2010 masquer des ligne vide dans un tableau

Hafi.alaoui

XLDnaute Junior
bonjour
merci de me trouver un code vba pour masquer les ligne vides, afin de remonter la ligne du total juste au dessous de la dernière ligne qui n'est pas vide de la feuille2 de mon fichier çi joint
merci
 

Pièces jointes

  • yahya.tester.xlsm
    24.6 KB · Affichages: 13

job75

XLDnaute Barbatruc
Bonjour yahya.be, le forum,

Dans ce genre de problème il est mieux d'utiliser des tableaux VBA, c'est plus rapide :
VB:
Private Sub CommandButton1_Click()
Dim tablo, nlig&, ncol%, j%, n&, i&, nmax&
tablo = Feuil1.[A3].Resize(21, 18) 'matrice, plus rapide, dimensions modifiables
nlig = UBound(tablo): ncol = UBound(tablo, 2)
ReDim resu(1 To nlig, 1 To ncol)
For j = 1 To ncol Step 3
    n = 0
    For i = 2 To nlig
        If tablo(i, j + 1) <> "" Then
            n = n + 1
            resu(n, j) = tablo(i, j)
            resu(n, j + 1) = tablo(i, j + 1)
            resu(n, j + 2) = tablo(i, j + 2)
        End If
    Next
    If n > nmax Then nmax = n
Next
'---restitution et masquage des lignes vides---
With [A3] 'modifiable
    .Resize(nlig, ncol) = resu
    If nmax Then .Resize(nmax).EntireRow.Hidden = False
    If nlig > nmax Then .Offset(nmax).Resize(nlig - nmax).EntireRow.Hidden = True
End With
End Sub
Bonne journée.
 

Pièces jointes

  • yahya.tester(1).xlsm
    30.5 KB · Affichages: 6

chris

XLDnaute Barbatruc
RE

Il n'y a pas de raison d'avoir de lignes vides dans un tableau structuré puisque la ligne de sous totaux se déplace au fur et à mesure...

Il suffirait de supprimer l'ensemble des lignes du dataBodyRange puis d'y ajouter les données voulues.

Il est cependant vrai qu'ici la structure est tout sauf normée...
 

Hafi.alaoui

XLDnaute Junior
Bonjour yahya.be, le forum,

Dans ce genre de problème il est mieux d'utiliser des tableaux VBA, c'est plus rapide :
VB:
Private Sub CommandButton1_Click()
Dim tablo, nlig&, ncol%, j%, n&, i&, nmax&
tablo = Feuil1.[A3].Resize(21, 18) 'matrice, plus rapide, dimensions modifiables
nlig = UBound(tablo): ncol = UBound(tablo, 2)
ReDim resu(1 To nlig, 1 To ncol)
For j = 1 To ncol Step 3
    n = 0
    For i = 2 To nlig
        If tablo(i, j + 1) <> "" Then
            n = n + 1
            resu(n, j) = tablo(i, j)
            resu(n, j + 1) = tablo(i, j + 1)
            resu(n, j + 2) = tablo(i, j + 2)
        End If
    Next
    If n > nmax Then nmax = n
Next
'---restitution et masquage des lignes vides---
With [A3] 'modifiable
    .Resize(nlig, ncol) = resu
    If nmax Then .Resize(nmax).EntireRow.Hidden = False
    If nlig > nmax Then .Offset(nmax).Resize(nlig - nmax).EntireRow.Hidden = True
End With
End Sub
Bonne journée.
Bonjour Monsieur
je viens de faire test du fichier je vois que ça marche très bien comme je veux,
merci infiniment
 

Hafi.alaoui

XLDnaute Junior
RE

Il n'y a pas de raison d'avoir de lignes vides dans un tableau structuré puisque la ligne de sous totaux se déplace au fur et à mesure...

Il suffirait de supprimer l'ensemble des lignes du dataBodyRange puis d'y ajouter les données voulues.

Il est cependant vrai qu'ici la structure est tout sauf normée...
oui je sais ça, mais si par exemple j'ajoute des clients,je vais chaque fois faire cela,pourquoi pas alors faire un bouton de commande pour mise à jour,veuillez voir la suggestion de JOB75
merci à vous
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous,
Pour tous vous saluer; peut-être en rajoutant ces lignes de code à la fin de votre code (ne pas oublier de déclarer n):
VB:
  Cells.EntireRow.Hidden = False
  With Range("a2").CurrentRegion: n = .Row + .Rows.Count: End With
  If n < 24 Then Range(n & ":" & 23).EntireRow.Hidden = True
 

Pièces jointes

  • yahya- masquer lignes- v1.xlsm
    25.7 KB · Affichages: 4

Hafi.alaoui

XLDnaute Junior
Re

Tu n'utilises par de tableau structuré (d'ailleurs ta structure n'est pas possible en l'état en tableau structuré) donc oublie mes remarques.

c'est quoi ? des chambres ?
oui ce sont des chambres et ce tableau filtré est la situation et la situation des personnes hébergées ayant le droit pour la restauration (petit-déjeuner) et bien JOB75 m'a donné une bonne solution.merci à vous,pour vos réponses et merci à JOB75 .
 

Discussions similaires

Réponses
7
Affichages
295

Statistiques des forums

Discussions
312 165
Messages
2 085 880
Membres
103 009
dernier inscrit
dede972