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 :

Chemin de sauvegarde et variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 42
    Par défaut Chemin de sauvegarde et variable
    Bonjour à tous,

    Je suis en train de créer une petite macro qui devrait me permettre d'automatiser la sauvegarde de document sous un nom de répertoire définie par l'utilisateur.
    J'explique mon raisonnement. Sur la feuille de calcul, l'utilisateur voit une bouton lui permettant de commencer à travailler.Quand il clique, cela ouvre un UserForm lui demandant le chemin de sauvegarde. Une fois rentré, le fichier est sauvegardé sous un nom définie par deux cellules.
    Ce que j'aimerais c'est crée une fonction qui me permettrais de conserver le chemin de sauvegarde rentré par l'utilisateur. Le problème est que je n'arrive pas à conserver la valeur du chemin de sauvegarde...
    Peut être cela est t'il plus parlant.

    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
    Public Function Saves()
     
        Dim way As String
        Dim ProjectName As String
        Dim ProjectNumber As String
     
            Range("B1").Select
                ProjectNumber = ActiveCell.Text
            Range("B2").Select
                ProjectName = ActiveCell.Text
        If ProjectName = "0" Then
            MsgBox ("Enter the Project Name in Report MR Sheet")
            Exit Function
        End If
     
        If ProjectNumber = "0" Then
            MsgBox ("Enter the Project Number in Report MR Sheet")
            Exit Function
        End If
     
        way = Debut.SaveWay.Value
        ActiveWorkbook.SaveAs Filename:=way & ProjectName & "-" & ProjectNumber & ".xls"
     
    End Function
    Merci de votre aide.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Salut,

    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 Saves()
     
        Dim way As String
        Dim ProjectName As String
        Dim ProjectNumber As String
     
        ProjectNumber = Range("B1").Value
        ProjectName = Range("B2").Value
     
        If ProjectName = "0" Then
            MsgBox ("Enter the Project Name in Report MR Sheet")
            Exit Sub
        End If
     
        If ProjectNumber = "0" Then
            MsgBox ("Enter the Project Number in Report MR Sheet")
            Exit Sub
        End If
     
        way = "C:\Documents and Settings\andre.dorian\Bureau\"
        ActiveWorkbook.SaveAs Filename:=way & ProjectName & "-" & ProjectNumber & ".xls"
     
    End Sub
    Il faut utiliser une procédure ici et non une fonction car tu n'as aucune valeur "retournée".

    De plus, enlève les .Select, ils n'apportent rien de bon. .Value est plus approprié ici que .Text aussi.

    Remplace ProjectName = "0" et ProjectNumber = "0" par ProjectName = "" et ProjectNumber = "" si jamais tu veux que les MsgBox s'affichent si les cellules sont vides. Dans ton cas, elles ne s'afficheront que si 0 est présent dans ces cellules. Dans le cas où elles sont vides, ça ne va pas le faire

    J'ai mis ton "way" en dur mais tu peux le changer comme tu le souhaites : c'était juste pour les tests.

    Je viens de tester chez moi, cela fonctionne parfaitement.

    Ensuite, si tu veux conserver ces chemins, tu peux les mettre dans une variable ou même dans un tableau afin d'effacer les cellules par la suite mais c'est à toi de voir pour cela vu que je n'ai aps très bien compris ça :

    Ce que j'aimerais c'est crée une fonction qui me permettrais de conserver le chemin de sauvegarde rentré par l'utilisateur. Le problème est que je n'arrive pas à conserver la valeur du chemin de sauvegarde...
    Au plaisir,

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Je ne sais pas si j'ai bien compris mais il me semble que tu veux mémoriser le chemin dans le classeur de base ? si oui,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        way = "C:\Documents and Settings\andre.dorian\Bureau\" & ProjectName & "-" & ProjectNumber & ".xls"
        'supposons que tu veux mémoriser dans la feuille "Rapport", colonne A
        Sheets("Rapport").Range("A" & Range("A65536").End(xlUp).Row + 1) = way
        ActiveWorkbook.Save
        'Et pour l'enlever de la copie,
        Sheets("Rapport").Range("A" & Range("A65536").End(xlUp).Row) = ""
        ActiveWorkbook.SaveAs Filename:=way
    Probablement que tu devras vider toute la colonne A pour la copie.
    A+

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 42
    Par défaut
    Salut,

    Merci pour la réponse, mais dans le code de DeaD78 ne répond pas à toutes mes attentes (et exigent en plus ...) ou alors c'est l'histoire de d'avoir mis le chemin de sauvegarde en dur.

    Voila, mon userform s'ouvre et demande le chemin de sauvegarde. Je veux que la valeur entrée devienne ma valeur "way". Ensuite, j'ai choisis de faire une fonction parce que j'ai une dizaine de feuille de calcul et je pensais que c'été plus simple....

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour,
    Petit cour d'algorithmique
    Une fonction renvoie OBLIGATOIREMENT une valeur.

    Ta fonction ne renvoie AUCUNE valeur. Tu as peut être fait un mauvais choix cela arrive. Dans ce genre de cas on fait une sous-procedure (subroutine) en vba il suffit de remplacer Function par sub. Comme te l'a gentillement fait Dead

    Maintenant essaye d'être précis

    La valeur de ta variable way tu veux l'utiliser dans d'autre macro? uniquement dans celle là? Comment l'utilisateur la rentre? S'ais-tu ce qu'est une variable public (parfois appelé global)? Est-ce que cela pourrais te convenir?

  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,

    Il existe plusieurs solutions pour sauvegarder, dans une feuille cachée, dans une etiquette, un exemple dans le tag de l'userform :

    Même après avoir fermé le classeur tu pourras retrouver ta valeur


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

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/06/2006, 17h50
  2. [C++.NET] Idee pour sauvegarde de variables
    Par raboin dans le forum VC++ .NET
    Réponses: 5
    Dernier message: 02/05/2006, 16h03
  3. [Session]Sauvegarde des variables de sessions en base
    Par sheura dans le forum Servlets/JSP
    Réponses: 15
    Dernier message: 03/01/2006, 10h19
  4. Réponses: 3
    Dernier message: 11/11/2005, 12h59
  5. Réponses: 5
    Dernier message: 21/10/2005, 11h48

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