XL 2016 supprimer des lignes avec formule dont le contenu est vide

yolojo

XLDnaute Junior
Bonjour à tous
Je reviens vers vous pour un petit problème de mise en page.
Je vous joint le fichier qui sera plus clair que de long discours.
Néenmoins voici quelques explications :
J'ai un fichier avec deux onglets.
- Le premier représente la liste de mes clients avec nom, prénoms et montant de facture.
- Le second est un récapitulatif des clients ayant une facture.
J'ai volontairement limité mon nombre de client à 6, mais dans la version definitive il y en plus de 1000.
Le soucis est dans l'onglet "Recap", il laisse des lignes vides à chaque client n'ayant pas de facture.
En fait, ce ne sont pas vraiment des lignes vides car il y a des formules dedans mais qui donne un résultat nul !
Je souhaiterais avoir une astuces pour que ces lignes n'apparaissent plus et que l'on retrouve une liste continue de client ayant une facture ? (Comme l'exemple dans le fichier)
Merci d'avance
Cordialement
 

Fichiers joints

Robert

XLDnaute Barbatruc
Bonsoir Yolojo, bonsoir le forum,

Essaie comme ça :

VB:
Sub Macro1()
Dim R As Worksheet 'déclare la variable R (onglet Recap)
Dim TV As Variant 'déclare la varaible TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)

Set R = Worksheets("recap") 'définit l'onglet R
TV = R.Range("A2").CurrentRegion 'définit le tableau de valeurs TV
For I = UBound(TV, 1) To 2 Step -1 'boucle inversée de la dernière ligne du tableau des valeurs TV à la ligne 2
    If TV(I, 1) = "" Then R.Rows(I + 1).Delete 'si la donnée ligne I colonne 1 de TV est vide, supprime la ligne I + 1
Next I 'prochaine ligne de la boucle
End Sub
 

job75

XLDnaute Barbatruc
Bonjour yolojo, Robert,

Formule matricielle en recap!A3 :
VB:
=SIERREUR(INDEX(liste!A:A;PETITE.VALEUR(SI(liste!$C$3:$C$8<>"";LIGNE(liste!$C$3:$C$8));LIGNES(A$3:A3)));"")
à valider par Ctrl+Maj+Entrée et tirer à droite et vers le bas.

A+
 

Fichiers joints

job75

XLDnaute Barbatruc
Avec un tableau Excel structuré en feuille "liste" plus besoin d'adapter la formule (matricielle) en recap!A3 :
Code:
=SIERREUR(INDEX(Tableau1;PETITE.VALEUR(SI(Tableau1[Facture]<>"";LIGNE(Tableau1[Facture])-LIGNE(Tableau1[#En-têtes]));LIGNES(A$3:A3));COLONNES($A3:A3));"")
Fichier (2).
 

Fichiers joints

job75

XLDnaute Barbatruc
Si l'on préfère le VBA voyez le fichier joint et cette macro dans le code de la feuille "recap" :
VB:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
[A2].CurrentRegion.Delete xlUp 'RAZ
Sheets("liste").[A2].CurrentRegion.Copy [A2] 'copier-coller
With [A2].CurrentRegion
    On Error Resume Next 'si aucune SpecialCell
    Intersect(.Columns(3).SpecialCells(xlCellTypeBlanks).EntireRow, .Cells).Delete xlUp
End With
End Sub
Elle se déclenche quand on active la feuille.
 

Fichiers joints

yolojo

XLDnaute Junior
Merci beaucoup pour vos réponses
La version de job75 me parait très bien car beaucoup plus simple que le VBA et en plus elle fonctionne nickel
Une petite explication sur le fonctionnement de cette formule pourrait me permettre de la réutiliser pour d'autres application
Encore merci
 

Discussions similaires


Haut Bas