IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Création dossier par VBA [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de Djromé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 172
    Points : 93
    Points
    93
    Par défaut Création dossier par VBA
    Salut les Kracks,

    Je souhaiterai faire des sauvegardes automatiques d'un dossier excel qui viendraient automatiquement se sauver dans un file nommée : DEC2010 (mois en cours) et ainsi de suite...
    Est-ce possible de créer un dossier sur un drive fixe (R:\Dossier\) indiqué par la macro sachant que ce dernier devrait changer chaque mois ou faut-il créer un batch?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.SaveAs "R:\Dossier\Moisencourtannéeencours\Mondossier.xls

    D'avance merci
    Merci les kracks,

    Apprendre à un imbécile, c'est comme soigner un mort
    "alors avec moi, bon courage!"
    (дурака учить, что мертвого лечить, c'est plus beau en Russe!)

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.


    Au moment de faire la sauvegarde, tu peux vérifier si le dossier du mois existe et, si non, le créer.
    Pour cela voir en FAQ (c'est la même question que la discussion de carlux)

    Cordialement,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Doss As String
     
    Doss = "C:\Documents and Settings\Administrateur\Bureau\TEST"
    If Dir(Doss, vbDirectory) = "" Then MkDir Doss
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  4. #4
    Membre régulier Avatar de Djromé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 172
    Points : 93
    Points
    93
    Par défaut
    Salut Mercatog,

    Merci encore!
    Merci les kracks,

    Apprendre à un imbécile, c'est comme soigner un mort
    "alors avec moi, bon courage!"
    (дурака учить, что мертвого лечить, c'est plus beau en Russe!)

  5. #5
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut,une autre manière d'y parvenir sans les problemes de MkDir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Option Explicit
     
    Private Declare Function SHCreateDirectoryEx Lib "Shell32.dll" Alias "SHCreateDirectoryExA" _
                                                 (ByVal hwnd As Long, ByVal pszPath As String, ByVal lngsec As Long) As Long
     
    ' Pour valeur retournée dans Rep
    ' Voir http://msdn.microsoft.com/en-us/library/bb762131(VS.85).aspx
    ' et   http://msdn.microsoft.com/en-us/library/ms681381(VS.85).aspx
    Private Sub CreationDossier(sDos As String)
    Dim Rep As Long
        Rep = SHCreateDirectoryEx(0&, sDos, 0&)
    End Sub
     
    Sub Test()
    Dim sDossier As String
        sDossier = "C:\repA\repB\repC\repD\repE\repF"
        CreationDossier sDossier
    End Sub

  6. #6
    Membre régulier Avatar de Djromé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 172
    Points : 93
    Points
    93
    Par défaut
    Salut les Kracks,

    Mon code finale pour créer un dossier sous le format DEC2010:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Option Explicit
     
    Sub Dossier()
     
    'Faire apparaitre les 3 premieres lettres des mois en cours (idem en anglais)
     
    'Partie de code pour ajouter la creation de dossier automatique si inexistant et au format 2010DEC
     
    Dim Doss As String
     
    Dim Drive As String
     
    Dim x ' variable des mois
     
    Dim y ' variable des annees
     
    Drive = "C:\Test\"
     
    x = UCase(Left(Format(Date, "mmmm"), 3)) 'affiche les 3 premiers caracteres en majuscule du mois en cours
     
    y = UCase(Format(Date, "YYYY")) 'affiche l'annee en cours
     
    Doss = x & y
     
    If Dir(Drive & Doss, vbDirectory) = "" Then MkDir Drive & Doss
     
    MsgBox ("Le dossier " & x & y & " a ete cree")
     
    End Sub
    Merci à tous pour votre aide
    Merci les kracks,

    Apprendre à un imbécile, c'est comme soigner un mort
    "alors avec moi, bon courage!"
    (дурака учить, что мертвого лечить, c'est plus beau en Russe!)

  7. #7
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Tu pouvais simplifier comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Dossier()
    Dim Doss As String
     
    Doss = "C:\Test\" & UCase(Format(Date, "mmmyyyy"))
    If Dir(Doss, vbDirectory) = "" Then
         MkDir Doss
         MsgBox "Le dossier " & Doss & " a été crée"
    End If
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fermer un dossier par VBA
    Par GuyDuLac dans le forum VBA Access
    Réponses: 1
    Dernier message: 28/07/2014, 10h02
  2. Liste dossiers par VBA
    Par orambaud dans le forum Général VBA
    Réponses: 7
    Dernier message: 17/04/2008, 20h47
  3. création graphique par VBA
    Par Toad08 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/02/2008, 13h02
  4. Réponses: 15
    Dernier message: 22/10/2007, 11h14
  5. Création de label par VBA (excel)
    Par WagaSeb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/10/2006, 14h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo