Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/01/2012, 15h50   #1
Membre régulier
 
Homme Vincent Vincent
Inscription : octobre 2010
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent Vincent
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2010
Messages : 246
Points : 83
Points : 83
Par défaut Supprimer des dossiers

Bonjour,

Il est possible via excel de créer des répertoire :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub Test() 'création répertoires
    Dim ws0 As Worksheet 'Déclaration des variables
    Set ws0 = Worksheets("Macro") 'Attribution de la valeur
    CreationRepertoire ws0.[E9], "\Retraitement" 'Exemple : CreationRepertoire "C:\Documents and Settings\dossier", "Archives" crée un dossier "Archives" dans "C:\Documents and Settings\dossier"
        CreationRepertoire ws0.[E24], "Correction ligne de base"
            CreationRepertoire ws0.[E25], "csv"
            CreationRepertoire ws0.[E25], "txt"
        CreationRepertoire ws0.[E24], "Dérivée première"
            CreationRepertoire ws0.[E26], "csv"
            CreationRepertoire ws0.[E26], "txt"
        CreationRepertoire ws0.[E24], "Dérivée seconde"
            CreationRepertoire ws0.[E27], "csv"
            CreationRepertoire ws0.[E27], "txt"
        CreationRepertoire ws0.[E24], "Données brutes"
            CreationRepertoire ws0.[E28], "csv"
            CreationRepertoire ws0.[E28], "txt"
        CreationRepertoire ws0.[E24], "N-(N-1)"
            CreationRepertoire ws0.[E29], "csv"
            CreationRepertoire ws0.[E29], "txt"
        CreationRepertoire ws0.[E24], "Soustraction"
            CreationRepertoire ws0.[E30], "csv"
            CreationRepertoire ws0.[E30], "txt"
End Sub
Est il en revanche possible de les supprimer via une macro (ainsi que leur contenu ?

Merci d'avance pour votre aide,

Cordialement

Vincent
Vincent32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 15h53   #2
Membre du Club
 
Kévin Simon
Inscription : novembre 2010
Messages : 65
Détails du profil
Informations personnelles :
Nom : Kévin Simon
Âge : 21

Informations forums :
Inscription : novembre 2010
Messages : 65
Points : 40
Points : 40
Bonjour,

Dites moi si je me trompe mais il me semble qu'avec l'instruction "Kill" suivi du chemin du répertoire ça fonctionne. A moins qu'on ne puisse supprimer qu'un fichier...
kesimon63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 16h01   #3
Membre régulier
 
Homme Vincent Vincent
Inscription : octobre 2010
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent Vincent
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2010
Messages : 246
Points : 83
Points : 83
Merci pour cette réponse,

Il s'agirait de faire quelque chose comme ça pour supprimer le dossier "retraitement" dont le chemin est indiqué cellule E9 de la feuille intitulé Macro c'est bien ça ? :

Code :
1
2
3
4
5
Sub suppr() 'suppression répertoires
    Dim ws0 As Worksheet 'Déclaration des variables
    Set ws0 = Worksheets("Macro") 'Attribution de la valeur
    kill ws0.[E9], "\Retraitement" '
End Sub
Vincent32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 16h10   #4
Membre du Club
 
Kévin Simon
Inscription : novembre 2010
Messages : 65
Détails du profil
Informations personnelles :
Nom : Kévin Simon
Âge : 21

Informations forums :
Inscription : novembre 2010
Messages : 65
Points : 40
Points : 40
Erratum "Kill" ne fonctionne que pour les fichiers.
En revanche cela fonctionne :
Code :
1
2
3
4
5
6
7
8
9
 
Sub test()
 
Dim chemin, doss
Set chemin = CreateObject("Scripting.filesystemobject")
Set doss = chemin.getfolder("ton chemin")
doss.Delete
 
End sub
kesimon63 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/01/2012, 16h18   #5
Membre régulier
 
Homme Vincent Vincent
Inscription : octobre 2010
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent Vincent
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2010
Messages : 246
Points : 83
Points : 83
Merci pour cette réponse.

Peux tu m'indiquer à quoi correspond (à quoi ça sert, qu'est ce que ça fait ?) :

Code :
CreateObject("Scripting.filesystemobject")
D'autre part si le chemin où est situé le dossier à supprimer est indiqué dans la cellule A1 de la feuille 1 puis je écrire ceci

Code :
doss = chemin.getfolder(feuil1.range(A1)&dossier)'feuil.A1=répertoire dans lequel est situé le dossier à supprimer, dossier=nom du dossier à supprimer
D'autre part je suppose qu'il supprime tout ce qui est contenu dans le dossier ?

Merci pour ton aide

Cordialement

Vincent
Vincent32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 18h18   #6
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Pour aider un peu, le CreateObject sert à instancier un objet qui n'est pas de base dans Excel sans ajouter la référence. C'est ce qu'on appelle du late binding.

Tu aurais aussi pu ajouter "Microsoft Scripting Runtime" dans les références et faire :
Code :
1
2
3
4
5
6
7
8
9
Sub test()
 
Dim fso As New FileSystemObject
Dim doss As Folder
 
Set doss = fso.GetFolder(feuil1.Range("A1"))
doss.Delete
 
End sub
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/01/2012, 16h32   #7
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 623
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 623
Points : 30 954
Points : 30 954
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Un tuto complet à lire sur le sujet : Manipulation des fichiers en VBA

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 16/01/2012, 07h26   #8
Membre régulier
 
Homme Vincent Vincent
Inscription : octobre 2010
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent Vincent
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2010
Messages : 246
Points : 83
Points : 83
Bonjour,

J'ai l'erreur suivante : doss surligner en bleu : objet requis

Voici le code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
Sub supdoss() 'suppression du dossier
    Dim chemin, doss As String
    Dim ws0 As Worksheet
    Set ws0 = Worksheets("Macro")
    Dim oFSO As Scripting.FileSystemObject
    Set oFSO = New Scripting.FileSystemObject
'Accède au dossier
If oFSO.FolderExists(ws0.[E24]) Then 'Vérifie si le répertoire existe.
        Set doss = chemin.GetFolder(ws0.[E24])
        doss.Delete
    End If
End Sub
Je ne vois pas ce qui cloche

Bonne journée,

Cordialement

Vincent
Vincent32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 09h59   #9
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Oublie chemin et utilises oFSO. Ensuite doss est un objet Folder, pas un string.
Tu as vu l'exemple que je t'ai donné ?
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/01/2012, 10h13   #10
Membre régulier
 
Homme Vincent Vincent
Inscription : octobre 2010
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent Vincent
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2010
Messages : 246
Points : 83
Points : 83
Bonjour Zebreloup,

Désolé pour mon étourderie, j'avais mal regardé ton code qui fonctionne très bien

Merci beaucoup
__________________
Bonne journée,

Cordialement,

Vincent
Vincent32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h29.


 
 
 
 
Partenaires

Hébergement Web