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 :

Modifié le chemin d'une boite de dialogue [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de mentat
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    août 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Industrie

    Informations forums :
    Inscription : août 2009
    Messages : 139
    Points : 99
    Points
    99
    Par défaut ouvrire une boite de dialogue avec le chemin de poste de travail par defaut
    Bonjour à tous...
    Tout d'abord un grand merci à Developpez et tout ceux qui l'accompagne, grâce à vous je commence à me débrouiller en VBA...

    Mais je bloc encore lol

    Voilà mon petit souci, j'ai crée un bouton me permettant d'ouvrire la boite de dialogue Enregistrer sous et de précharger le nom du fichier avant la sauvegarde à partir de mon contenu dans excel.

    jusque ici tout va bien. Je souhaiterai maintenant modifier le chemin par défaut de la boite de dialogue et c'est là que je bloc...

    Voici mon code:
    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
     
    Private Sub CommandButton5_Click()
     
    'Chemin où devra être sauvé le fichier Excel
    chemin_sauvegarde = ThisWorkbook.Path & "\Sauvegarde mesure à vide\"
     
    'création du nom de la sauvegarde avec date caractéristique
    a = Sheets("Fiche technicien").Range("date").Value
    b = Sheets("Fiche technicien").Range("nomdelessai").Value
    C = Sheets("Fiche technicien").Range("puissance").Value
    d = Sheets("Fiche technicien").Range("U").Value
    Nom_sauvegarde = a & "_" & b & "_" & C & "kW" & "_ " & d & "V"
     
    'J'ai essayer avec Chdir mais ça ne fonctionne pas...
    ChDir "C:\Documents and Settings\BODET\Bureau\Dossier Moteur à Vide\Sauvegarde mesure à vide\"
     
    'Ouvrire la boite de dialogue "Enregistrer sous" + nom de sauvegarde
    Application.Dialogs(xlDialogSaveAs).Show (Nom_sauvegarde & ".xls")
     
    End Sub
    Merci pour votre aide...

  2. #2
    Membre chevronné Avatar de aalex_38
    Inscrit en
    septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 1 631
    Points : 1 996
    Points
    1 996
    Par défaut
    Bonjour,

    Il y a peu être plus simple, mais c'est pas la grande forme aujourd'hui [Testé]:

    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
    Sub essaienreg()
    Dim NomInit As String
    NomInit = ThisWorkbook.Path & "\test.xls" 'Ici entrer le chemin voulu
    ' NomInit = ThisWorkbook.Path & "\" 'test.xls" => sans indiquer le nom du chemin par défaut
    If EnregSous(NomInit) Then
        ThisWorkbook.SaveAs NomInit
    End If
    End Sub
     
    Function EnregSous(ByRef NomInit As String) As Boolean
    Dim Dossier As FileDialog
        ' Application.FileDialog (msoFileDialogFolderPicker)
        Set Dossier = Application.FileDialog(msoFileDialogSaveAs)
        With Dossier: .AllowMultiSelect = False
     
            .InitialFileName = NomInit
            .Title = "Enregistrer Sous" ' & libdos
            If .Show = -1 Then: NomInit = .SelectedItems(1): EnregSous = True:
     
    End With
    End Function

    Nb : Ma fonction est byref c'est à dire qu'elle modifie la variable d'appel, certains n'aiment pas, dans ce cas la fonction peut retourner une chaine de caractère a la place d'un bouléen, à adapter selon.

  3. #3
    Membre régulier Avatar de mentat
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    août 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Industrie

    Informations forums :
    Inscription : août 2009
    Messages : 139
    Points : 99
    Points
    99
    Par défaut
    Merci aalex mais dans ce que tu me propose j'ai pas l'impression que j'ouvre la boite de dialogue... Et ça me parait un peu trop compliqué pour moi...lol

    Je souhaite juste changer le chemin je pense vraiment qu'il y a plus simple... Mais je trouve pas... ya pas un moyen en ajoutant des arguments à cette ligne de code???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Dialogs(xlDialogSaveAs).Show (Nom_sauvegarde & ".xls")
    Merci

  4. #4
    Membre chevronné Avatar de aalex_38
    Inscrit en
    septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 1 631
    Points : 1 996
    Points
    1 996
    Par défaut
    Si si bien sur :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Dialogs(xlDialogSaveAs).Show Nom_sauvegarde & ".xls", , True

  5. #5
    Membre régulier Avatar de mentat
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    août 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Industrie

    Informations forums :
    Inscription : août 2009
    Messages : 139
    Points : 99
    Points
    99
    Par défaut
    Heu oui ça fonctionne ça... J'arrive bien à inséré le non du fichier mais pas son chemin (le lieux de l'enregistrement)...

    j'ai trouvé dans l'aide, les arguments que je peu utilisé avec xlDialogSaveAs

    document_text, type_num, prot_pwd, backup, write_res_pwd, read_only_rec

    mais je ne sais pas à quoi ils servent...

  6. #6
    Membre chevronné Avatar de aalex_38
    Inscrit en
    septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 1 631
    Points : 1 996
    Points
    1 996
    Par défaut
    mais je ne sais pas à quoi ils servent...
    ils ne permettent pas recopier le chemin ...


    Je te propose d'utiliser la fonction que je t'ai fournie, tu n'a qu'a la recopier telle quelle et dasn ta macro tu mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    chemin_sauvegarde = ThisWorkbook.Path & "\Sauvegarde mesure à vide\"
     
    Dim NomInit As String
     
    NomInit = chemin_sauvegarde  'Ici entrer le chemin voulu
    If EnregSous(NomInit) Then
        ThisWorkbook.SaveAs NomInit
    End If

  7. #7
    Membre régulier Avatar de mentat
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    août 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Industrie

    Informations forums :
    Inscription : août 2009
    Messages : 139
    Points : 99
    Points
    99
    Par défaut
    Merci pour ton aide aalex,

    Un collègue ma donné un coup de pouce et voici le résulta.

    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
     
    Private Sub CommandButton5_Click()
     
    'Chemin où devra être sauvé le fichier Excel
    chemin_sauvegarde = ThisWorkbook.Path & "\Sauvegarde mesure à vide\"
     
    'création du nom de la sauvegarde avec date et caractéristiques
    a = Sheets("Fiche technicien").Range("date").Value
    b = Sheets("Fiche technicien").Range("nomdelessai").Value
    C = Sheets("Fiche technicien").Range("puissance").Value
    d = Sheets("Fiche technicien").Range("U").Value
    Nom_sauvegarde = a & "_" & b & "_" & C & "kW" & "_ " & d & "V" & ".xls"
     
    'Ouvrire la boite de dialogue "Enregistrer sous" puis enregistrer avec le chemin complet avec le nom du fichier
    nomcomplet = chemin_sauvegarde & Nom_sauvegarde
    ccc = Application.GetSaveAsFilename(nomcomplet)
    If ccc <> False Then
        ThisWorkbook.SaveAs nomcomplet
    End If
     
    End Sub

  8. #8
    Membre chevronné Avatar de aalex_38
    Inscrit en
    septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 1 631
    Points : 1 996
    Points
    1 996
    Par défaut
    Ok, ça fonctionne alors, c'est cool

    Juste une remarque pour la lisibilité du code tu pourrai remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    a = Sheets("Fiche technicien").Range("date").Value
    b = Sheets("Fiche technicien").Range("nomdelessai").Value
    C = Sheets("Fiche technicien").Range("puissance").Value
    d = Sheets("Fiche technicien").Range("U").Value
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With Sheets("Fiche technicien")
        a = .Range("date")
        b = .Range("nomdelessai")
        C = .Range("puissance")
        d = .Range("U")
    End With
    Edit : option explicit permet de déclarer les variables

  9. #9
    Membre régulier Avatar de mentat
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    août 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Industrie

    Informations forums :
    Inscription : août 2009
    Messages : 139
    Points : 99
    Points
    99
    Par défaut
    Merci pour le tuyaux tu as raison ce sera plus lisible....

    Encore Merci

  10. #10
    Membre régulier Avatar de mentat
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    août 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Industrie

    Informations forums :
    Inscription : août 2009
    Messages : 139
    Points : 99
    Points
    99
    Par défaut ouvrire une boite de dialogue avec le chemin de poste de travail par defaut
    Bonjour à tous.

    J'ai poster hier sur le forum afin de Modifié le chemin d'une boite de dialogue en VBA (boite de dialogue Enregistrer sous) voir lien suivant.

    http://www.developpez.net/forums/d82...oite-dialogue/

    Aujourd'hui je souhaite que le chemin de la boite de dialogue, soit celui du poste de travail de façon à trouver plus rapidement le lecteur où la sauvegarde se fera.
    Je suis donc reparti de mes resultats d'hier et après quelques recheches je me suis apperçu que ce n'était pas évident de trouver le chemin du poste de travail.
    J'ai néanmoins réussi à faire apparaitre la fenêtre du poste de travail à l'aide d'un bouton et de la fonction shell par le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CommandButton4_Click()
    a = "c:\Windows\Explorer.exe " & "/n,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
     Shell a, 1
    End Sub
    Mais suis actuellement bloqué à essayer d'assembler mes deux codes... Et toujours rien de concluant... Je commence à me demander si il est possible de le faire... Sachant qu'avec shell j'ouvre une fenetre avec un .exe et non un chemin... voici mon code.

    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
    Private Sub CommandButton3_Click()
     
    'Chemin du poste de travail, mais je sais ce n'est pas vraiment un chemin...
    chemin_sauvegarde2 = "c:\Windows\Explorer.exe" & "/n,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
     
    'création du nom de la sauvegarde avec date et caractéristiques
    With Sheets("Fiche technicien")
        a = .Range("date")
        b = .Range("nomdelessai")
        c = .Range("puissance")
        d = .Range("U")
    End With
    Nom_sauvegarde = a & "_" & b & "_" & c & "kW" & "_ " & d & "V" & ".xls"
     
    'Ouvrire la boite de dialogue "Enregistrer sous" puis enregistrer avec le chemin complet avec le nom du fichier
    nomcomplet = chemin_sauvegarde2 & Nom_sauvegarde
     
    Sheets("Impression Fiche").Copy
    ccc = Application.GetSaveAsFilename(nomcomplet)
    If ccc <> False Then
        ActiveWorkbook.SaveAs nomcomplet
    End If
    End Sub
    Merci pour votre aide.

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

    Informations forums :
    Inscription : juillet 2008
    Messages : 9 432
    Points : 31 856
    Points
    31 856
    Par défaut
    Poste de travail n'est pas un dossier.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  12. #12
    Membre régulier Avatar de mentat
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    août 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Industrie

    Informations forums :
    Inscription : août 2009
    Messages : 139
    Points : 99
    Points
    99
    Par défaut
    Je sais que ce n'est pas un dossier mais je pensais pouvoir trouver une commande me permettant de trouver les périphérique de stockage... et le plus simple était de faire cette recherche avec le poste de travail...
    J'ai beau chercher depuis deux jours... je ne trouve rien sur les forum.

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

Discussions similaires

  1. Modifier le titre d'une boite de dialogue
    Par 3aychoucha dans le forum MFC
    Réponses: 7
    Dernier message: 31/12/2012, 15h18
  2. Modifier le titre d'une boite de dialogue
    Par Sieib dans le forum jQuery
    Réponses: 4
    Dernier message: 27/09/2012, 13h15
  3. Modifier le focus dans une boite de dialogue
    Par DaveShot dans le forum SWT/JFace
    Réponses: 5
    Dernier message: 06/05/2010, 16h09
  4. Réponses: 2
    Dernier message: 19/02/2007, 13h47
  5. modifier la catpion d'une boite de dialogue
    Par yannickrohel dans le forum Windows
    Réponses: 2
    Dernier message: 26/01/2006, 13h39

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