Microsoft 365 Supprimer toutes les feuilles d'un classeur

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 !

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)
 
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 +
 
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: 23
Dernière édition:
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

Dernière édition:
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
 
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:
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:
- 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
2
Affichages
166
Réponses
17
Affichages
469
Retour