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 un même fichier avec l'année et un Nº d'indice : File-2017-N°1, File-2017-N°2 ,.., File-2018-N°1


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 157
    Points : 60
    Points
    60
    Par défaut Enregistrer un même fichier avec l'année et un Nº d'indice : File-2017-N°1, File-2017-N°2 ,.., File-2018-N°1
    Bonjour
    je génère régulièrement un fichier qui porte toujours le même nom (Préparation de travail N°:cc/2017/N°1.xls)
    Pour que ne pas écraser le fichier généré précédement, je dois indicer le nom du fichier crée.
    Le nom de ce fichier est donc complété avec un symbole N°x où x est un nombre qui s'incrémente de manière automatique avec aussi l'année 2017 , 2018. En un recherche sur internet j'ai trouvé cet article:
    http://ericrenaud.fr/droitefichiers.htm#Top
    mais Problème rencontréé est le suivant :
    format est n'est pas juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveWorkbook.SaveAs Filename:= _Chemin  &  "\"  &  NameSansExtension  &  "-v"  &  NoIndice  &  ".xls" , _
    Ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    Public  NameSansExtension  As String 
     
    Public  ThisName  As String 
     
    Public  Chemin  As String 
     
    Public  NoIndice  As Integer
    Je comprends pas cette déclaration.

    Quelqu'un peut m'aider stp , merci

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, en t'inspirant de cette fonction et en l'adaptant à ton contexte
    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 Function RenommerFichier(sDossier As String, sNomfichier As String) As String
    Dim sNouveauNom As String
    Dim sPre As String, sExt As String
    Dim i As Long
    Dim FSO As Object
     
       Set FSO = CreateObject("Scripting.FileSystemObject" )
        If FSO.FileExists(sDossier & "\" & sNomfichier) Then
            sNouveauNom = sNomfichier
            sPre = FSO.GetBaseName(sNomfichier)
            sExt = FSO.GetExtensionName(sNomfichier)
     
            i = 0
            While FSO.FileExists(sDossier & "\" & sNouveauNom)
                i = i + 1
                sNouveauNom = sPre & Chr(40) & Format(i, "000" ) & Chr(41) & Chr(46) & sExt
            Wend
            sNomfichier = sNouveauNom
        End If
        Set FSO = Nothing
     
       RenommerFichier = sDossier & "\" & sNomfichier
    End Function
    Un exemple, qui te permettra de voir l'usage de cette fonction.
    Images attachées Images attachées  

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 157
    Points : 60
    Points
    60
    Par défaut
    Vous l'enregistrer sous format PDF pour l'imprimer après ?? j'arrive pas a adapté votre code avec le miens

  4. #4
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Gente Dame, pdf ou n'importe quel autre format enfin bref, en reprenant le code fourni par ton lien pour du xls. A toi de l'adapter à ton contexte.
    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
    Option Explicit
     
    Sub Execution()
    Dim chemin As String
    Dim MyDate As String
    Dim sNomfichier As String
     
        MyDate = Format(Now(), "dd-mm-yy")
        chemin = ActiveWorkbook.Path
     
        Workbooks.Add
        sNomfichier = RenommerFichier(chemin, "Synthèse carnet" & "-" & MyDate & ".xls")
     
        Range("A1").Select
        ActiveCell.FormulaR1C1 = "Je saisis mes données."
        ActiveWorkbook.SaveAs Filename:=sNomfichier, FileFormat:=xlNormal
        ActiveWorkbook.Close savechanges:=False
    End Sub
    Images attachées Images attachées  

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 157
    Points : 60
    Points
    60
    Par défaut
    Ca fonctionne bien , merci. J'ai pensée a ajouter aussi un bouton pour mettre sous format pdf un peu comme vous avez fais dans votre article.

  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 157
    Points : 60
    Points
    60
    Par défaut
    en fait lorsque j'ai regardé mon fichier enregistrer , il est vide , j'ai qu'une feuille, et j'essayer de l'enregistrer sous format xlsb pour récupérer les macros avec mais i s'ouvre pas après
    Nom : prepartion.JPG
Affichages : 532
Taille : 17,9 Ko
    Nom : erreu.JPG
Affichages : 582
Taille : 44,5 Ko

  7. #7
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Re, la partie qui change pour le format xlsb
    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
    Sub Execution()
    Dim chemin As String
    Dim MyDate As String
    Dim sNomfichier As String
     
        MyDate = Format(Now(), "dd-mm-yy")
        chemin = ActiveWorkbook.Path
     
        Workbooks.Add
        sNomfichier = RenommerFichier(chemin, "Synthèse carnet" & "-" & MyDate & ".xlsb")
     
        Range("A1").Select
        ActiveCell.FormulaR1C1 = "Je saisis mes données."
        ActiveWorkbook.SaveAs Filename:=sNomfichier, FileFormat:=xlExcel12
        ActiveWorkbook.Close savechanges:=False
    End Sub
    Images attachées Images attachées  

  8. #8
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 157
    Points : 60
    Points
    60
    Par défaut
    Oui mais le problème mon classeur est vide , il contient qu'une feuil 1 vide

  9. #9
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 157
    Points : 60
    Points
    60
    Par défaut
    Je pars avec classeur de taille 2008 Ko , et je stocke que un classeur de taille 8ko

  10. #10
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Re, l'exemple fourni fonctionne donc et ne donne que des fichiers vides ce qui est normal. A toi de copier ce qui t'intéresse après le Workbooks.Add dans la procédure, mais là n'étant pas devin.

  11. #11
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Re, Cela demandera à ce que tu l'adaptes à ton contexte pour une feuille ou un classeur entier

    Feuille :
    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
    Sub Execution()
    Dim chemin As String
    Dim MyDate As String
    Dim sNomfichier As String
    Dim Wkb As Workbook, WshDep As Worksheet
    Dim Rng As Range
     
        MyDate = Format(Now(), "dd-mm-yy")
        chemin = ActiveWorkbook.Path
     
        Set Wkb = Workbooks.Add
        Set WshDep = ThisWorkbook.Worksheets(1)
        Set Rng = WshDep.UsedRange
     
        Rng.Copy Wkb.Worksheets(1).Range("A1")
     
        sNomfichier = RenommerFichier(chemin, "Synthèse carnet" & "-" & MyDate & ".xlsb")
     
        Wkb.SaveAs Filename:=sNomfichier, FileFormat:=xlExcel12
        Wkb.Close savechanges:=False
     
        Set Rng = Nothing
        Set WshDep = Nothing
        Set Wkb = Nothing
    End Sub
    Classeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Execution()
    Dim chemin As String
    Dim MyDate As String
    Dim sNomfichier As String
     
        MyDate = Format(Now(), "dd-mm-yy")
        chemin = ActiveWorkbook.Path
     
        sNomfichier = RenommerFichier(chemin, "Synthèse carnet" & "-" & MyDate & ".xlsb")
     
        ActiveWorkbook.SaveAs Filename:=sNomfichier, FileFormat:=xlExcel12
        ActiveWorkbook.Close savechanges:=True
    End Sub

  12. #12
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 157
    Points : 60
    Points
    60
    Par défaut
    Merci ca fonctionne , ce n''est pas évident lorsqu'on ait débutant et en plus dernier semaine de stage me demande de faire ça pas de temps pour apprendre de 0

  13. #13
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Mieux je pense
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Save()
    Dim chemin As String
    Dim MyDate As String
    Dim sNomfichier As String
     
        MyDate = Format(Now(), "dd-mm-yy")
        chemin = ThisWorkbook.Path
        sNomfichier = RenommerFichier(chemin, "Synthèse carnet" & "-" & MyDate & ".xlsb")
        ThisWorkbook.SaveCopyAs Filename:=sNomfichier
    End Sub

  14. #14
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 157
    Points : 60
    Points
    60
    Par défaut
    Bonjour,
    Vous aviez une idée pour remplissage automatique , si j'ai un champ qui se répète dans plusieurs feuilles au lieu de tapé a chaque fois , il suffit de le résigner dans feuille 1 , et par défaut sera rempli dans les autres pages.
    Merci pour vos aides

  15. #15
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 95
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par kiki29 Voir le message
    Salut, en t'inspirant de cette fonction et en l'adaptant à ton contexte
    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 Function RenommerFichier(sDossier As String, sNomfichier As String) As String
    Dim sNouveauNom As String
    Dim sPre As String, sExt As String
    Dim i As Long
    Dim FSO As Object
     
       Set FSO = CreateObject("Scripting.FileSystemObject" )
        If FSO.FileExists(sDossier & "\" & sNomfichier) Then
            sNouveauNom = sNomfichier
            sPre = FSO.GetBaseName(sNomfichier)
            sExt = FSO.GetExtensionName(sNomfichier)
     
            i = 0
            While FSO.FileExists(sDossier & "\" & sNouveauNom)
                i = i + 1
                sNouveauNom = sPre & Chr(40) & Format(i, "000" ) & Chr(41) & Chr(46) & sExt
            Wend
            sNomfichier = sNouveauNom
        End If
        Set FSO = Nothing
     
       RenommerFichier = sDossier & "\" & sNomfichier
    End Function
    Un exemple, qui te permettra de voir l'usage de cette fonction.
    Salut! Je viens de tester à mon problème. Le nome de dossier ne s'incrémente pas...

Discussions similaires

  1. [Débutant] Réception et enregistrement d'un fichier avec C# et .ASP
    Par Invité dans le forum ASP.NET
    Réponses: 4
    Dernier message: 22/06/2017, 12h32
  2. Enregistrement automatique de fichiers avec Macros
    Par ExcelLiod dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/12/2015, 19h45
  3. Réponses: 15
    Dernier message: 20/06/2008, 14h36
  4. Enregistrer sur un fichier avec Actionscript
    Par sparil dans le forum Dynamique
    Réponses: 3
    Dernier message: 22/06/2007, 10h00
  5. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17

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