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 d'un fichier Excel à un autre


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Points : 13
    Points
    13
    Par défaut Copier des données d'un fichier Excel à un autre
    Bonjour à tous,

    je reviens vers vous pour un nouveau soucis ! Je m'explique, j'aimerais pouvoir récupérer des données écrit dans un fichier Excel dans un autre me permettant d'archiver tout cela.

    Mon code ressemble à cela pour le moment :

    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 ChangementOF()
        Dim Chemin$, Nom$, Fichier$, Dossier$
        Chemin = "U:\Projet David\"
        Nom = Range("K2")
        Fichier = Nom & ".xls"
        Dossier = Range("L1")
      'Selectionne le chemin et sauvegarde dans le dossier spécifier ou le crée si il est inexistant
        If Dir(Chemin & Dossier, 16) = "" Then MKDIR Chemin & Dossier
        ActiveWorkbook.SaveAs Chemin & Dossier & "\" & Fichier
      'Réouvre le fichier Excel de base
        Workbooks.Open Filename:="U:\Projet David\TEST TEST.xls"
      'Placer le fichier de base comme actif
        Workbooks("TEST TEST").Activate
      'Repositionnement de la cellule selectionné sur l'OF à remplir
        Range("B11").Select
    End Sub
    J'aimerais y rajouter les opérations suivante :

    - Copier les cellules B11;E11;G11;I51 qui corresponde au numéro de commande, sa désignation, le numéro du lot puis la date
    - Coller dans un autre fichier Excel 'Archivage' ces cellules dans la ligne A puis sauvegarder.
    - Sinon les coller à la suite (ligne 2,3,4,...) puis sauvegarder

    Au final j'aurais donc mon fichier Excel de sauvegardé avec les colonnes:

    - Numéro de commande
    - Désignation
    - Lot
    - Date

    et les lignes de chaque fichier Excel correspondante.

    En espérant que vous me comprendrais et pourrait m'aider
    Merci

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    cette partie manque de précisions
    - Copier les cellules B11;E11;G11;I51 qui corresponde au numéro de commande, sa désignation, le numéro du lot puis la date
    - Coller dans un autre fichier Excel 'Archivage' ces cellules dans la ligne A puis sauvegarder.
    - Sinon les coller à la suite (ligne B,C,D,...) puis sauvegarder
    1 - il faut que ça corresponde au numero de commande ou à tout
    2 - le fichier "archivage" existe ?, si oui contient-il des données, faut-il écrire à la suite ?
    3 - que veut dire "sinon"

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par casefayere Voir le message
    cette partie manque de précisions
    1 - il faut que ça corresponde au numero de commande ou à tout
    J'aurais le fichier avec en A1 "Numéro de commande"; B1 "Désignation" ; C1 "Lot".
    Les cellules copié de l'autre fichier Excel B11;E11;G11 correspondent respectivement au Numéro de commande;Désignation(de cette commande);Lot(de cette commande toujours)

    Citation Envoyé par casefayere Voir le message
    2 - le fichier "archivage" existe ?, si oui contient-il des données, faut-il écrire à la suite ?
    Le fichier Archivage je vais le créer oui. Il ne contiendra pas de donné pour la toute 1ere commande mais une fois la 1ere commande copié, oui il contiendra la 1ere ligne de donné sauvegardé et il faudra donc écrire à la suite les prochaine commande.

    Citation Envoyé par casefayere Voir le message
    3 - que veut dire "sinon"
    Le sinon veut justement dire que lorsque par exemple la ligne 1 (donc A1;B1;C1) sont remplis, les données se copieront dans les cases A2;B2;C2 ainsi de suite.

    Bon j'ai un peu avancé, mon code ressemble à cela maintenant mais j'ai un soucis.. J'arrive à copier une ligne, mais a chaque fois que j'active cette macro, forcément la ligne 2 est pleine, et le nouveau fichier que j'aimerais enregistrer supprime les anciennes valeurs pour les remplacer. Comment faire pour que la macro cherche la ligne vide du dessous et remplisse celle ci plutôt que celle ayant déjà des valeurs ? Voici mon code entier si c'est utile :

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Sub ChangementOF()
        Dim Chemin$, Nom$, Fichier$, Dossier$, CheminArchivage$, NomArchivage$, FichierArchivage$, DossierArchivage$
        Chemin = "U:\Projet David\"
        Nom = Range("K2")
        Fichier = Nom & ".xls"
        Dossier = Range("L1")
        CheminArchivage = "U:\Projet David\Archivage 2014"
        NomArchivage = "Archivage"
        FichierArchivage = Nom & ".xls"
        DossierArchivage = Range("L2")
        ClasseurArchivage = "U:\Projet David\Archivage 2014\Archivage.xls"
      'Selectionne le chemin et sauvegarde dans le dossier spécifier ou le crée si il est inexistant
        If Dir(Chemin & Dossier, 16) = "" Then MKDIR Chemin & Dossier
        ActiveWorkbook.SaveAs Chemin & Dossier & "\" & Fichier
      'Copie les valeurs nécessaire dans le fichier d'archivage
        Windows(Fichier).Activate
        Range("B11").Select
        Application.CutCopyMode = False
        Selection.Copy
        Workbooks.Open Filename:=ClasseurArchivage
        Windows("Archivage.xls").Activate
        Range("A2").Select
        ActiveSheet.Paste
        Windows(Fichier).Activate
        Range("L5").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Archivage.xls").Activate
        Range("D2").Select
        ActiveSheet.Paste
        Windows(Fichier).Activate
        Range("G11").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Archivage.xls").Activate
        Range("F2").Select
        ActiveSheet.Paste
        Windows(Fichier).Activate
        Range("F26").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Archivage.xls").Activate
        Range("H2").Select
        ActiveSheet.Paste
        Windows(Fichier).Activate
        Range("I51").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Archivage.xls").Activate
        Range("K2").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        ActiveWorkbook.Save
        Windows(Fichier).Activate
      'Réouvre le fichier Excel de base
        Workbooks.Open Filename:="U:\Projet David\TEST TEST.xls"
      'Placer le fichier de base comme actif
        Workbooks("TEST TEST").Activate
      'Repositionnement de la cellule selectionné sur l'OF à remplir
        Range("B11").Select
    End Sub
    Et le morceau de code concerné par le soucis :

    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
     
      'Copie les valeurs nécessaire dans le fichier d'archivage
        Windows(Fichier).Activate
        Range("B11").Select
        Application.CutCopyMode = False
        Selection.Copy
        Workbooks.Open Filename:=ClasseurArchivage
        Windows("Archivage.xls").Activate
        Range("A2").Select
        ActiveSheet.Paste
        Windows(Fichier).Activate
        Range("L5").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Archivage.xls").Activate
        Range("D2").Select
        ActiveSheet.Paste
        Windows(Fichier).Activate
        Range("G11").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Archivage.xls").Activate
        Range("F2").Select
        ActiveSheet.Paste
        Windows(Fichier).Activate
        Range("F26").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Archivage.xls").Activate
        Range("H2").Select
        ActiveSheet.Paste
        Windows(Fichier).Activate
        Range("I51").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Archivage.xls").Activate
        Range("K2").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        ActiveWorkbook.Save
        Windows(Fichier).Activate

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Re,

    Je n'ai pas trop le temps, ni ce soir, ni demain mais si j'ai compris, et du vite fait, pour remplacer tes "Select", "copy", et "Paste"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ...
    Dim DerLg As Long
     ...
       With Workbook("Archivage.xls").Sheets("le nom de ta feuille")
          DerLg = .Range("A" & .Rows.Count).End(xlUp).Row + 1
          .Range("A" & DerLg) = Workbook(Fichier).Range("B11")
          .Range("D" & DerLg) = Workbook(Fichier).Range("L5")
          .Range("F" & DerLg) = Workbook(Fichier).Range("G11")
          .Range("H" & DerLg) = Workbook(Fichier).Range("F26")
          .Range("K" & DerLg) = Workbook(Fichier).Range("I51")
        End With
        ActiveWorkbook.Save
    ....

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Merci, mais pour le moment j'ai un message d'erreur (Erreur de compilation : Sub ou fonction non définie).

    Il me surligne en jaune Et me sélectionne le mot Workbook dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Workbook("Archivage.xls").Sheets("ArchivageBase")
    J'ai pensé à rajouter un et modifier tous les Workbook en wb comme je l'ai déjà vu dans d'autres posts.. mais ça ne fonctionne pas. Je test sans vraiment connaitre ^^

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour,

    C'est Workbooks car on va désigner un Workbook dans la collection des Workbooks.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Bonjour, depuis j'ai avancé tout seul en espérant trouver la solution mais rien n'y fais je n'y arrive pas. Je cherche à ce que dans 5 colonnes différentes je récupère 5 valeurs différentes d'un autre fichier Excel afin de les copier à la suite à chaque fois que lui demande.

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    Windows(Fichier).Activate
        Range("L50").Value = Range("B11").Value
        Range("L50").Select
        Application.CutCopyMode = False
        Selection.Copy
        Workbooks.Open Filename:=ClasseurArchivage
        Windows("Archivage.xls").Activate
        If Range("A2").Value = "" Then
        ActiveSheet.Paste
        Else
        Range("A65000").End(xlUp).Offset(1).Select
        ActiveSheet.Paste
        End If
     
        Windows(Fichier).Activate
        Range("L5").Value = Range("E11").Value
        Range("L5").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Archivage.xls").Activate
        If Range("D2").Value = "" Then
        ActiveSheet.Paste
        Else
        Range("D65000").End(xlUp).Offset(1).Select
        ActiveSheet.Paste
        End If
     
        Windows(Fichier).Activate
        Range("L49").Value = Range("G11").Value
        Range("L49").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Archivage.xls").Activate
        If Range("F2").Value = "" Then
        ActiveSheet.Paste
        Else
        Range("F65000").End(xlUp).Offset(1).Select
        ActiveSheet.Paste
        End If
     
        Windows(Fichier).Activate
        Range("L52").Value = Range("F26").Value
        Range("L52").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Archivage.xls").Activate
        If Range("H2").Value = "" Then
        ActiveSheet.Paste
        Else
        Range("H65000").End(xlUp).Offset(1).Select
        ActiveSheet.Paste
        End If
     
        Windows(Fichier).Activate
        Range("L25").Value = Range("I51").Value
        Range("L25").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Archivage.xls").Activate
        If Range("K2").Value = "" Then
        ActiveSheet.Paste
        Else
        Range("K65000").End(xlUp).Offset(1).Select
        ActiveSheet.Paste
        End If
    Mais rien à faire. Il me copie la 5eme valeur en A2 et ce à chaque fois que je répète l'opération.
    Et le reste ne se copie pas. En trifouillant la macro dans tous les sens, j'ai l'impression que toutes les valeurs se superpose en A2 jusqu’à ce que la dernière se copie puis lorsque je répète l'opération il le refait mais en A3;A4;etc....

Discussions similaires

  1. [XL-2010] Copier des données d'un fichier dans un autre
    Par dozif77 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/03/2015, 18h42
  2. Copier des données d'un fichier vers un autre sans écraser le second
    Par jalons dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 09/04/2013, 20h07
  3. [XL-2007] sommer des données d'un fichier excel et copier le resultat dans une autre feuil
    Par aminee1666 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/06/2011, 22h09
  4. Copier des données d'un fichier Excel vers des tableau Word
    Par drthodt dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 23/05/2008, 14h57
  5. copier des données d'un Fichier Excel à un a autre automatiquement
    Par meuah dans le forum Macros et VBA Excel
    Réponses: 36
    Dernier message: 21/05/2008, 10h45

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