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 Fichier à partir d'un UserForm [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Avril 2014
    Messages : 15
    Par défaut Enregistrer Fichier à partir d'un UserForm
    Bonjour,

    J'ai commençé le VBA il y a deux semaines et j'ai quelques problèmes pour faire marcher certaines fonctions en VBA
    Mon problème est que je n'arrive pas à sauvegarder un fichier Excel que l'utilisateur choisis dans un UserForm pour y appliquer une Macro

    Dans un fichier Excel, j'ai un UserForm et dans mon UserForm j'ai :

    - Un bouton pour choisir le fichier à sauvegarder (CommandButton1)
    - un TextBox (TextBox1)
    - un autre bouton pour sauvegarder le fichier (CommandButton3)

    Voici le code de CommandButton1 qui fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim Fichier as String
    Private Sub CommandButton1_Click()
     
        Set oFile = Application.FileDialog(1) '(msoFileDialogOpen)
        oFile.AllowMultiSelect = False
        If oFile.Show = -1 Then
            TextBox1.Text = oFile.SelectedItems(1)
        End If
        Fichier = TextBox1.Text
     
        Set oFile = Nothing
    End Sub
    Le Code de CommandButton3 qui ne fonctionne pas et me met l'erreur " 'Erreur d'execution 9' L'indice n'appartient pas à la selection" sur "Workbooks(Fichier).SaveAs Filename:=fName", l'utilisateur choisit le nom du fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandButton3_Click()
     
    Do
        fName = Application.GetSaveAsFilename
    Loop Until fName <> False
    Workbooks(Fichier).SaveAs Filename:=fName
     
    End Sub
    Toute aide est la bienvenue, merci !

    Cordialement,

  2. #2
    Membre expérimenté
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Novembre 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2013
    Messages : 120
    Par défaut
    Bonjour,

    Je ne suis pas un pro en VBA mais ce code fonctionne, reste plus qu'a l'adapter aux spécificités du besoin

    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
    réponse = MsgBox("Voulez vous sauvegarder avant de quitter ?", vbYesNoCancel)
     
        'Si réponse oui, on sauvegarde et on ferme le classeur ou se trouve la macro
        If réponse = vbYes Then
     
     
           ThisWorkbook.Save
           ThisWorkbook.Close
     
        'Si non, on ferme sans enregistrer
        ElseIf réponse = vbNo Then
     
            ThisWorkbook.Close (SaveChanges = False)
     
        'Si cancel, on ne fait rien
        ElseIf réponse = vbCancel Then
     
        End If

  3. #3
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Avril 2014
    Messages : 15
    Par défaut
    Merci Tooth pour ta réponse.
    Mais ton code ne résout pas le problème.
    Sans tenir compte des if, car on va considérer que l'utilisateur voudra enregistrer quelque soit le cas,

    pourra me permettre d'enregistrer le fichier Excel sur lequel il y a mon UserForm (dans mon cas, vide en dehors de mon UserForm) mais pas d'enregistrer le fichier choisis par l'utilisateur.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Novembre 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2013
    Messages : 120
    Par défaut
    Ta variable "fichier" est déclarée hors des fonctions, ce qui veut dire que tu peux la réutiliser dans d'autre fonction. Je pense que le code suivant résoudra le problème, je ne l'ai pas testé mais je pense que sa fonctionne. Parcontre, la variable "fichier" ne devrait pas être déclaré en tant que Workbook puisque tu manipules des classeurs ?


  5. #5
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Avril 2014
    Messages : 15
    Par défaut
    En faite, la variable Fichier est déclaré en String pour pouvoir stocker le chemin du fichier "C:\...\monfichier.xls" et non pas enregistrer le classeur dans un workbook, je voulais l'utiliser dans ce style la:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("C\..\monfichier.xls").SaveAs Filename:="CopieClasseur.xls"
    -->Provoque Erreur Execution 9
    Ou comme sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("monfichier.xls").SaveAs Filename:="CopieClasseur.xls"
    --> Provoque Erreur Execution 9
    Ou comme sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(Fichier).SaveAs Filename:="CopieClasseur.xls"
    --> Provoque Erreur Exécution 9
    Ou comme sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(Textbox1.Text).SaveAs Filename:="CopieClasseur.xls"
    --> Provoque Erreur Exécution 13 "Incompatibilité de type"

    Autre solution que j'ai essayé, qui crée bien un classeur2.xls mais vide... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim wb as Workbook
     
    Private Sub CommandButton3_Click()
    Set wb = GetObject("C:\...\monfichier.xls")
    wb.Activate
    wb.SaveAs Filename:="Classeur2.xls"
    Concernant ton "fichier.save", sa ne fonctionne pas, sa me met "Erreur d'éxecution '424' Objet Requis"

    Je commence vraiment à desespérer :/

  6. #6
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Avril 2014
    Messages : 15
    Par défaut
    Solution trouvé avec 3 boutons :

    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
    ' Bouton 1
    Dim Fichier As String
     
    Private Sub CommandButton1_Click()
     
        Set oFile = Application.FileDialog(1) '(msoFileDialogOpen)
        oFile.AllowMultiSelect = False
        If oFile.Show = -1 Then
            TextBox1.Text = oFile.SelectedItems(1)
        End If
        Set oFile = Nothing
     
    End Sub
     
    ' Bouton 2
     
    Private Sub CommandButton2_Click()
     
        Fichier = TextBox1.Text
        Workbooks.Open Fichier
     
    End Sub
     
    ' Bouton 3
    Private Sub CommandButton3_Click()
     
        Nom_Fichier = Application.GetSaveAsFilename( _
            fileFilter:="Fichier Excel (*.xls), *.xls")
        ActiveWorkbook.SaveAs Nom_Fichier
     
    End Sub

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

Discussions similaires

  1. Enregistrer a partir d'un userform
    Par pev64 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/02/2013, 21h43
  2. Enregistrer fichier à partir d'une servlet
    Par coshibe dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 09/12/2011, 15h07
  3. Réponses: 1
    Dernier message: 20/05/2011, 13h25
  4. Exploiter un userform qui se trouve dans un fichier à partir d'excel
    Par Benjycool dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/02/2009, 08h25
  5. Réponses: 27
    Dernier message: 16/12/2008, 11h39

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