Supprimer les lignes contenant moins de 7 valeurs

Résolu/Fermé
Keyran - 5 juin 2018 à 13:03
 Keyran - 6 juin 2018 à 15:17
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 1263 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 16 novembre 2024 142
5 juin 2018 à 13:34
Bonjour,

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

Cordialement.

Daniel
0
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 samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 38
5 juin 2018 à 15:01
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 samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 38
5 juin 2018 à 15:08
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 samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 38
5 juin 2018 à 15:17
Voici le fichier contenant la macro qui fonctionne
https://cjoint.com/c/HFfnq4jMaZx

Bonne journée
0
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 1263 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 16 novembre 2024 142
6 juin 2018 à 14:24
Quand on supprime des lignes, il faut partir du bas :

For i = 1708 To 3 Step -1


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