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 :

VBA - Excel - Exporter des données dans un autre fichier Excel avec Listes et Formules


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 14
    Par défaut VBA - Excel - Exporter des données dans un autre fichier Excel avec Listes et Formules
    Bonjour à tous,

    Pour les besoins d'une macro, je créée des fichiers et j'exporte une sélection de données à l'intérieur.

    Les 3 éléments importants sont :
    1) conserver les données
    2) conserver les listes de sélection (Validation des données)
    3) conserver les formules.

    Dans une boucle,
    1) je fais un filtre sur un onglet (je propose un morceau du début de la boucle :

    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
     
    For i = 0 To nbre_DR
     
        DR = tbl(i)
     
        SH_RECHARGE.AutoFilterMode = False   'Supprime les filtres
        SH_RECHARGE.Rows(1).AutoFilter       'Remet les filtres en ligne 1
        SH_RECHARGE.Rows(1).AutoFilter Field:=2, Criteria1:=DR
     
        'Après avoir filtré par DR, on va faire une recopie dans l'onglet Tmp
        'On vide les données
        Worksheets("Tmp_Export_VEHICULES").Activate
        Worksheets("Tmp_Export_VEHICULES").Cells.Clear
        Worksheets("Tmp_Export_RECHARGE").Activate
        Worksheets("Tmp_Export_RECHARGE").Cells.Clear

    2) je copie colle mes données ainsi filtrées dans un onglet temporaire (je fais cela en 2 temps car en faisant un copier-coller des données visibles, je dois refaire une passe avec les tentatives)

    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
     
     
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        ' RECHARGE
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Sheets("RECHARGE").Range("A1:" & LetCol_RECHARGE & dernLigne_RECHARGE).SpecialCells(xlCellTypeVisible).Copy 
        Destination:=Sheets("Tmp_Export_RECHARGE").Range("A1")
        ThisWorkbook.Sheets("RECHARGE").Activate
        Sheets("RECHARGE").Range("A1:" & LetCol_RECHARGE & dernLigne_RECHARGE).Select
        Selection.Copy
        ThisWorkbook.Sheets("Tmp_Export_RECHARGE").Activate
        Sheets("Tmp_Export_RECHARGE").Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
     
        ThisWorkbook.Sheets("Tmp_Export_RECHARGE").Activate
        ActiveSheet.Range("A1").Select

    Et ensuite je créée mes fichiers de la façon suivante :

    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
     
        With ThisWorkbook
            .Sheets(Array("CATALOGUE", "GEOSITE", "BUDGET DIR2S", "SD23 IRVE", "Listes", "Tmp_Export_VEHICULES", "Tmp_Export_RECHARGE")).Copy
     
            Sheets("Tmp_Export_RECHARGE").Activate
            Sheets("Tmp_Export_RECHARGE").Name = "RECHARGE"
     
            Sheets("Tmp_Export_VEHICULES").Activate
            Sheets("Tmp_Export_VEHICULES").Name = "VEHICULES"
     
     
           'On se repositionne au début du fichier sinon on se retrouve tout en bas et on ne voit rien
            ActiveSheet.Range("A1").Select
     
            Application.DisplayAlerts = False
            If DR <> "" Then
                ActiveWorkbook.SaveAs _
                Filename:=Chemin & "\" & REGION & ".xlsx"
            Else
                ActiveWorkbook.SaveAs _
                Filename:=Chemin & "\" & "SANS_REGION.xlsx"
            End If
            Application.DisplayAlerts = True
            ActiveWorkbook.Close
        End With
    Cette façon de procéder marche assez bien car je conserve listes et formules.

    Mais... je me retrouve devant des situations où je dois désormais revoir ma copie car des formules sont venues s'ajouter et j'ai des éléments qui ne marchent pas bien.

    Par exemple, au travers de ces nouvelles formules, dans les fichiers exportés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =NB.SI.ENS([Schema_Dir_Macro_23_01_2024.xlsm]VEHICULES!$C$2:$C$19974;[Schema_Dir_Macro_23_01_2024.xlsm]RECHARGE!C2)
    Quand je copie mes onglets temporaires et que je les renomme, cela impacte les formules car au moment de la copie, l'onglet n'existe pas.

    J'ai essayé différentes idées mais je coince.

    Si vous avez des idées pour éviter ce phénomène, une façon plus adaptée de réaliser mes exports, je suis preneur.


    Cordialement

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 14
    Par défaut
    Alors, j'ai peut etre trouvé une porte de sortie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            Cells.Replace What:="[" & ThisWorkbook.Name & "]", _
            Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:= _
            False, SearchFormat:=False, ReplaceFormat:=False
    en faisant un remplacer dans toute la feuille du nom du fichier d'origine.

    Il y a peut etre plus élégant comme façon de faire et je suis toujours preneur de propositions

    Cdt

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Salut,

    Ne serait-il pas plus simple de travailler avec un template (un classeur avec les formules mais pas les données) ?
    Ouvrir le template.
    Copier les données
    Enregistrer le template avec le chemin de ton choix.

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

Discussions similaires

  1. [XL-365] VBA Choisir un fichier Excel et importer des données dans un autre fichier
    Par Mia30 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 12/05/2022, 10h33
  2. [XL-2016] Récupérer des lignes dans un autre fichier excel sous condition
    Par Malkiya dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/03/2018, 12h07
  3. Réponses: 5
    Dernier message: 28/01/2015, 14h42
  4. Récupérer des valeurs dans un autre fichier excel fermé
    Par dominiqued dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/05/2014, 12h07
  5. [XL-2003] Exportation de données dans un autre fichier Excel
    Par chalart dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/11/2010, 00h01

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