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 :

Macro: écrire sur un fichier final avec la date qui change [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2017
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Macro: écrire sur un fichier final avec la date qui change
    Bonjour a toutes, tous,

    Mon projet avance...à petit pas.

    J'ai créé avec les aides des pro, une macro qui transfère les données saisies à partir de cette dernière vers le fichier Excel Final qui fait plus de 9 Mo (cela évite d'ouvrir ce gros fichier pour le renseigner--quel fainéant !!!)

    Ce fichier Final est Mensuel, cela veut dire que la date change, exemple : "2017-07-31 SERVERS List.xlsx", "2017-09-30 SERVERS List.xlsx", etc.....


    Mon problème :

    Je ne connais pas le code pour dire qu'il faut prendre le fichier "2017-07-31 SERVERS List.xlsx" au lieu de "2017-09-30 SERVERS List.xlsx" etc...
    Existe il un code pour dire prendre ce fichier quelque la date du mois en cours par exemple ?


    Voici le code macro:

    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
    Option Explicit
    
    Dim ws As Workbook, wt As Workbook, ft As Worksheet, fs As Worksheet
    Dim lgn&
    
    
    Sub CopieListeServeurs()
        
        Set wt = ActiveWorkbook
        Set ft = wt.Sheets("Template")
        Workbooks.Open Filename:="C:\ABCDR\2017-06-30 SERVERS List.xlsx" <<== c'est ici que je souhaite ne plus mettre de date
        'Workbooks.Open Filename:="C:\Users\changu\Desktop\Nouveau dossier\SERVERS List.xlsx"
        Set ws = ActiveWorkbook
        Set fs = ws.Sheets(2)
       
        lgn = fs.Range("A" & Rows.Count).End(xlUp)(2).Row
           
        ft.Range("A2:DL" & ft.Range("A" & Rows.Count).End(xlUp).Row).Copy
        fs.Range("A" & lgn).PasteSpecial xlPasteAll
    
        Application.CutCopyMode = False
        ws.Close True
    End Sub

    Merci par avance pour votre aide
    A vous lire
    changul

  2. #2
    Nouveau membre du Club Avatar de Roiser
    Homme Profil pro
    Etudiant - MIAGE
    Inscrit en
    Juillet 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Manche (Basse Normandie)

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

    Informations forums :
    Inscription : Juillet 2017
    Messages : 29
    Points : 37
    Points
    37
    Par défaut
    Salut,

    normalement ce code devrait t'aider.

    Dit moi si ça marche ! (tu a juste a remplecer la valeur "Tonchemin" normalement)

    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 Test()
     
    Dim NomFichier As String
    Dim MoisEnCours As Integer
    'Sauvegarde le mois en cours (du système)
    MoisEnCours = Format(Date, "dd/mm/yyyy")
    MoisEnCours = Mid(MoisEnCours, 4, 2)
    'Affiche le resultat dans un msgbox ( enlever " ' ")
    'MsgBox MoisEnCours
    'Recherche ton fichier
    NomFichier = Dir(TonChemin & "*" & MoisEnCours & "*SERVERS List.xlsx")
    'Affiche le nom du fichier dans un msgbox ( enlever " ' ")
    'MsgBox NomFichier 
     
    End Sub

  3. #3
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 266
    Points
    34 266
    Par défaut
    Salut,

    quelle regle permettrait de determiner la date qui servirait a reconstruire le chemin de ton fichier ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2017
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bonjour Roiser,

    Merci pour votre aide,

    je vais tester et vous tiens au courant


    @Jean-Philippe,
    Excusez moi, je ne comprends pas votre question ....


    Salutations
    changul

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 266
    Points
    34 266
    Par défaut
    Je pensais que tu voulais generer le dernier jour du mois, Est-ce bien le cas ?

    du coup je complete la solution proposee par Roiser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim Dt As Date
    Dt= Date
    'Si on prend le dernier jour du mois precedent
    Dt = DateSerial(Year(Dt),Month(Dt),1)-1
    'si du mois en cours
    'Dt=DateAdd("m",1,Dt)
    'Dt = DateSerial(Year(Dt),Month(Dt),1)-1
    Workbooks.Open Filename:="C:\ABCDR\" & Format(Dt,"YYYY-MM-DD") & " SERVERS List.xlsx"
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2017
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Re,

    Je vous tiens au courant.

    Merci
    changul

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2017
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bonjour Jean-Philippe, Roiser,

    Je viens de tester la macro, au fait il y a un souci (si je puis dire cela comme ça).

    le script cherche le fichier 2017-06-30 SERVERS List.xlsx ? (voir copie écran)

    Je pensais qu'il compléterait le fichier du mois en cours, c'est à dire Juillet (2017-07-30 SERVERS List.xlsx) et non Juin.


    Merci pour votre aide

    Changul




    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
    Option Explicit
    
    Dim ws As Workbook, wt As Workbook, ft As Worksheet, fs As Worksheet
    Dim Dt As Date
    Dim lgn&
    
    Sub CopieListeServeurs()
        
        Set wt = ActiveWorkbook
        Set ft = wt.Sheets("Template")
        Dt = Date
    'Si on prend le dernier jour du mois precedent
    Dt = DateSerial(Year(Dt), Month(Dt), 1) - 1 <<=== on ne peut pas rajouter +1 à la suite ?
    'si du mois en cours
    'Dt=DateAdd("m",1,Dt)
    'Dt = DateSerial(Year(Dt),Month(Dt),1)-1
    Workbooks.Open Filename:="C:\ABCDR\" & Format(Dt, "YYYY-MM-DD") & " SERVERS List.xlsx"
     'Workbooks.Open Filename:="C:\ABCDR\2017-06-30 SERVERS List.xlsx"
        'Workbooks.Open Filename:="C:\Users\changu\Desktop\Nouveau dossier\SERVERS List.xlsx"
        
        Set ws = ActiveWorkbook
        Set fs = ws.Sheets(2)
       
        lgn = fs.Range("A" & Rows.Count).End(xlUp)(2).Row
           
        ft.Range("A2:DL" & ft.Range("A" & Rows.Count).End(xlUp).Row).Copy
        fs.Range("A" & lgn).PasteSpecial xlPasteAll
    
        Application.CutCopyMode = False
        ws.Close True
    End Sub
    Images attachées Images attachées  

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 266
    Points
    34 266
    Par défaut
    Ne lis tu pas les commentaires que j'ai mis dans mon code ?

    un commentaire est ce qui est ecrit apres le signe apostrophe (')


    Comme tu es dans le second cas (mois en cours), tu utiliseras alors les lignes deja ecrites dans mon post precedent et gardees telles que dans ton code
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2017
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    C'est OK, ça marche !

    j'ai enlevé le cote (') du code ci-dessous (je n'ai pas osé le tester)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dt = DateAdd("m", 1, Dt)

    Merci beaucoup pour votre aide précieuse.

    Je reviendrai sur un autre thème, concernant pivot table...

    je clos mon sujet.

    salutations
    changul

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

Discussions similaires

  1. Macro pour écrire sur plusieurs fichiers
    Par ExcelLiod dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/03/2016, 16h07
  2. Lire et écrire sur les fichiers xls et xlsx avec POI
    Par LILIFA dans le forum Documents
    Réponses: 4
    Dernier message: 23/07/2013, 22h33
  3. écrire sur un fichier texte avec vb6
    Par bucabuca dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 17/03/2008, 22h25
  4. [DOM] [Débutant(e)] écrire sur un fichier XML à partir de java
    Par Samanta dans le forum Format d'échange (XML, JSON...)
    Réponses: 11
    Dernier message: 05/02/2008, 11h13
  5. lire/écrire sur un fichier texte sur un serveur distant
    Par nabmoah dans le forum Visual C++
    Réponses: 6
    Dernier message: 12/02/2007, 10h27

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