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.

2 réponses

  1. danielc0 Messages postés 2196 Date d'inscription   Statut Membre Dernière intervention   286
     
    Bonjour,

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

    Cordialement.

    Daniel
    0
    1. 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
  2. titeufdu89 Messages postés 387 Statut Membre 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
    1. titeufdu89 Messages postés 387 Statut Membre 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
    2. 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
    3. danielc0 Messages postés 2196 Date d'inscription   Statut Membre Dernière intervention   286
       
      Quand on supprime des lignes, il faut partir du bas :

      For i = 1708 To 3 Step -1


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