[VB6 -> VBA]Créer un dossier avec vba [Résolu]

- - Dernière réponse :  EnguerrandP - 11 mai 2013 à 15:24
Bonjour,
Il faudrait dans le cas du projet de mon stage que je crée un dossier pour l'Archivage des commandes dans se dossier par année de l'entreprise ( du 1er juillet au 30 juin de l'année suivante). Et dans se dossier je doit crée un classeur excel par Fournisseur (c'est classeur doivent être crée lors de la première commande cher le fournisseur) est a chaque commande la feuille excel de commande va se stocker dans le classeur correspondant au fournisseur.

Toute la parti qui guère la commande a était réaliser je bloque sur la fonction Historique.
Sur internet je ne trouve rien qui m'aide lorsqu'es j'arrive à créer le dossier pour l'année le fichier excel se sauvegarde deux fois une foi dans le dossier est une fois a l'extérieur .
Quelqu'un peut m'aider .
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
3
Merci
Bonjour,

Commence par faire une petite fonction pour vérifier si le dossier existe.

Private Sub CommandButton1_Click()
If Existe("c:\users\toto\desktop") = False Then
   MsgBox "Le chemin n'existe pas ou vous n'avez pas le droit d'y écrire"
Else
   MsgBox "Le chemin existe bien..."
End If
End Sub

Function Existe(Chemin As String) As Boolean
On Error GoTo Err
If Right(Chemin, 1) <> "" Then chemi = Chemin & ""
Open Chemin & "toto.txt" For Random As #1
Close
Kill (Chemin & "toto.txt")
Existe = True
Exit Function
Err:
Existe = False
Close
End Function


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique

Merci Utilisateur anonyme 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
3
Merci
Bonjour ,
je c'est maintenant comment crée un dossier.
(je c'est que la réponse est un peu tardive mais je voulais que dans la conversation il y ait la réponse a la question de base)

Dim Chemin As String 
 
Chemin = "C:\Historique" 

Année = "2013" 

If Dir(Chemin & Année) = "" Then 

MkDir Chemin & Année 


merci d'avoir pris le temps de me lire

Merci EnguerrandP 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de EnguerrandP
0
Merci
Bonjour,

Quelqu'un peut m'aider .


Oui, toi-même

1) En montrant le code qui te cause problème
2) En posant une question spécifique sur un problème spécifique
3) En posant une question claire; parce que celle-ci j'ai beau la relire, je ne réussis pas à comprendre ce que tu as déjà fait, ce qu'il te reste à faire et quels messages d'erreurs spécifiques tu a pu avoir en réalisant quelle application spécifique.
Commenter la réponse de Utilisateur anonyme
0
Merci
P.S. IL y a une section VBA dans la branche VB6 du forum.
Commenter la réponse de Utilisateur anonyme
0
Merci
Bon je vais réexpliquer mon probléme.
Il faut que grace a un bouton :
-J'archive mais commandes
les commandes sont deja enregistrer sur une feuill"Commande" de mon classeur qui me sere a passer les commandes il faut donc copier cette feuill dans :
->le dossier "Archivage"
-> le dossier "Année"(si il n'éxiste pas il faut le crée)
-> dans le classeur excel correspondant au fournisseur( si il n'éxiste pas il faut le crée) .

Voila le code que j'ai pour l'instant:

Dim CheminDossier, Fournisseur, Fichier As String
CheminDossier = "C:\Archivage"
Année = "2013"
Fournisseur = Worksheets("Fournisseur").Cells(2, 8).Value
Fichier = Fournisseur & ".xls"

'Un fois que tu auras détecté que Fournisseur n'existe pas encore,
'c'est pas difficile de créer un dossier :

If Dir(CheminDossier & Année, 16) = "" Then
MkDir CheminDossier & Année
End If
ActiveWorkbook.SaveAs CheminDossier & Année & "" & Fichier
Commenter la réponse de EnguerrandP
0
Merci
Bon voila j'ai un peu modifier le code maintenant sa ne copie plus que la page que je souhaite mais le nouveau classeur ne porte pas le nom que je voudrait et surtout le classeur est enregistre a l'extérieur du nouveau dossier.

Dim Chemin As String
Chemin = "C:\Historique"
Année = "2013"
If Dir(Chemin & Année, 16) = "" Then
MkDir Chemin & Année
End If
Dim CheminD As String
Application.ScreenUpdating = False
CheminD = "C:\Historique" & Année
Sheets("Archive").Copy
With ActiveWorkbook
.SaveAs Filename:=CheminD & Fs & " " & Format(Now, "dd-mm-yyyy")
.Close
End With
Dim Chemin As String
Chemin = "C:\Historique"
Année = "2013"
If Dir(Chemin & Année, 16) = "" Then
MkDir Chemin & Année
End If
Dim CheminD As String
Application.ScreenUpdating = False
CheminD = "C:\Historique" & Année
Sheets("Archive").Copy
With ActiveWorkbook
.SaveAs Filename:=CheminD & Fs & " " & Format(Now, "dd-mm-yyyy")
.Close
End With
Commenter la réponse de EnguerrandP
0
Merci
bon voila mes modif :

Dim Chemin As String
Dim CheminA As String
Dim CheminB As String
Chemin = "C:\Historique"
Année = "2013"

If Dir(Chemin & Année, 16) = "" Then

MkDir Chemin & Année
CheminA = "C:\Historique" & Année & ""
Application.ScreenUpdating = False
Sheets("Archive").Copy
With ActiveWorkbook
.SaveAs Filename:=CheminA & Fs
.Close
End With
Workbooks(Fs).Activate
Workbooks(Fs).Visible = False
Sheets("Archive").Activate
Sheets("Archive").Visible = False
Sheets("Archive").Name = "Archive" & Date & (dd - mm - yyyy)
ElseIf Dir(Chemin & Année, 16) <> "" Then

CheminB = "C:\Historique" & Année & "" & Fs & ".xls"

End If

Voila se que j'ai essayer de faire :
-> si dossier "Historique"-> dossier "Année"
n'éxiste pas je le crée
-> ensuit je crée le classeur excel du fournisseur Fs et j'y copie la feuill"Archive"
-> puis je renome la feuill"Archive" du classeur Fs en "Archive"+la date du jours
c'est cette derniére parti qui bloque.
Commenter la réponse de EnguerrandP
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
0
Merci
-> puis je renome la feuill"Archive" du classeur Fs en "Archive"+la date du jours
c'est cette derniére parti qui bloque.


Pourquoi mettre le classeur et la feuille invisibles juste auparavant ?

Workbooks(Fs).Visible = False 
Sheets("Archive").Activate 
Sheets("Archive").Visible = False



PS: pense à utiliser le 3e bouton en partant de la droite quand tu mets du code. Sélectionne ton code et clique ce bouton en choisissant VB

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Commenter la réponse de cs_MPi
0
Merci
Pourquoi mettre le classeur et la feuille invisibles juste auparavant ?


bonjour ,
je veut la masquer car sinon lorsque l'on passe une commande le classeur qui archive celle-ci s'ouvre .
donc je mes tout en invisible:

Workbooks(Fs).Activate 
Workbooks(Fs).Visible = False 
Sheets("Archive").Activate 
Sheets("Archive").Visible = False


maintenant je tient a m'excuser si m'on comportement a agacé certains mes c'est la première fois que je suis sur se type de forum .si je ne mettez pas le code sous le format code c'était par non connaissance est non mauvaise volonté , si j'ai fais plusieurs poste pour un même sujet c'était simplement que j'essayait de répondre a vos réponse .

est oui c'est vrai il m'arrive d'oublier de dire bonjour mes se n'ai pas systématique .
Commenter la réponse de EnguerrandP
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
0
Merci
Joue avec des Activate pour changer le focus sur la feuille ou classeur que tu veux voir afficher. Mais tout ça n'est pas vraiment nécessaire si tu ajoutes le nom du classeur lorsque tu copies/modifies des choses

Workbooks("NomDuClasseur").Sheets("NomDeSaFeuille").Range("A1") = "Allo"


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Commenter la réponse de cs_MPi
0
Merci
Bonjour
Merci pour ta réponce .
Commenter la réponse de EnguerrandP
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
0
Merci
Il est toujours préférable d'ajouter un paramètre à la fonction Dir.
Dans ce cas-ci, tu recherches un répertoire, donc

If Dir(Chemin & Année, vbDirectory) = "" Then 


Et si tu recherches un fichier, tu remplaces vbDirectory par vbArchive.

Il y en a d'autres et tu peux aussi les mettre ensemble avec un + entre chacun

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Commenter la réponse de cs_MPi
0
Merci
bonjour ,
Merci pour ta présision je vais imédiatement apporter les modification nécéssaire a mon programme.
Commenter la réponse de EnguerrandP

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.