[RÉSOLU) Macro qui fait bien le boulot mais pas tout à fait

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

un internaute

XLDnaute Impliqué
Bonjour le forum,
J'ai trouvé cette macro qui supprime bien les boutons qui se trouvent en A1:C1 sur toutes les feuilles des 12 mois de Janvier 2018 à Décembre 2018 mais j'ai une feuille MENU qui se trouve au début du classeur et là aussi j'ai des boutons mais ceux-ci ne doivent pas être supprimés hors ça le fait aussi (normal)
Quelles modifs faut-il apporter à la macro?
Merci pour vos éventuels retours
Cordialement


Code:
Sub supprime_C_Shapes()
Dim nombre As Integer
Dim Ws As Worksheet
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For I = 1 To nombre
Worksheets(I).Unprotect Password:="blabla"
Next I
   Application.ScreenUpdating = False
  AfficherOnglets

Dim Forme As Object
  For Each Ws In Sheets
    For Each Forme In Ws.Shapes
      With Forme
        Select Case .Type
          Case 12
            'ici permet de ne pas supprimer
            'les boutons de la BO Formulaire
          Case Else
            'supprime le reste
            .Delete
        End Select
      End With
    Next Forme
  Next Ws
End Sub
 
Bonjour laetitia90 et Ce lien n'existe plus
Effectivement vous avez raison TOUS les deux
Tout fonctionne super bien

Code:
Sub Supprime_C_Shapes()
Dim nombre As Integer
Dim Ws As Worksheet
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For I = 1 To nombre
Worksheets(I).Unprotect Password:="blabla"
Next I
   Application.ScreenUpdating = False
  AfficherOnglets

Dim Forme As Object
  For Each Ws In Sheets
  If Ws.Name <> "MENU" Then
    For Each Forme In Ws.Shapes
      With Forme
        Select Case .Type
          Case 12
            'ici permet de ne pas supprimer
            'les boutons de la BO Formulaire
          Case Else
            'supprime le reste
            .Delete
        End Select
      End With
    Next Forme
  End If
  Next Ws
End Sub

Un peu plus compliqué:
Je veux maintenant ne plus supprimer MENU et Janvier 2018

Là ça serait le TOP

En tout un GROS merci à vous deux
A plus
Bien cordialement
 
Bonjour à tous
Autre méthode écourtée , tu supprimes le for each ws
Donc dans ta boucle après le .count au lieu de For I= 1 tu mets 2 et maintenant 3
Tu peux vérifier en faisant une petite sub à part dans un module que tu lances avec F5 : tu boucles sur le nombre total de 1 à sheets.count ; ensuite tu fais un msgbox "Feuille " & I & "= " & sheets(I).name
comme ça tu controles bien le N° associé au nom
Code:
For I = 3 To nombre ' Si 1= Menu et 2=Janvier
Worksheets(I).Unprotect Password:="blabla"
For Each Forme In sheets(i).Shapes
      With Forme
        Select Case .Type
          Case 12
etc ....
Next Forme
Next I
J'ai testé cela qui fonctionne bien :
Code:
Sub eff()
nombre = ActiveWorkbook.Sheets.Count
For i = 3 To nombre

For Each forme In Sheets(i).Shapes
forme.Delete
Next forme
Next i
End Sub
Info : il y a une règle en Basic qui préconise de mettre tous les DIM en tout début de Sub
 
Bonjour le fil, le forum

Une autre voie (un chouia radicale 😉)
VB:
Sub a()
' macro à utiliser avec modération
Dim ws As Worksheet
Sheets("Menu").Visible = False
Sheets("Janvier 2018").Visible = False
For Each ws In Worksheets
    If ws.Visible Then
    ws.DrawingObjects.Delete ' supprime tout type d'objet
    End If
Next ws
Sheets("Menu").Visible = True
Sheets("Janvier 2018").Visible = True
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
232
Réponses
4
Affichages
177
Réponses
5
Affichages
235
Réponses
7
Affichages
211
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Retour