Microsoft 365 Supprimer toutes les feuilles d'un classeur

DavidMM

XLDnaute Nouveau
Bonjour,

Peut on supprimer toutes les feuilles d'un classeur, sauf la première, en même temps sans ouvrir les fichiers un à un ?
(j'ai 800 fichiers Excel et chaque classeur comporte entre 3 à 10 feuilles ou onglets)
 

Wayki

XLDnaute Impliqué
Bonjour,
Pas possible sans ouvrir les classeurs, mais il est possible de faire un code rapide en désactivant la mise à jour de l'écran.
Il faudrait connaître le chemin des fichiers pour faire un code.
Ça doit également être possible avec Power Automate Desktop.
A +
 

kiki29

XLDnaute Barbatruc
Re, à toi de tester cette ultime version, dans l'attente d'une réponse.(MàJ 23 Sep)

Décidément ce forum ressemble de plus en plus à un obituaire...
 

Pièces jointes

  • Supprimer Feuilles 03.png
    Supprimer Feuilles 03.png
    139.8 KB · Affichages: 41
  • Del Feuilles 05.zip
    40.6 KB · Affichages: 22
Dernière édition:

kiki29

XLDnaute Barbatruc
Salut, ici tout fonctionne ..... quel est le message d'erreur ? as-tu regardé dans le dossier "Sauvegarde" baptisé Copies et placé à la racine de l'appli ?
L'appli ne touche pas aux fichiers originaux. cela reste modifiable....
 

Pièces jointes

  • 1.png
    1.png
    3.1 KB · Affichages: 21
Dernière édition:

kiki29

XLDnaute Barbatruc
Salut, à toi de voir ..
Le nom du dossier des fichiers allégés est modifiable via la feuille Param

Recherche Récursive : permet d'étendre la sélection des fichiers aux dossiers/sous dossiers présents dans le dossier racine sélectionné via Liste Fichiers.
Vider Dossier Sauvegarde : permet d'effacer le contenu du dossier de sauvegarde baptisé ici Copies avant de lancer Liste Fichiers.
Gestion éventuels Doublons : permet d'éviter l'écrasement de fichiers possédant la même dénomination ( via un indice (0001) (0002) etc ).
 

Pièces jointes

  • Supprimer Feuilles 04.png
    Supprimer Feuilles 04.png
    148.4 KB · Affichages: 21
  • Del Feuilles 2..N 07.xlsm.zip
    40.9 KB · Affichages: 7
Dernière édition:

DavidMM

XLDnaute Nouveau
Salut, à toi de voir ..
Le nom du dossier des fichiers allégés est modifiable via la feuille Param
Il y a juste un probleme. il y a 800 fichiers avec des macros et à chaque traitement d'un fichier, on me dit "Mettre à jour" (il y a toujours 2 fenetres qui apparaissent). C'est tres tres long. Faut valider à chaque fois.
Y a t il un moyen de traiter ces fichiers sans etre obliger de confirmer ?

merci pour tout.
Le travail est efficace ! Vraiment
 

kiki29

XLDnaute Barbatruc
Salut,@Wayki : tout cela y est déjà depuis le début.
@DavidMM : Qqs échantillons réels de tes fichiers anonymisés récalcitrants seraient utiles .....

Extrait
VB:
        Set Wkb = Workbooks.Open(Filename:=sFichier)
   
        Application.DisplayAlerts = False
        For j = Wkb.Worksheets.Count To 2 Step -1
            Wkb.Worksheets(j).Delete
        Next j
        Application.DisplayAlerts = True
        .....
        Application.DisplayAlerts = False
        Wkb.SaveAs Filename:=sFichierFinal
        Wkb.Close
        Application.DisplayAlerts = True
 
Dernière édition:

kiki29

XLDnaute Barbatruc
Re, Ajoute cette procédure Supprimer_CodeVBA() dans le module mDelFeuilles

Code:
Private Sub Supprimer_CodeVBA()
Dim VBComp As Object
Dim VBComps As Object

    Set VBComps = ActiveWorkbook.VBProject.VBComponents

    For Each VBComp In VBComps
        Select Case VBComp.Type
        Case 100
            With VBComp.CodeModule
                .DeleteLines 1, .CountOfLines
            End With
        Case Else
            VBComps.Remove VBComp
        End Select
    Next VBComp
End Sub

Dans le module mDelFeuilles modifie la Procédure DelFeuilles comme ceci en y insérant Supprimer_CodeVBA et ajoute UpdateLinks:=xlUpdateLinksNever ou 2 ou 0 dans Workbooks.Open
Learn Microsoft
VB:
        .....
        Set Wkb = Workbooks.Open(Filename:=sFichier, UpdateLinks:=0)

        Application.DisplayAlerts = False
        For j = Wkb.Worksheets.Count To 2 Step -1
            Supprimer_CodeVBA
            Wkb.Worksheets(j).Delete
        Next j
        Application.DisplayAlerts = True
        .....

Voire rajouter une procédure Supprimer_LiaisonsXL et une autre Supprimer_LiaisonsOLE, une autre pour supprimer les "Graph" ?
@DavidMM : Qqs échantillons réels de tes fichiers anonymisés récalcitrants seraient utiles .....

VB:
Private Sub Supprimer_LiaisonsXL()
Dim Liaisons As Variant, i As Long
    Liaisons = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)
    If IsEmpty(Liaisons) = True Then Exit Sub
    For i = 1 To UBound(Liaisons)
        ActiveWorkbook.BreakLink Name:=Liaisons(i), _
                                 Type:=xlLinkTypeExcelLinks
    Next i
End Sub
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
239

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 107
dernier inscrit
cdel