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 :

Copier des données excel dans des autres fichiers


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2015
    Messages : 8
    Par défaut Copier des données excel dans des autres fichiers
    Bonjour ce code me permet de découper un fichier dans des autres fichiers
    excel selon la colonne T (filter ):

    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
    36
    37
    Option Explicit
     
     
     
    Sub creation_fichiers()
    Dim i As Integer
    Dim sh, Dlg, plg
    Dim Nomfich$
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
     
    Set sh = Sheets(1)
    Dlg = sh.Cells(Rows.Count, 1).End(xlUp).Row
    Set plg = sh.Range("A1:T" & Dlg)
    sh.Range("T6:T" & Dlg).Copy sh.[AA1]
    sh.Columns("AA").RemoveDuplicates Columns:=Array(1), Header:=xlYes
    sh.[AB1] = sh.[T5]
     
     
    For i = 2 To sh.Cells(Rows.Count, "AA").End(xlUp).Row
    Workbooks.Add
    sh.[AB2] = sh.Range("AA" & i)
    plg.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=sh.Range("AB1:AB2"), CopyToRange:=ActiveWorkbook.Sheets(1).Range("A1:T")
    Nomfich = (sh.Range("AA" & i)) & ("- Actings, Assignments") & ".xls"
    Nomfich = Replace(Nomfich, "/", "")
     
    ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Nomfich, FileFormat:=xlExcel8
     
     
    ActiveWorkbook.Close False
    Next i
    sh.[AA:AC].ClearContents
     
     
    MsgBox (" Vos fichiers ont été bien traités avec succès ")
    End Sub
    j'aimerai bien aussi copier des données qui se sont situés au ["A1:H1"] dans tous les fichiers au moment de la copie , j'ai essayé de modifier cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sh.Range("T6:T" & Dlg).Copy sh.[AA1]
    mais sans résultats ;/

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si j'ai bien compris à la lecture de ton code, tu souhaites copier sur des classeurs différents les données filtrées en fonction de données se trouvant dans une colonne. Autrement dit, tu splittes tes données.
    Si c'est le cas, voir ce fil http://www.developpez.net/forums/d12...l/#post7190633 où tu trouveras l'explication et un classeur exemple à télécharger.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2015
    Messages : 8
    Par défaut
    Ouii , mon code fonctionne trés bien , mais y'en a juste quelque données qui sont sur [A1:H1] que j'essaye de trouver une solution pour les copier aussi avec les données traités

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    C'est normal que cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sh.Range("T6:T" & Dlg).Copy sh.[AA1]
    ne fonctionne pas comme tu le souhaites car tu copies T6:Tx vers la cellule AA1 de la même feuille.

    Or d'après ce que tu écris, tu veux copier A1:H1 de la feuille source vers une feuille cible se trouvant dans un classeur nouvellement créé).
    A titre d'information, la méthode AdvancedFilter peut également copier une colonne sans les doublons (en remplacement de la méthode RemoveDuplicates)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2015
    Messages : 8
    Par défaut
    oui mais le tableau que je traite c'est de [A5:T] c'est juste les données qui se trouvent dans [A1:H1] que je veux les transférer dans chaque création d'un nouveau fichier

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Oui, j'ai bien compris.
    Il faut donc faire un simple Range.Copy DestinationRange est la plage source et Destination, la cellule cible (classeur nouvellement créé).
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2015
    Messages : 8
    Par défaut
    Voila ce que j'ai fait
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Option Explicit
     
     
     
    Sub creation_fichiers()
    Dim i As Integer
    Dim sh, Dlg, plg
    Dim Nomfich$
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
     
    Set sh = Sheets(1)
    Dlg = sh.Cells(Rows.Count, 1).End(xlUp).Row
    Set plg = sh.Range("A5:T" & Dlg)
    sh.Range("T6:T" & Dlg).Copy sh.[AA1]
    sh.Columns("AA").RemoveDuplicates Columns:=Array(1), Header:=xlYes
    sh.[AB1] = sh.[T5]
     
     
    For i = 2 To sh.Cells(Rows.Count, "AA").End(xlUp).Row
    Workbooks.Add
    sh.[AB2] = sh.Range("AA" & i)
     
    plg.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=sh.Range("AB1:AB2"), CopyToRange:=ActiveWorkbook.Sheets(1).Range("A5:T5")
    Nomfich = (sh.Range("AA" & i)) & ("- Actings, Assignments") & ".xls"
    Nomfich = Replace(Nomfich, "/", "")
     
     
     
    ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Nomfich, FileFormat:=xlExcel8
     
    Worksheets("Sheet1").Range("A1:H1").Copy _
    Destination:=Worksheets("Sheet1").Range("A1")
     
     
     
    ActiveWorkbook.Close False
    Next i
    sh.[AA:AC].ClearContents
     
     
    MsgBox (" Vos fichiers ont été bien traités avec succès ")
    End Sub
    j'ai ajouté ces deux lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Worksheets("Sheet1").Range("A1:H1").Copy _
    Destination:=Worksheets("Sheet1").Range("A1")
    ainsi que j'ai modifié l'emplacement de la copie ,la ça commence à partir de "A5"

    ça me donne toujours la même chose sauf que les données se transfèrent à partir de la ligne 5

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une cellule fait partie d'une feuille qui elle même fait partie d'un classeur or dans ta ligne de code tu ne références que les feuilles donc la copie se fera dans la feuille nommée Sheet1 du classeur actif.
    En VBA, il faut toujours faire référence à la filiation complète des objets (ici objet Range)

    En ligne 13 de ta procédure

    Il faut modifier
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set sh = ThisWorkbook.Sheets(1)
    mais il serait préférable de donner le nom de la feuille car s'il y a déplacement de la feuille par un utilisateur la 1 deviendra peut-être la 2 ou une autre.
    ThisWorkbook est le classeur où se trouve le code VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set sh = ThisWorkbook.Sheets("Sheet1")
    et la copie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sh.Range("A1:H1").Copy ActiveWorkbook.Sheets(1).Range("A1")
    Attention j'ai écris ces lignes de mémoire et donc non testé
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2015
    Messages : 8
    Par défaut
    Re , merci pout ton initiave je viens de l'essayer c'est toujours la meme chose ça copie juste les données du tableau

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Re , merci pout ton initiave je viens de l'essayer c'est toujours la meme chose ça copie juste les données du tableau
    Pourrais-tu publier toute ta procédure avec les modifications apportées ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. [WD-2007] Intéractivité entre Word et Excel-récupérer des données excel dans word
    Par manuseverine dans le forum VBA Word
    Réponses: 11
    Dernier message: 08/10/2018, 15h13
  2. Réponses: 3
    Dernier message: 16/11/2015, 10h11
  3. Réponses: 2
    Dernier message: 14/02/2011, 19h30
  4. Réponses: 5
    Dernier message: 24/02/2009, 09h05
  5. Copier des données excel dans un autre fichier excel
    Par titemireille dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/10/2007, 20h57

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