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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

yolojo

XLDnaute Occasionnel
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
 

Pièces jointes

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
 
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).
 

Pièces jointes

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.
 

Pièces jointes

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
16
Affichages
748
Réponses
26
Affichages
1 K
Retour