XL 2016 Erreur VBA Suppresion des onglets

sive91

XLDnaute Junior
Bonjour,

je n'arrive pas a faire fonctionner mon code, j'ai une erreur
La methode Delete de la Classe Worksheet à echouée
l'erreur s'affiche sur Sheets(i).Delete

Voici le code

Private Sub CommandButton4_Click()
Dim s As Worksheet, t As String
Dim i As Long, K As Long
K = Sheets.Count

For i = K To 1 Step -1
t = Sheets(i).CodeName
If t = "Feuil1" Or t = "Feuil2" Then
Application.DisplayAlerts = False
Application.DisplayAlerts = True
Else
Application.DisplayAlerts = False
Sheets(i).Delete
Application.DisplayAlerts = True
End If
Next i
End Sub

Merci
 

Jacky67

XLDnaute Barbatruc
Bonjour,
Probablement que Feuil1 ou feuil2 est la dernière feuille présente dans le classeur.
Une feuille doit rester présente dans un classeur.
Essaye comme ceci
Code:
Private Sub CommandButton1_Click()
Dim t As String
Dim i As Long
For i = Sheets.Count To 1 Step -1
  t = Sheets(i).CodeName
  If t = "Feuil1" Or t = "Feuil2" Then
    Application.DisplayAlerts = False
    On Error Resume Next
    Sheets(i).Delete
    Application.DisplayAlerts = True
    If Err <> 0 Then
      MsgBox "Suppression impossible" & vbLf & t & "(" & Sheets(i).Name & ") est la dernière feuille" & vbLf & "Une feuille doit rester visible dans un classeur", , "Information"
    End If
    On Error GoTo 0
  End If
Next i
End Sub



https://ensemblepoursacha.wordpress.com/
 

sive91

XLDnaute Junior
upload_2017-7-4_13-23-20.png


en effet il m'a viré egalement ma feuil1 et ma feuil2
 

Pièces jointes

  • upload_2017-7-4_13-22-52.png
    upload_2017-7-4_13-22-52.png
    257.5 KB · Affichages: 32

zebanx

XLDnaute Accro
Bonjour,

Et comme ça...

Sub WksSupprime()
' objectif = supprimer les onglets hors Feuil1 et Feuil2
Dim i As Integer
Sheets("Feuil1").Select
On Error GoTo FIN
For Each ws In ActiveWorkbook.Sheets
Application.DisplayAlerts = False
If ws.Name = "Feuil1" Or ws.Name = "Feuil2" Then
Else: ws.Delete
End If
Next ws
FIN:
End Sub
 

sive91

XLDnaute Junior
J'ai du modifié ton code déclaré ws et aussi supprimer le select car j'avais une erreur sur Fin,
je vous colle le code et j'ai une erreur automation

upload_2017-7-4_13-36-33.png


Private Sub CommandButton4_Click()

' objectif = supprimer les onglets hors Feuil1 et Feuil2
Dim i As Integer
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Sheets
Application.DisplayAlerts = False
If ws.CodeName = "Feuil1" Or ws.CodeName = "Feuil2" Then
Else: ws.Delete
End If
Next ws
FIN:

End Sub

Merci
 

Jacky67

XLDnaute Barbatruc
Euh Non Supprimer tous les onglet a part les onglets ayant pour CodeName Feuil1 et Feuil2 ^^
Re...
Alors ceci devrait ête suffisant
Code:
Private Sub CommandButton4_Click()
Dim Sh As Worksheet
Application.DisplayAlerts = False
For Each Sh In ThisWorkbook.Worksheets
     If Sh.CodeName <> "Feuil1" And Sh.CodeName <> "Feuil2" Then Sh.Delete
Next
Application.DisplayAlerts = True
End Sub



https://ensemblepoursacha.wordpress.com/
 

eriiic

XLDnaute Barbatruc
Bonjour,

ton fichier semble boiteux.
Feuil3 s'appelle "B M RICAMI SRL" mais dans vba on trouve "mr_B M RICAMI SRL".
Et impossible de la renommer et que ça suive pour vba. Enfin on peut forcer en passant par la fenêtre espion mais ça ne résous pas le pb.
Je crains que tu ne doives reconstruire dans un classeur neuf en copiant-collant les données des feuilles.
eric
 

sive91

XLDnaute Junior
Bonsoir merci eric pour ta réponse,
en effet tu a du remarquer que pour chaque feuille il existait une seconde feuille mr_
cela est généré automatiquement par mon logiciel de reporting, mais tu viens de me donner une idée j'ai oublié de dire de ne pas supprimer le mr_ de la feuill2 peut etre que.... je vais essayer
 

Discussions similaires

Réponses
0
Affichages
662

Statistiques des forums

Discussions
311 711
Messages
2 081 792
Membres
101 817
dernier inscrit
carvajal