Bonjour,
Si je rédige un message aujourd'hui (ce que je n'ai pas fait depuis 2006) c'est que je suis totallement désespérée et que je sais que vous êtes formidable.
J'ai un tableau (listobject) de plus de 5000 lignes et une trentaine de colonne. Je souhaite avoir une macro qui filtre ce tableau en fonction d'une valeur et supprime les lignes non filtrées (visibles). J'ai fait des recherches avec mon ami Google sur le web en anglais et en français, mais les solutions proposées ne fonctionnent pas chez moi et j'espère que vous pourrez me dire pourquoi.
Je pourrais tout simplement faire une boucle et supprimer les lignes une par une, mais ça va mettre un temps fou. J'aimerai plutôt réussir à faire fonctionner les commandes "MaPlage.SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp" ou "MaPlage.EntireRow.Delete". Mais dans les 2 cas j'obtiens un message d'erreur "1004 : Impossible de déplacer les cellules d'une plage ou d'un tableau filtré".
En réalité le message d'erreur ne me choque pas vraiment, car je n'arrive pas non plus à faire cette opération à la main. Ce que je ne comprends pas c'est que dans tous les forums que j'ai lu, les gens arrivent à faire fonctionner ces commandes.
Je me demande s'il n'y a pas une erreur dans mon adressage ou la manière dont j'utilise mon tableau (listobject).
Voici mon code :
merci d'avance de m'avoir lu et pour vos réponses.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Sub Filtrer_Supprimer() Dim MonClasseur As Workbook Dim MonTableau As ListObject 'Ouvrir le fichier Set MonClasseur= Workbooks.Open("\\Reseau\MesDocuments\Classeur1.xlsm") Set MonTableau = MonClasseur.Worksheets("Feuil1").ListObjects("MyTab") 'Afficher toute la table If MonClasseur.Worksheets("Feuil1").FilterMode = True Then MonClasseur.Worksheets("Feuil1").ShowAllData End If 'Filtrer les lignes à supprimer MonTableau.Range.AutoFilter Field:=28, Criteria1:="=FRANCE" 'Supprimer les lignes 'MonTableau.DataBodyRange.SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp MonTableau.DataBodyRange.EntireRow.Delete End Sub
Partager