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

Résolu
EnguerrandP - 6 mai 2013 à 21:10
 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 .

13 réponses

Utilisateur anonyme
7 mai 2013 à 12:50
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
3
EnguerrandP
11 mai 2013 à 10:35
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
3
Utilisateur anonyme
6 mai 2013 à 21:35
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.
0
Utilisateur anonyme
6 mai 2013 à 21:36
P.S. IL y a une section VBA dans la branche VB6 du forum.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
0
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
0
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.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
7 mai 2013 à 16:50
-> 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
0
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 .
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
9 mai 2013 à 17:38
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
0
Bonjour
Merci pour ta réponce .
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
11 mai 2013 à 15:21
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
0
EnguerrandP
11 mai 2013 à 15:24
bonjour ,
Merci pour ta présision je vais imédiatement apporter les modification nécéssaire a mon programme.
0
Rejoignez-nous