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 :

Import de données à partir d'un fichier à nom variable [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2018
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2018
    Messages : 281
    Par défaut Import de données à partir d'un fichier à nom variable
    Bonjour,

    J'ai une macro qui permet d'ouvrir un fichier .XlS, dans lequel il n'y a qu'une feuille contenant des données dans un nombre de colonnes fixe mais dont le nombre de lignes augmente tous les jours.
    Ensuite la macro sélectionne toutes les données depuis la ligne 2.
    Puis elle les colle dans mon fichier de destination (Suivi des Commandes V2) dans une feuille dédiée (par la même occasion elle met la date de modification et fige cette date.
    Elle fonctionne bien pour un fichier source dont le nom ne change pas.

    Mon problème est que le nom du fichier source varie tous les jours puisque il contient la date de génération du dit fichier.
    Exemple : export-commandes-20180418 (exportation du 18 avril 2018).
    Comment puis-je automatiser le nom du fichier dans ma macro ?
    Par la même occasion, comment puis-je le fermer ?

    Et question subsidiaire, est-il possible de faire ce que fait la macro sans avoir à ouvrir et fermer le fichier source ?

    Merci pour votre aide

    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
    Sub Import_Données()
    'Ouvre fichier Export, sélectionne tout et importe sur feuille de destination en figeant la date de l'importation
    '22/04 fonctionne pour fichier à nom unique
     
    Dim AireACopier As Range 'ouvre le fichier et sélectionne tout
        Workbooks.Open Filename:="C:\Users\Fam\Desktop\Test import 18 04 2018 .xlsx"
        With Sheets("Pour Import")
        Prem = Range("A2").Address
        Dern = Range("H" & Range("B65536").End(xlUp)(1).Row).Address 'sélectionne colonnes A à H en fonction de la dernière cellule de B
        Set AireACopier = .Range(Prem, Dern)
        End With
        'ActiveWorkbook.Close
        'Workbooks.Close Filename:="C:\Users\Fam\Desktop\Test import 18 04 2018 .xlsx"
     
        Workbooks.Open Filename:="C:\Users\Fam\Desktop\Suivi des Commandes V2.xlsm"
        AireACopier.Copy Destination:=Workbooks("Suivi des Commandes V2.xlsm").Sheets("Import Base").Range("A2") 'colle les données
        Set AireACopier = Nothing
     
        Sheets("Import Base").Select
        Range("D1").Select
        ActiveCell.FormulaR1C1 = "=TODAY()" 'date du jour de l'importation
        Range("D1").Value = Range("D1").Value 'vérouille la date
     
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Utilise par exemple et entre autres la fonction dir pour parcourir en boucle tous les fichiers du dossier concerné dont le nom serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Like "export-commandes-########"
    pour chaque fichier "retenu", ne garde, chaque fois, que celui dont la chaîne est supérieure à la précédente retenue. Ce fichier est le plus récent.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2018
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2018
    Messages : 281
    Par défaut
    Bonjour Unparia,

    Merci pour la piste mais, le fichier source est supprimé après avoir copier/coller les données.

    Philippe

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Cela ne change rien.
    Même si un seul fichier restant.
    Toujours vrai puisqu'il sera le seul et donc également (forcément) le plus récent.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2018
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2018
    Messages : 281
    Par défaut
    Re,

    J'ai fini par trouver la solution à mon problème :

    Voici le code

    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
    32
    33
    34
    35
    Sub Import_Données()
    'Ouvre le fichier dont le chemin est renseigné cellule L3 dans feuille Accueil et dont le nom est cellule L1 même feuille.
    'La cellule L1 concaténe ="Test-import-"&TEXTE(K2;"0000")&TEXTE(L2;"00")&TEXTE(M2;"00")&".xlsx"
    'où K2, L2 et M2 sont les expressions numériques de Année, Mois et Jour de la date saisie en J2
    'sélectionne tout et importe sur feuille de destination en figeant la date de l'importation
     
    Dim AireACopier As Range 'ouvre le fichier et sélectionne tout
    Dim Chemin_Fichier_Export
    Dim Nom_Fichier_Export
    Dim Adresse_Fichier_Export
     
        Chemin_Fichier_Export = ThisWorkbook.Worksheets("accueil").Range("L3").Value
        Nom_Fichier_Export = ThisWorkbook.Worksheets("accueil").Range("L1").Value
        Adresse_Fichier_Export = Chemin_Fichier_Export & "\" & Nom_Fichier_Export
        Debug.Print Adresse_Fichier_Export
        Workbooks.Open (Adresse_Fichier_Export)
     
        With Sheets("Pour Import")
        Prem = Range("A2").Address
        Dern = Range("H" & Range("B65536").End(xlUp)(1).Row).Address 'sélectionne colonnes A à H en fonction de la dernière cellule de B
        Set AireACopier = .Range(Prem, Dern)
        End With
     
        Workbooks.Open Filename:="C:\Users\Fam\Desktop\Suivi des Commandes V3.xlsm"
        AireACopier.Copy Destination:=Sheets("Import Base").Range("A2") 'colle les données
        Set AireACopier = Nothing
     
        Sheets("Import Base").Select
        Range("D1").Select
        ActiveCell.FormulaR1C1 = "=TODAY()" 'date du jour de l'importation
        Range("D1").Value = Range("D1").Value 'vérouille la date
     
        'ThisWorkbook.Close True 'fonctionne mais ferme le fichier suivi des commandes
        'Workbook.Close (Adresse_Fichier_Export) 'Ne fonctionne pas
    End Sub
    Seule la fermeture du fichier source ne fonctionne pas.

    Si vous avez une solution je suis preneur.

    Encore merci

  6. #6
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2018
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2018
    Messages : 281
    Par défaut
    re,

    C'est tout bon, j'ai trouvé la réponse à ma question.

    Merci

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

Discussions similaires

  1. Importer des données à partir d'un fichier excel fermé
    Par yassinefeki dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/06/2019, 10h54
  2. [XL-2010] Importation de données à partir d'un fichier CSV
    Par quentin22breizh dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/09/2012, 10h43
  3. [XL-2007] Importer des données à partir d'un fichier excel
    Par aminee1666 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/06/2011, 19h05
  4. importation de données à partir d'un fichier XLS
    Par wehtam dans le forum Langage
    Réponses: 3
    Dernier message: 04/02/2008, 10h33
  5. Réponses: 8
    Dernier message: 22/08/2006, 12h51

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