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 :

Enregister sous nom et type de fichier contraints et vérification de la réponse [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2023
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2023
    Messages : 7
    Par défaut Enregister sous nom et type de fichier contraints et vérification de la réponse
    Bonjour,

    Je suis nouveau sur ce forum. Au niveau de mes connaissances Excel et VBA, je me définirais comme un bricoleur averti.

    J'ai un programme VBA Excel qui traite et croise des fichiers Excel, et je voudrais ouvrir une fenêtre de dialogue "Enregistrer sous" en contraignant le nom du fichier et le type du fichier. Par exemple, je veux que mon fichier soit "Licences.txt". et je souhaite aussi laisser l'opérateur choisir le chemin pour enregistrer.
    Jusque là j'arrive à ce que je veux avec une macro de ce type.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Macro1()
     
    Dim Filename As String
    Filename = "Licences"
     
    Application.Dialogs(xlDialogSaveAs).Show (Filename), 20
     
    End Sub
    Jusque là, ça fonctionne, Mais je veux, en plus vérifier si l'opérateur a cliqué sur "Enregistrer" ou "Annuler".
    Et là, ça ne va plus.

    VBA refuse que je teste de cette façon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If (Application.Dialogs(xlDialogSaveAs).Show(Filename) ,20) = False Then
    Je ne peux tester que sur If (Application.Dialogs(xlDialogSaveAs).Show(Filen)) = False Then
    L'extension n'est pas toujours la bonne et en plus ça ouvre une 2e boite de dialogue "Enregistrer sous"

    J'ai essayé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Essai As Boolean
    Essai = Application.Dialogs(xlDialogSaveAs).Show (Filename), 20
    Mais VBA m'indique une erreur de compilation. Et à priori, c'est ",20" qui gène VBA. Mais si je le retire, je ne contraints plus le type de fichier.

    Je cherche depuis plus d'une semaine, sans succès. Si l'un d'entre vous a la solution, je suis preneur.
    Merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir Forpp

    Donc effectivement novice en VBA et tout faux pour commencer

    Il faut juste demande à l'utilisateur de choisir son dossier, puisque tout le reste est contraint
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub recup()
    Dim chemin As String
    Dim Repertoire As FileDialog
    
    Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)
    Repertoire.Show
    If Repertoire.SelectedItems.Count > 0Then chemin = Repertoire.SelectedItems(1)
    EndSub
    A+
    Dernière modification par Invité ; 13/11/2023 à 17h37.

  3. #3
    Membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2023
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2023
    Messages : 7
    Par défaut
    Bonsoir BrunoM45

    Désolé, mais ta solution ne fonctionne pas.
    VBA bloque sur la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)Repertoire.Show
    Pour laquelle il dit : Erreur de compilation / Attendu : Fin d'instruction

    Je ne peux pas tester ta solution.

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Citation Envoyé par Forpp Voir le message
    Bonsoir BrunoM45

    Désolé, mais ta solution ne fonctionne pas.
    VBA bloque sur la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)Repertoire.Show
    Pour laquelle il dit : Erreur de compilation / Attendu : Fin d'instruction

    Je ne peux pas tester ta solution.
    Salut, cette ligne doit être écrite sur 2 lignes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)
    Repertoire.Show

  5. #5
    Membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2023
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2023
    Messages : 7
    Par défaut
    Désolé, mais ça ne répond pas à ma question.
    On peut enregistrer un chemin, ce n'est pas ce que je recherche, mais surtout on ne peut pas imposer le nom et le type de fichier, ni contrôler la réponse faite par l'opérateur

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonsoir Forpp

    J'ai corrigé le code que j'ai déposé, le coller n'a pas fonctionné comme il faut

    A tester

  7. #7
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Essaie ceci:

    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
    Sub Macro1()
     
        Dim Filename As String
        Dim FilePath As Variant
     
        Filename = "Licences"
     
        ' Affiche la boîte de dialogue "Enregistrer sous"
        FilePath = Application.GetSaveAsFilename(Filename, FileFilter:="Text Files (*.txt), *.txt")
     
        If FilePath <> False Then
            ' L'utilisateur a cliqué sur "Enregistrer"
            ' FilePath contient le chemin complet du fichier sélectionné
            ' Enregistre le fichier
            ActiveWorkbook.SaveAs FilePath, FileFormat:=xlTextMSDOS
            MsgBox "Fichier enregistré avec succès: " & FilePath
        Else
            ' L'utilisateur a cliqué sur "Annuler" ou a fermé la boîte de dialogue
            MsgBox "Enregistrement annulé par l'utilisateur."
        End If
     
    End Sub

  8. #8
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Citation Envoyé par Forpp Voir le message

    VBA refuse que je teste de cette façon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If (Application.Dialogs(xlDialogSaveAs).Show(Filen) ,20) = False Then
    Bonsoir, si tu as écrit Filen au lieu de Filename comme dans ta déclaration de variable, ça risque pas de fonctionner

  9. #9
    Membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2023
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2023
    Messages : 7
    Par défaut
    Aïe, le mauvais gag du copié qui a mal collé
    J'ai corrigé le post.
    Mais sur mon programme, il n'y a pas cette erreur. Il y a bien "Filename" partout.

    Merci de ma l'avoir signalée.

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

Discussions similaires

  1. Macro pour enregistrer sous / nom du fichier
    Par vinzu dans le forum VBA Word
    Réponses: 12
    Dernier message: 05/11/2014, 18h19
  2. Copier un fichier sous un nouveau nom à partir d'un fichier délimité
    Par mathieu_r dans le forum Développement de jobs
    Réponses: 6
    Dernier message: 26/04/2009, 21h21
  3. fonction enregister sous pour un fichier
    Par popofpopof dans le forum VBA Access
    Réponses: 10
    Dernier message: 24/04/2008, 23h16

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