Supprimer ligne contenant mot sur le classeur entier

Bonjour,

Je sais que ce sujet a déjà été abordé mais rien ne fonctionne chez moi. J'y ai passé beaucoup de temps et je sèche. J'ai vraiment besoin d 'aide.

Je suis sous Excel 2007. J'ai un fichier Excel qui au final contiendra une centaine de feuilles.

La première page est une page d'accueil avec des boutons renvoyant aux différentes feuilles.

Chaque feuille crorrespond à une formation et contient une liste de noms avec les dates de ces formations pour chaque personne. Les noms ne se trouvent pas toujours dans la première colonne.

Je souhaiterai que lorsque je clic sur un bouton spécifique une boite de dialogue s'affiche et demande "le nom de la personne à supprimer".

Ensuite, une fois le nom tapé, il faudrait que toutes les lignes contenant ce nom (sur TOUTES les feuilles du classeur) soient supprimées.

J'ai essayé un code qui fonctionne très bien sur une seule feuille mais impossible de l'appliquer à tout le classeur.

j'ai essayé tout ce que j'ai pu trouver sur les forums, rien ne va.

Si besoin d'un fichier, je posterai un peu plus tard car il faut que j'en fasse un autre, celui-ci étant confidentiel.

Merci d'avance pour vos réponses.

Dlou

Salut dlou,

J'ai essayé un code qui fonctionne très bien sur une seule feuille mais impossible de l'appliquer à tout le classeur.

As tu essayé une boucle for ?

Dim sh As Worksheet

For Each sh in ActiveWorkbook 
  If sh.Name <>"nom de la feuille d'acceuil"
     'Ton code
  End If
Next sh

cldt,

Uras

Bonjour Uras,

Merci mais ça ne fonctionne pas. après mon code n'est peut-être pas adapté, je l'ai écrit avec mes faibles connaissances et ce que j'ai pu trouver sur les forums. Il est peut-être nécessaire de tout récrire pour pouvoir appliquer ce que je souhaite sur tout le classeur.

Mon code:

Sub test()

  Dim Editeur As Variant, Nb As Long

Editeur = Application.InputBox( _
 Prompt:="Veuillez entrer le nom à supprimer ?", _
 Title:="bienvenue", Type:=2)
 If TypeName(Editeur) = "Nom" Then Exit Sub

Application.ScreenUpdating = False
With Worksheets("SCA HARNAIS") 'Nom feuille à adapter
 With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
 .AutoFilter field:=1, Criteria1:="*" & Editeur & "*"
 Nb = Application.WorksheetFunction.Subtotal(3, .Cells) - 1
 Set rg = .Range("_FilterDataBase")
 rg.Offset(1).Resize(rg.Rows.Count - 1). _
 SpecialCells(xlCellTypeVisible).EntireRow.Delete
 .AutoFilter
 End With
 End With
 If Nb <> 0 Then
 MsgBox Nb & " lignes de supprimer."
 End If
 End Sub

Re,

Sub test()

  Dim Editeur As Variant, Nb As Long
  Dim sh As Worksheet

Editeur = Application.InputBox( _
 Prompt:="Veuillez entrer le nom à supprimer ?", _
 Title:="bienvenue", Type:=2)
 If TypeName(Editeur) = "Nom" Then Exit Sub

Application.ScreenUpdating = False

For Each sh in ActiveWorkbook 
  If sh.Name <>"nom de la feuille d'acceuil" 'remplace le texte entre guillemets par le nom exact de ta page d'acceuil
With sh 'Nom feuille à adapter/ variable feuille
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
 .AutoFilter field:=1, Criteria1:="*" & Editeur & "*"
 Nb = Application.WorksheetFunction.Subtotal(3, .Cells) - 1
 Set rg = .Range("_FilterDataBase")
 rg.Offset(1).Resize(rg.Rows.Count - 1). _
 SpecialCells(xlCellTypeVisible).EntireRow.Delete
 .AutoFilter
 End With
 End With
End If
Next sh

 If Nb <> 0 Then
 MsgBox Nb & " lignes de supprimer."
 End If

Application.ScreenUpdating = True 'Cette ligne avait l'air de manquer
 End Sub

Essaye ça (j'ai juste rajouté et adapté ce que je t'ai proposé (oublie pas de changer le nom de la page d'acceuil dans le code)

Redis moi,

Cldt,

Uras

Merci, ça me dit: Erreur de compilation: Attendu then ou to go

et celle ligne est en rouge: If sh.Name <>"ACCUEIL"

Bonjour,

A tester.

Voir aide pour InputBox.

Cdlt.

Sub test()

  Dim Editeur As String, Nb As Long
  Dim sh As Worksheet

Editeur = Application.InputBox( _
 Prompt:="Veuillez entrer le nom à supprimer ?", _
 Title:="bienvenue")
 If TypeName(Editeur) = "Nom" Then Exit Sub

Application.ScreenUpdating = False

For Each sh in ActiveWorkbook.Worksheets
  If sh.Name <>"nom de la feuille d'acceuil" 'remplace le texte entre guillemets par le nom exact de ta page d'acceuil
With sh 'Nom feuille à adapter/ variable feuille
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
 .AutoFilter field:=1, Criteria1:="*" & Editeur & "*"
 Nb = Application.WorksheetFunction.Subtotal(3, .Cells) - 1
 Set rg = .Range("_FilterDataBase")
 rg.Offset(1).Resize(rg.Rows.Count - 1). _
 SpecialCells(xlCellTypeVisible).EntireRow.Delete
 .AutoFilter
 End With
 End With
End If
Next sh

 If Nb <> 0 Then
 MsgBox Nb & " lignes de supprimer."
 End If

Application.ScreenUpdating = True 'Cette ligne avait l'air de manquer
End Sub

Bonjour Jean-Eric,

Merci pour votre aide mais, ça me dit toujours: "Erreur de compilation: Attendu then ou to go "

et cette ligne est toujours en rouge:

If sh.Name <>"ACCUEIL"

Re,

Je n'avais pas vu. Corrige :

 If sh.Name <>"ACCUEIL" then

Alors, j'ai corrigé, et je suis désolée, maintenant j'ai une "errreur 1004: pas de cellule correspondante" et les lignes suivantes se mettent en jaune:

rg.Offset(1).Resize(rg.Rows.Count - 1). _

SpecialCells(xlCellTypeVisible).EntireRow.Delete

Voici un mini fichier qui a la même forme que celui dont je vous parle. En espérant que cela pourra vous aider pour résoudre mon problème.

Merci d'avance.

25test.xlsb (63.29 Ko)
Rechercher des sujets similaires à "supprimer ligne contenant mot classeur entier"