Suppression de lignes à l'intérieur d'un tableau

Bonjour,

Pour commencer, je tiens à dire que je suis intermédiaire en Excel. Je suis familier avec plusieurs formules mais question macro, je me considère plutôt débutant. Pour les Macros en fait, je suis plus de genre de enregistrer mes macros et ensuite aller voir le code et apprendre de cette façon.

Mon problème est le suivant. Je travaille avec un tableau qui contient quelques colonnes. Attention ici, par tableau, je parle du type qu'on obtient via Insertion/Tableau. J'aimerais avoir une macro qui va valider dans un premier temps si les cellules d'une des colonnes sont vides et va effacer les lignes correspondantes si c'est le cas. Ensuite, la macro fera l'inverse avec une autre des colonne, soit effacer toutes les lignes dont la cellule contiendrait quelque chose.

J'ai joint le fichier et voici ce que la macro devrait faire :

1- Vérifier le contenu des cellules de la colonne "Résolution", puis effacer les lignes dans le cas de ceux qui ne contiennent rien.

2- Vérifier le contenu des cellules de la colonne "Trouble Majeur", puis effacer les lignes dans le cas de ceux qui contiennent quelque chose.

À noter que ce fichier final servira pour l'extraction de rapport et donc que le nombre total de ligne va varier.

J'ai essayé de créer la macro moi même en enregistrant la séquence mais dès que la disposition des lignes ou le nombre de ligne change, ça ne fonctionne pas et me donne une erreur. Ça ressemble à ça :

Sub Traitement()
    Range("Tableau1[Résolution]").Select
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.ListObject.ListRows(2).Delete
    Selection.ListObject.ListRows(2).Delete
    Range("Tableau1[Trouble Majeur]").Select
    Selection.SpecialCells(xlCellTypeConstants, 23).Select
    Selection.ListObject.ListRows(3).Delete
End Sub

J'ai cherché sur le web et sur ce forum mais je n'ai rien trouvé qui traite de tableau ou qui fait ce genre d'opérations.

Merci beaucoup de prendre quelques minutes pour m'aider.

35exemple.xlsx (9.39 Ko)

Bonjour,

essaye ceci et dis nous si ça te convient

Sub Delet()
last = [B65000].End(xlUp).Row
For i = last To 5 Step -1
  If Cells(i, "D") = "" Then
    Cells(i, "D").EntireRow.Interior.ColorIndex = 23
    'Cells(i, "D").EntireRow.Delete Shift:=xlUp ' enlever la ' pour rendre la ligne opérationnelle

  End If
    If Cells(i, "E") <> "" Then
    Cells(i, "E").EntireRow.Interior.ColorIndex = 33
    'Cells(i, "E").EntireRow.Delete Shift:=xlUp
  End If
Next i
End Sub

Bonjour Patrick,

Pour commencer un gros merci d'avoir répondu. Pour ce qui est de si ça fonctionne ou non, je dirais oui mais ça reste insatisfaisant.

J'ai copié cette macro dans le document véritable dans lequel ça va être utilisé (que je ne peux pas posté ici à cause des informations sensibles qu'il contient) et ça semble vouloir fonctionner...

Cependant, le tableau en question contient 800 lignes et plus, et chaque ligne a 30 colonnes. La macro prend un temps fou à traiter l'information.

Existe t-il un code différent ou quelque chose qui permettrait de réduire le temps de traitement ?

Aussi, dans un souci d'apprendre et non pas juste copier le travail des autres, j'ai décortiquer ta formule du mieux que je peux et je la comprends en partie. J'apprécierais une explication de la logique derrière :

For i = last To 5 Step -1

Merci beaucoup !

Rebonjour,

J'ai cherché un peu à partir de la formule fournie et j'ai réussi à trouver la version qui procède comme je veux.

Sub Traitement()
Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
last = [B65000].End(xlUp).Row
For i = last To 6 Step -1
  If Cells(i, "X") = "" Or Cells(i, "R") <> "" Then
    Cells(i, "X").EntireRow.Delete Shift:=xlUp
  End If
Next i
Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True

End Sub

Mais je ne serais pas arrivé là sans toi. Merci beaucoup !!

Rechercher des sujets similaires à "suppression lignes interieur tableau"