Supprimer les lignes contenant moins de 7 valeurs

Résolu
Keyran -  
 Keyran -
Bonjour,

J'ai sur Excel un tableau "à trous" entre la 20e et la 30e colonne (environ 2000 lignes), dont je voudrais supprimer les lignes si elles contiennent moins de 7 valeurs, tout en laissant le reste de ma feuille intouché.
J'ai trouvé sur internet des programmes permettant de supprimer une cellule ou une ligne entiere si elle était vide, mais aucun avec ce type de condition, donc novice que je suis, j'aurais besoin d'un coup de main.

Je mets en pièce jointe mon fichier entier. Il comprend déjà un macro qui me permet d'aligner mes données comme souhaité, et je souhaiterais le compléter.
https://cjoint.com/c/HFflcsLTPat

Merci d'avance.
A voir également:

2 réponses

danielc0 Messages postés 1856 Date d'inscription   Statut Membre Dernière intervention   229
 
Bonjour,

Est-ce que tu es sûr de tes numéros de colonnes ?

Cordialement.

Daniel
0
Keyran
 
Non effectivement, je m'étais trompée, désolée.
C'est de 30 à 39 que je souhaite compter et de 29 à 39 que je souhaite supprimer.
0
titeufdu89 Messages postés 374 Date d'inscription   Statut Membre Dernière intervention   38
 
Bonjour,

Colle cette macro dans l'exporateur de projet visual basic dans la feuille concernée et exécute la.
Tu devrais obtenir le résultat escompté.

Sub supprimer_ligne()
Dim l, c, fin As Integer
Dim cpte As Integer

'détermine la fin du tableau en fonction de la colonne A
fin = Range("A66536").End(xlUp).Row 'peut être remplacé par un chiffre comme 2000

'pour chaque du tableau
For l = 1 To fin
cpte = 0

'Pour chaque cellule entre les colonnes 20 et 30
For c = 20 To 30 Step 1
'si cellule non vide, incrémente les compteur
If Cells(l, c) <> "" Or Cells(l, c) <> 0 Then
cpte = cpte + 1
End If
Next c

'si le compteur inférieur à 7
If cpte < 7 Then
'supprime la ligne
Rows(l).Delete
End If
Next l

End Sub

Bonne journée
0
titeufdu89 Messages postés 374 Date d'inscription   Statut Membre Dernière intervention   38
 
Je viens d'ouvrir ton fichier et il me semble que ce sont plutôt les colonnes de 29 a 39 que tu souhaites analyser vu ton fichier, donc si tel est le cas, modifie le
For c = 29 to 39 Step 1
dans le code plus haut
0
titeufdu89 Messages postés 374 Date d'inscription   Statut Membre Dernière intervention   38
 
Voici le fichier contenant la macro qui fonctionne
https://cjoint.com/c/HFfnq4jMaZx

Bonne journée
0
Keyran
 
Merci beaucoup !

En attendant votre réponse j'ai essayé des trucs et je crois que j'ai réussi avec :

Dim i As Integer
For i = 3 To 1708
If Application.WorksheetFunction.CountBlank(Sheets("Feuil1").Range(Cells(i, 30), Cells(i, 39))) > 4 Then
Range(Cells(i, 29), Cells(i, 39)).Delete Shift:=xlUp
End If
Next i


Le seul problème avec ce code (et le votre aussi, si je le comprends bien) étant que si deux lignes successives répondent à cette condition, la deuxième ne sera pas supprimée. Mais les cas sont rares donc ça n'est pas dramatique.

Merci en tout cas,
Cordialement,
Rose


PS : Ayant posté cette question sans être membre, je ne sais comment la marquer résolue ?
0
danielc0 Messages postés 1856 Date d'inscription   Statut Membre Dernière intervention   229
 
Quand on supprime des lignes, il faut partir du bas :

For i = 1708 To 3 Step -1


Daniel
0
Keyran
 
Simple et efficace, je m'en veux un peu de ne pas y avoir pensé !
Merci encore.
0