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 :

Sauvegarde classeur excel selon nom de cellule à la fin de la macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut Sauvegarde classeur excel selon nom de cellule à la fin de la macro
    Bonjour à tous,

    Je souhaiterais qu'à la fin de ma macro mon document excel soit sauvegardé automatiquement et que le nom de la sauvegarde soit le texte contenu dans une cellule bien défini.

    Merci pour votre aide, bonne journée

    Cordialement

    Vincent

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Tu peux affecter le contenu d'une cellule à la propriété FileName de la propriété Saveas.

    Regarde l'aide en ligne dans ton éditeur VBE sur ces mots-clés, et reviens si nécessaire.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut
    Bonjour Marcel,

    En fait j'ai trouvé quelques lignes de codes dans un des tutos proposé, mais j'ai du mal à l'adapter pourrais-tu m'aider à le décrypter ?

    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
     
    Sub TestSave ()
     
    dim MonClasseur As Workbook 'déclaration de variable
    Dim ws0 As Worksheet 'Déclaration des variables
        Set ws0 = Worksheets("Macro") 'Attribution de la valeur
    Dim nom as String
    Set nom= ws0.[E34]'nom du fichier
     
    Set MonClasseur = Application.Workbooks.Add
    With MonClasseur.Worksheets (1).Cells(1, 1)
    .Value=1
    .resize(100).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1, Stop:=100, Trend:=False
    End With
    MonClasseur.SaveCopyAs nom".xls"'la syntaxe est correcte ?
    Debug. Print MonClasseur.Saved
    End Sub
    Merci pour ton aide

    Cordialement,

    Vincent

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut enregistrement
    Salut Vincent,

    La question est de savoir l'action que tu souhaites voir réalisée par ton code.
    Ensuite, vient son développement.

    Néammoins, quelques remarques :

    - Généralement, les déclaration Dim débutent le code
    - Suivent les affectations de variables aux objets par la mérhode Set
    - Ces variables sont vidées en fin de code

    Ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set lavariable = Nothing
    - Il ne faut pas abuser de ces affectations. Elles trouvent vraiment leur utilité dans les nombreux appels aux objets auxquels elles sont affectées.

    Dans ton cas (la variable "wso" ne semble pas affectée dans ta proposition)

    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
    Sub TestSave()
     
    Dim MonClasseur As Workbook 'déclaration de variable
    Dim nom As String
     
    nom = Sheets(1).[E34] 'nom du fichier
     
    Set MonClasseur = Application.Workbooks.Add
     
    With MonClasseur
            With .Worksheets(1).Cells(1, 1)
                .Value = 1
                .Resize(100).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1, Stop:=100, Trend:=False
            End With
            'Si sauvegarde d'une copie
            '.SaveCopyAs nom & ".xls"
            'Si sauvegarde du classeur actif
            .SaveAs Filename:=nom & ".xls"
    End With
     
    Set MonClasseur = Nothing
     
    End Sub

  5. #5
    Membre éprouvé
    Homme Profil pro
    Back Office Marchés
    Inscrit en
    Mars 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Back Office Marchés
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2011
    Messages : 65
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonClasseur.SaveCopyAs "nom.xls"'la syntaxe est correcte ?
    Bonjour,

    Regarde plutôt la méthode SaveAs plutôt que SaveCopyAs. La première va enregistrer ton fichier tandis que la seconde va créer une copie de ce dernier.

    Si ta macro est attachée à ton classeur alors tu peux utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.SaveAs Filename:="nom.xls"
    Dans l'exemple de ton tuto le programme crée une variable objet MonClasseur qui réagit comme un objet workbook.

    Pour répondre à ta question initiale, si le nom de ton fichier se trouve dans une cellule, récupère la valeur de cette cellule, affecte la à une variable string et passe cette variable comme paramètre de SaveAs.

    Reviens moi si je ne suis pas clair.

    Cordialement,

    Guillaume

    Edit : Désolé Marcel je n'avais pas vu ta réponse

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut
    Je n'ai pas encore essayé le code mais j'aimerais comprendre cette partie. Qu'est ce qu'il se passe et si j'ai plusieurs feuilles dans mon classeur ça marche également ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With MonClasseur
            With .Worksheets(1).Cells(1, 1)
                .Value = 1
                .Resize(100).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1, Stop:=100, Trend:=False
            End With
    Cordialement

    Vincent

  7. #7
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut feuilles
    Salut Vincent,

    Il te suffit de balayer la collection des feuilles de travail de ton classeur

    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
    Public Sub essai()
     
    'le code précédent
     
    Dim wk As Worksheets
     
    With monclasseur
            For Each wk In .Worksheets
                With wk.Cells(1, 1)
                    .Value = 1
                    .Resize(100).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1, Stop:=100, Trend:=False
                End With
                'la suite du code
            Next wk
    End With
    'la suite du code
     
    End Sub

  8. #8
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut
    Désolé mais je ne comprends toujours pas le code :

    Qu'entends tu par : "le code précédent" et "la suite du code"

    D'autre part j'ai du mal à saisir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With wk.Cells(1, 1) ' pourquoi sélectionner une cellule en particulier (A1)?
                    .Value = 1 'pourquoi lui attribuer une valeur ?
                    .Resize(100).DataSeries Rowcol:=xlColumns, Type:=xlLinear, ' Step:=1, Stop:=100, Trend:=False'et là je ne cerne pas l'intérêt de cette ligne
    Merci pour vos explications

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

Discussions similaires

  1. [AC-2007] Sauvegarder un classeur excel qui change de nom
    Par Bernard67 dans le forum VBA Access
    Réponses: 4
    Dernier message: 04/02/2013, 08h13
  2. [XL-2007] Export d'un classeur Excel selon un format CSV
    Par Tonton_glenn dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/11/2009, 14h11
  3. [Excel]Suite de noms de cellules
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/05/2006, 13h16
  4. Réponses: 8
    Dernier message: 05/05/2006, 16h33
  5. [VBA EXCEL]Sauvegarde classeur
    Par Tan dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/02/2005, 10h28

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