SUPPRESSION lignes vides inutiles

  • Initiateur de la discussion Initiateur de la discussion KIM
  • Date de début Date de début

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 !

KIM

XLDnaute Accro
Bonjour le Forum,
J'ai besoin de votre aide pour la suppression de lignes dont les cellules de D à V sont vides ou à 0 (zero).
Pour une liste de 40 équipes, je calcule pour cahque equipe ce tableau et je le recopie dans un fichier resultat (classeur resultat joint). Il arrive que des cellules de D à V soient vides ou à 0 correspondantes aux données de la colonne C (GRA à GRE et Groupe 1 à Groupe 18).
Pour eviter d'imprimer des lignes et des pages inutiles, je souhaite supprimer, pour chaque equipe, les lignes inutiles c-a-d les lignes dont les cellules D à U sont vides ou à 0.

Merci de votre aide
Bon WE
KIM [file name=TDB11.zip size=30237]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/TDB11.zip[/file]
 

Pièces jointes

Bonjour Kim,

Si j'ai bien tout compris, tu veux supprimer les lignes qui répondent aux 2 critères suivants :
- en colonne C se trouve une chaine de caractères commençant par
'GR' (GRA, GRB, Groupe 5 ...)
- les colonnes D à U sont vides (donc leur somme=0)

Dans ce cs, je te propose la macro suivante :

Sub SupprLigVides()
DerLig! = Range('c65536').End(xlUp).Row
For Lig! = DerLig To 5 Step -1
If UCase(Left(Cells(Lig, 3), 2)) = 'GR' Then
Set MaPlage = Range('D' & Lig & ':U' & Lig)
If Application.WorksheetFunction.Sum(MaPlage) = 0 Then Rows(Lig).Delete
End If
Next Lig
End Sub

Ca convient-il ??

Bonne fin de semaine
 
Bonjour Rai, bonjour le forum,
Merci de ta reponse,
parcontre comment faire pour ne pas figer la condition dans la colonne C que le texte commence par 'GR'? Y-a-t-il moyen de dire que la cellule de la colonne C est non nulle?

J'ai beaucoup de tableau de ce type là, et je souhaite généralisé le code.
merci d'avance
Bon WE à vous tous
KIM
 
Re,
J'ai modifié ton code en remplacant
If UCase(Left(Cells(Lig, 3), 2)) = 'GR' Then
par
If UCase(Left(Cells(Lig, 3), 2)) <> NUL Then
et ça marche
parcontre ce code m'a supprimé toutes les insertions de Newpage
car à l'origine, après chaque tableau j'insérai une nouvelle page.
Comment dire à excel que: quand il trouve le mot BUDGET dans la colonne A, rajouter un newpage à la ligne (BUDGET) -1

Merci d'avance
KIM
 
re-,

Ta modification (remplacer 'GR' par NULL) fonctionne, mais dans ce cas il serait opportun de simplifier en :
If Cells(Lig, 3) <> Null Then

L'insertion de Newpage nécessite juste un test supplémentaire dans la boucle.
Ta macro deviendrait donc :

Sub SupprLigVides()
Derlig! = Range('c65536').End(xlUp).Row
For Lig! = Derlig To 5 Step -1
If Cells(Lig, 3) <> Null Then
Set MaPlage = Range('D' & Lig & ':U' & Lig)
If Application.WorksheetFunction.Sum(MaPlage) = 0 Then
Rows(Lig).Delete
End If
End If
If Cells(Lig, 1) = 'BUDGET' Then
ActiveSheet.HPageBreaks.Add Before:=Cells(Lig + (Lig > 1), 1)
End If
Next Lig
End Sub

Si Cells(Lig + (Lig > 1),1) t'intrigue, voilà une rapide explication.
Dans ton fichier, on trouve le mot 'Budget' (entre autres) en ligne 1.
Du coup, écrire Cells (Lig -1,1) pour insérer ton saut de page 1 ligne avant celle contenant 'budget' ne fonctionne pas (1-1 = 0).
Alors, on se sert de la logique booléenne.
(Lig>1) renvoie la valeur -1 (true) si le test est vérifié,
et la valeur 0 (false) si on atteint la ligne 1.

Bonne continuation.
 
Bonjour Rai, bonjour le forum,
J'ai testé ton code,
1- Pour l'execytion du code j'ai du changer le mot NULL par Nul
sinon rien ne se passe.
2- suppressions de lignes: le code me supprime toutes les lignes Budget (1ere ligne ) et la ligne 4 de chaque tableau sauf dans le premier tableau ces lignes sont conservées. Pour les garder j'ai du rajouter un chiffre qque par entre la colonne D et U
Y-a-t-il moyen dans le test de dire si la somme des cellules D à U = 0 et les cellules sont vides pour pouvoir garder les lignes avec du texte. C'est bizarre car il conserve les lignes 3 et 5.
3- Pour l'insertion d'un newpage avec la ligne BUDGET, il conserve toujours les anciens newpage, ce qui fait que j'ai des pages inserees vides. est-il possible de supprimer tous les newpage au debut du code avant d'inserer les nouveaux.
4- J'essaye d'executer le meme code sur une autre feuille du meme type j'ai le message d'erreur suivant:
'Impossible de lire la propriété Sum de la classe WorksheetFunction'
Y-a-t-il une explication à ce message d'erreur?
Merci d'avance
Amicalement
KIM
 
Bonjour à vous tous,
1- Pour inserer un newpage avant la ligne BUDGET, il faut supprimer les anciens. j'ai rajouté au debut du code l'instruction suivante:
ActiveSheet.ResetAllPageBreaks
et ça fonctionne, je n'ai plus de pages blanches.

2- suppressions de lignes: le code me supprime toutes les lignes Budget (1ere ligne ) et la ligne 4
de chaque tableau sauf dans le premier tableau ces lignes sont conservées. Pour les garder j'ai du
rajouter un chiffre qque par ligne entre la colonne D et U
Y-a-t-il moyen dans le test de dire si la somme des cellules D à U = 0 et les cellules sont vides
pour pouvoir garder les lignes avec du texte. C'est bizarre car il conserve les lignes 3 et 5 et non la 1 et la 4 de chaque tableau.
merci et Bonne journee
KIM
 
- 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
3
Affichages
436
Retour