XL 2013 Macro - Supp lignes vides si formules ""

CélineNdl

XLDnaute Nouveau
Bonjour,

Voici un fichier, ayant pour base, l'extraction des tarifs d'un client.
Souhaitant mettre en forme, et répertorier par "chapitre", j'ai fait différentes formules.
Mais chaque client a un nombre différent de lignes dans chaque chapitre.
Je souhaiterais donc automatiser la suppression des lignes dont la formule donne "" dans chaque tableau.

J'ai testé cette macro :

Sub supprimerLigneVide()
For lig = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If Application.CountBlank(Rows(lig)) = Application.Columns.Count Then
Rows(lig).EntireRow.Delete
End If
Next
End Sub

Elle fonctionne si mon fichier est léger mais si je suis sur un client avec beaucoup de lignes de tarif, elle mouline en restant à 0%...

Je vous remercie par avance si vous prenez le temps de me donner un coup de pouce.

Bonne journée,

Céline
 

Pièces jointes

  • V.FORUM.xlsm
    1.7 MB · Affichages: 34

vgendron

XLDnaute Barbatruc
Hello et bienvenu

Bon. je viens de regarder ton fichier.. et honnetement.. je ne comprend pas grand chose..:-D

quelques questions pour commencer à clarifier

Quelle est la feuille de données initiales? "Analyse base article " ?
de cette feuille... tu en fais quoi?
C'est quoi un chapitre?

de quelle feuille souhaites tu supprimer des lignes??
 

CélineNdl

XLDnaute Nouveau
Bonjour Vgendron,

Merci de prendre le temps d'essayer de comprendre, je vais tenter d'être claire :)

J'extrais dans une premier temps "EXTRACT CLIENT", ce se sont les tarifs du client.
Mais j'ai besoin de les trier par Famille Produit.
Je vais donc chercher cette info dans "Analyse base article".
Les familles étant trop précises, je souhaite les regrouper dans des familles plus larges, que je définis dans "TABLE FAMILLE".
La feuille "TARIFS 2018" c'est ma "mise en forme".
J'ai donc fait des formules pour obtenir un tri par Famille Produit, soit des chapitres.
J'ai tiré ma formule sur beaucoup de lignes dans chaque tableau, mais je souhaite supprimer toutes celles dont la formule donne "".
 

vgendron

XLDnaute Barbatruc
Hello
un essai avec ce code.. un peu plus rapide .. mais qui reste long quand meme . je trouve

VB:
Sub ViderTablo()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual


For Each tablo In ActiveSheet.ListObjects
    'MsgBox tablo.Name
    Debut = Range(tablo).Row
    fin = Debut + Range(tablo).Rows.Count - 1
    nb = 0
    For Each CodeArt In Range(tablo.Name & "[Code Article]")
        If CodeArt <> "" Then
            nb = nb + 1
        Else
            Exit For
        End If
      
    Next CodeArt
    If nb = 0 Then nb = 1
    tablo.Resize Range("$E$" & Debut - 1 & ":$H$" & Debut + nb - 1)
    Rows(Debut + nb & ":" & fin).Delete Shift:=xlUp

Next tablo
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub


autre solution.. c'est ecrire un code qui remplit les tableaux avec le nombre suffisant de données.. ===> plus de formule
 

vgendron

XLDnaute Barbatruc
Me revoici avec une solution plus rapide
mais qui implique quelques modifs
==> plus de table (ca me pose trop de souci lorsque j'insère des lignes.. un coup ca veut bien. un coup.. ca passe plus...)

en partant d'une feuille avec des tableaux vides (feuille Template renommée en Tarifs 2018)
clic sur bouton en haut à gauche

dans la feuille Extract client.. plus besoin des colonnes "Occurence et ... qui te servaient pour compter le nombre de lignes
 

Pièces jointes

  • V.FORUM.xlsm
    1.4 MB · Affichages: 914

vgendron

XLDnaute Barbatruc
et je viens de voir tes deux formules en colonnes A et B de la feuille "Extract Client"
si (estna(recherche();"";(recherche())
en gros.. dans la meme formule.. tu fais deux fois la recherche....
remplace plutot par ceci
A3=SIERREUR(RECHERCHEV(I3;'Analyse base article'!$A$2:$H$47064;8;FAUX);"")
B3=SIERREUR(RECHERCHEV(A3;'TABLE FAMILLE'!$A$3:$C$73;3;FAUX);"")
 

CélineNdl

XLDnaute Nouveau
Bonjour,

Merci pour ce fichier, l'idée est beaucoup mieux.
En revanche, après une nouvelle extraction client, la colonne "Unité de Tarification" ne se remplit pas toujours correctement.
Parfois j'ai du "0", parfois "#VALEUR", pareil pour les libellé produits.

Et comment changer la couleur des lignes qui vont être générées ?
 

Statistiques des forums

Discussions
311 720
Messages
2 081 909
Membres
101 836
dernier inscrit
karmon