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 :

Enregistrer sur le bureau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 94
    Par défaut Enregistrer sur le bureau
    Bonjour,

    Je voudrais en cliquant sur un bouton "officialiser" d'un fichier excel, enregistrer ce même fichier avec un nom spécifique dans un répertoire donné. Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Dim MonFichier1
            MonFichier1 = "DT " & Worksheets("Saisie").Range("P2").Value & " - Rev. " & Worksheets("Saisie").Range("Q2").Value & ".xls"
     
            ChDir "\\Fraix01fs01\areva\Affaires\DT EN COURS"
            ActiveWorkbook.SaveAs Filename:="\\Fraix01fs01\areva\Affaires\DT EN COURS\" & MonFichier1, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     
            Unload MotDePassePM
            MsgBox "Votre DT a été enregistrée dans le fichier DT en cours."
            Unload MotDePasseOfficialiser

    Comment faire ce même enregistrement sur le bureau de l'utilisateur?

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour,
    un petit lien pour t'aider
    http://access.developpez.com/faq/?pa...Rep#SpecialDir

    Sinon essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    rep=Environ("USERPROFILE") & "\Bureau\"
    ActiveWorkbook.SaveAs Filename:=rep & MonFichier1, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Par défaut
    Bonjour
    Peut être une piste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    environ("userprofile") & "\desktop

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Ce sera (selon la machine) Bureau chez Pierre, Desktop chez Peter et no né qué chez Pedro ...

    Alors ?

    Mais ce sera toujours le handle 0....

    Donc :

    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
    30
    31
    32
    Option Explicit
    Private Type SHITEMID
      cb As Long
      abID As Byte
    End Type
     
     
    Private Type ITEMIDLIST
      mkid As SHITEMID
    End Type
     
     
    Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
     
    Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
     
    Private Sub Command1_Click()
     MsgBox GetSpecfold(0) ' affiche le chemin complet du Bureau
    End Sub
     
    Private Function GetSpecfold(CSIDL As Long) As String
      Dim res As Long, chem As String
      Dim IDL As ITEMIDLIST
      res = SHGetSpecialFolderLocation(100, CSIDL, IDL)
      If res = 0 Then
        chem$ = Space$(512)
        res = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal chem$)
        GetSpecfold = Left$(chem, InStr(chem, Chr$(0)) - 1)
        Exit Function
      End If
      GetSpecfold = ""
    End Function
    Et on ne se préoccupe plus de savoir si c'est "Bureau", "Desktop", "Escritorio" ... o no sé cuanto ... (le bon chemin du bureau sera ainsi extrait, quelle que soit la machine.

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Par défaut
    Bonjour
    Ce sera (selon la machine) Bureau chez Pierre, Desktop chez Peter et no né qué chez Pedro ...

    Alors ?
    Sur ma machine ça s'appelle bureau et pourtant en utilisant desktop dans mon code cela fonctionne.

    La plupart du temps en VBA les instructions anglaises s'adaptent à la langue de la machine (sinon ce serait une misère)

  6. #6
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour à tous,


    Merci beaucoup UCFOUTU pur ce code.


    Sur ma machine ça s'appelle bureau et pourtant en utilisant desktop dans mon code cela fonctionne
    Vraiment je ne peux pas tester pour l'instant mais je suis curieux de le vérifier.
    En tout cas si ça marche tant mieux.
    A+

  7. #7
    Membre éclairé
    Inscrit en
    Novembre 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 61
    Par défaut
    Bonjour à tous

    une autre solution, code de MichelXLD :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim Chemin As String
    Chemin = CreateObject("WScript.Shell").SpecialFolders("Desktop")
    Bonne journée
    @+

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Citation Envoyé par fgiambelluco Voir le message
    Bonjour

    Sur ma machine ça s'appelle bureau et pourtant en utilisant desktop dans mon code cela fonctionne.

    La plupart du temps en VBA les instructions anglaises s'adaptent à la langue de la machine (sinon ce serait une misère)
    Salut, fgiambelluco

    tiens !
    Essaye donc (je viens de le faire) ton "truc" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    toto =  Environ("userprofile") & "\desktop"
    msgbox toto ' qui te montreras que toto contient (chez moi) : "C:\Documents and Settings\marques.MARQUES-3FE2S1B\desktop"
    essaye ensuite d'utiliser toto comme chemin d'accès (pour voir) si, comme moi, ton Bureau s'appelle "Bureau" et non Desktop ...

    Reviens ensuite, hein ... (un chemin d'accès est une chaîne de caractères et non une "instruction"). Il faut toujours essayer avant d'affirmer (de sorte à ne pas troubler les différents forumeurs présents et futurs sur ce forum ...)

    p

  9. #9
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Par défaut test sur un XP
    Bonjour
    Le but n'était pas de déclencher une guerre.
    Il faut toujours essayer avant d'affirmer (de sorte à ne pas troubler les différents forumeurs présents et futurs sur ce forum ...)
    J'ai testé mon code, et c'est pas parce qu'il renvoi Desktop qu'il ne sait pas l'interpréter.

    Voila le code que j'ai testé (je te l'avoue sur un vista), et qui renvoi le premier fichier de mon Bureau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim toto
    toto = Environ("userprofile") & "\desktop"
    MsgBox Dir(toto & "\*.*")
    Je viens de tester sur un XP est là effectivement le Bureau s'appelle Bureau : Donc autant pour moi.

  10. #10
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 94
    Par défaut Resolu
    Merci!

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/03/2015, 16h24
  2. [IText] Enregistrer sur le bureau
    Par swissmade dans le forum Documents
    Réponses: 2
    Dernier message: 13/12/2009, 19h39
  3. application sur le bureau
    Par SQUAL dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 14/06/2004, 17h18
  4. TDBGrid - Un enregistrement sur plusieurs lignes
    Par BRODU dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/05/2004, 07h53
  5. Raccourci sur le bureau
    Par senateur dans le forum Langage
    Réponses: 7
    Dernier message: 05/09/2002, 15h17

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