Supprimer des lignes, et les pages qui ont leur nom dans ces lignes.

Erlattia

XLDnaute Nouveau
Bonjour,

Je suis actuellement face à un problème, je cherche à effacer une zone d'un tableau (ça j'y arrive) mais aussi à effacer les pages dont le nom est dans cette zone (ça non).
Concrètement, grâce à une macro, je peux créer une nouvelle page depuis ma page d’accueil qui s’appellera F1. Le problème étant qu'il y a jusqu'à 500 pages de créées (allant de F1 à F500) et leurs noms est dans la plage de cellule B11:B511. J'ai déjà fait une macro qui efface les lignes que je sélectionne, mais je voudrais (si cela est possible) que cette macro aille aussi effacer toutes les pages dont le nom était contenu dans la colonne B.

Ma macro d'origine :

Set Plg = _
Application.InputBox("Sélectionnez une plage !", _
"Effacement de la sélection", Type:=8)
Plg.ClearContents

Je vous remercie d'avance pour votre aide.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Supprimer des lignes, et les pages qui ont leur nom dans ces lignes.

Bonjour Erlattia et bienvenu, bonjour el forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim cel As Range 'déclare la variable cel (CELlule)
Dim o As Object 'déclare la variable o (Onglet)

Set plg = _
Application.InputBox("Sélectionnez une plage !", _
"Effacement de la sélection", Type:=8)
For Each cel In plg 'boucle 1 : sur toutes les cellules de la plage plg
    For Each o In Sheets 'boucle 2 sur tous les onglets du classeur
        If o.Name = cel.Value Then 'condition : si le nom du classeur est égal à la valeur de la cellule cel
            Application.DisplayAlerts = False 'masque les messages Excel
            o.Delete 'supprime l'onglet o
            Application.DisplayAlerts = True 'affiche les messages Excel
            Exit For 'sort de la boucle 2
        End If 'fin de la condition
    Next o 'prochain onglet de la boucle 2
Next cel 'prochaine cellule de la boucle 1
plg.ClearContents
End Sub
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Supprimer des lignes, et les pages qui ont leur nom dans ces lignes.

Bonjour Eralttia, et Bienvenue sur le forum

voir fichier joint

à+
Philippe

Edit: Bing, Salut Robert
 

Pièces jointes

  • 111.xls
    63.5 KB · Affichages: 36
  • 111.xls
    63.5 KB · Affichages: 54
  • 111.xls
    63.5 KB · Affichages: 51

Erlattia

XLDnaute Nouveau
Re : Supprimer des lignes, et les pages qui ont leur nom dans ces lignes.

Merci beaucoup, mais en faite c'est pas exactement ce que je cherche, je me suis mal exprimé. Je veux qu'il supprime la page, qu'elle n'existe plus, pas seulement qu'il la vide.
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Supprimer des lignes, et les pages qui ont leur nom dans ces lignes.

Re,

avec ceci:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B11:B511")) Is Nothing And Target.Count = 1 Then
If MsgBox("Voulez-vous effacer la feuille " & Target, vbOK) <> vbOK Then Exit Sub
Sheets(CStr(Target)).Select
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
End If
End Sub

à+
Philippe

Edit: La procédure peut également être faite via un double-clic ou un clic-droit dans la cellule
 

Erlattia

XLDnaute Nouveau
Re : Supprimer des lignes, et les pages qui ont leur nom dans ces lignes.

Je dois pas très bien comprendre comment elle marche, il ne se passe rien.

En faite mon bout de code me plais bien, dès que je click sur mon bouton delete, il me demande une selection, qu'il va ensuite vider. Je voudrais garder le même principe, mais que en plus, il supprime toutes les pages dont le nom est contennu dans ma colonne B des cellules que j'ai selectionnées. En gros il vide les lignes de ma page d'accueuil, et va supprimer les pages dont le nom est contenu dans la colonne B.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Supprimer des lignes, et les pages qui ont leur nom dans ces lignes.

Bonjour le fil, bonjour le forum,

Il nous est impossible de savoir que ton code agit sur le clic d'un bouton puisque tu n'as pas daigné en fournir la totalité. Mais si tu remplaces ton code par le mien (en excluant ma première ligne (Sub Macro(1)) et ma dernière ligne (End Sub), cela devrait faire exactement ce que tu demandes...
 

Discussions similaires

Statistiques des forums

Discussions
312 178
Messages
2 085 984
Membres
103 079
dernier inscrit
sle