Vider des fichiers de leurs contenus VBA

Résolu/Fermé
ben - 13 avril 2010 à 10:51
 ben - 13 avril 2010 à 15:07
Bonjour,
Voici ce que je voudrais faire : je voudrais que lorsque je clique sur un bouton de mon interface VBA sous Excel tous les fichiers Excel (de toute façon il n'y a que ça) de mon dossier soient vidés. Pour cela j'ai écrit un code qui liste "mes idées" sur la manière de procédé mais il est surement bourré de fautes qui me dépassent.

Private Sub CommandButton3_Click()

ChDir "G:\PPV\_Benjamin\2eme programme\fichiers obtenus\"

For Each Excel.Application In ChDir 'pour chaque fichier du dossier ci-dessus
Sheets.Add 'j'ajoute une feuille
For i = 1 To Sheets.Count 'et je supprime toutes les autres
If Sheets(i).Name <> "Feuil1" Then
Sheets(i).Delete
End If
Next i
Next

MsgBox "les fichiers ont été vidés"

End Sub

j'ai une erreur dès la ligne "for each..."
erreur de compilation argument non facultatif

J'ajoute une feuille car il faut que la dernière feuille restante est un nom différent de celles déjà dans le fichier.

Si quelqu'un pouvait m'aider je lui serai très reconnaissant,
Merci

1 réponse

C bon j'ai trouvé une réponse en remaniant un code trouver sur internet, voici la réponse à mon problème si un jour quelqu'un en a besoin :

Sub VideFichier()

Const Chemin = "G:\...........\"

Dim oFs As Variant
Dim NomFichier As String
Dim I As Integer
Application.DisplayAlerts = False
Set oFs = Application.FileSearch

With oFs
.LookIn = Chemin
.FileType = msoFileTypeExcelWorkbooks
If .Execute > 0 Then
'MsgBox "Il y a " & .FoundFiles.Count & " fichier(s) de trouvé."
For I = 1 To .FoundFiles.Count
NomFichier = .FoundFiles(I)
If Right(NomFichier, 8) = "abcd.xls" Then
Workbooks.Open Filename:=NomFichier
Workbooks(Right(NomFichier, 12)).Activate
For Each mafeuille In Worksheets
If mafeuille.Name <> "ne pas supprimer" And Worksheets.Count > 1 Then

mafeuille.Delete
End If
Next
ActiveWorkbook.Close True
End If
Next I
Else
MsgBox "Aucun fichier n'a été trouvé."
End If
End With

'MsgBox "Fin de recherche"
Application.DisplayAlerts = False
End Sub


Private Sub CommandButton3_Click()

Dim mafeuille As Object
Call VideFichier

MsgBox "les fichiers ont été vidés"

End Sub

ici je supprime tous les onglets qui ne s'appellent pas "ne pas supprimer"
voilà!
0