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-Coller de fichiers vers un autre


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 6
    Points
    6
    Par défaut Copier-Coller de fichiers vers un autre
    Bonjour à tous,

    Voilàa, j'aimerez réaliser une macro qui :
    -ouvre un fichier
    -copie ses données
    -ouvre un fichier vierge
    -les colle dedans;
    -Et boucle l'opération.

    J'ai trouvé cette ligne de code qui devrait réaliser la fonction souhaité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.UsedRange.Copy Destination:=principal.Sheets(1).Range("a" & Rows.Count).End(xlUp).Offset(1)
    Néanmoins, je n'arrive pas à la faire "fonctionner" dans ma macro.
    Auriez vous une méthode, un conseil, ou autre qui pourais m'aider svp ?

    Merci d'avance.
    Cordialement

  2. #2
    Invité
    Invité(e)
    Par défaut Bonjour,test ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    Dim wb As Workbook
    Dim Ws As Worksheet
    Set Ws = ActiveSheet
    Set wb = Workbooks.Add
    Ws.UsedRange.Copy Destination:=wb.Sheets(1).Range("a1")
    End Sub
    Dernière modification par AlainTech ; 06/06/2014 à 23h12. Motif: Suppression de la citation inutile

  3. #3
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    Essaie comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With principal.Sheets(1)
        ActiveSheet.UsedRange.Copy Destination:=.Range("a" & .Rows.Count).End(xlUp).Offset(1)
    End With
    Le "." devant "Rows" signifie que celui-ci se rapporte au classeur "principal", Feuille 1.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    Salut Daniel.C et rdurupt, et merci pour vos réponses.
    Je suis en train d'essayer les deux méthodes afin de voir celles qui convient le mieux à ce que je veux réaliser.
    Pour vous en dire plus :
    Je dois réaliser une concaténation de fichier, donc pour ce faire, je compare les dates présentes dans les noms de fichiers et si elles sont identiques ils fait un copier coller d'un des deux classeurs dans l'autre.
    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
     
    Sub importDonnees()
        Dim principal As ThisWorkbook
        Dim Fichier1 As String
        Dim Fichier2 As String
        Dim Date1 As String
        Dim Date2 As String
        Dim rep As String
        Dim nbfichier As Integer
     
        Application.ScreenUpdating = False
        Set principal = ThisWorkbook
        Const repertoire = "C:\Documents and Settings\9403095F\Bureau\Test_Macro\"
        Fichier1 = Dir(repertoire & "*.txt")
     
        rep = Dir(repertoire & "*.txt")
        While Not rep = ""
        nbfichier = nbfichier + 1
        rep = Dir
        Wend
        MsgBox nbfichier
     
        Do While nbfichier > 0
        nbfichier = nbfichier - 1
        Fichier2 = Dir(repertoire & "*.txt")
     
            Date1 = Mid(Fichier1, 9, 6)
            Date2 = Mid(Fichier2, 9, 6)
     
            Workbooks.Open (repertoire & Fichier1)
     
            If Date2 = Date1 Then
                    Workbooks.Open (repertoire & Fichier2)
                    '
                    'copier coller
                    '
                    Workbooks.Close True
                    Fichier1 = Dir
                    ChDir "C:\Documents and Settings\9403095F\Bureau\Test_Macro\Nouveau\"
            Else
                    Workbooks.Close True
                    Fichier1 = Dir
                    ChDir "C:\Documents and Settings\9403095F\Bureau\Test_Macro\Nouveau\"
        End If
        Loop
    End Sub
    Avec vos deux méthodes, j'ai la même erreur : Erreur de compilation : "Nombre d'argument incorrecte ou affectation de propriété incorrecte"

    Auriez vous une idée d'où cela peut il venir ?

  5. #5
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Poste ton code dans son intégralité, pas par morceaux.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    Code complet :
    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
    Sub importDonnees()
        Dim principal As ThisWorkbook
        Dim Fichier1 As String
        Dim Fichier2 As String
        Dim Date1 As String
        Dim Date2 As String
        Dim rep As String
        Dim nbfichier As Integer
     
        Application.ScreenUpdating = False
        Set principal = ThisWorkbook
        Const repertoire = "C:\Documents and Settings\9403095F\Bureau\Test_Macro\"
        Fichier1 = Dir(repertoire & "*.txt")
     
        rep = Dir(repertoire & "*.txt")
        While Not rep = ""
        nbfichier = nbfichier + 1
        rep = Dir
        Wend
        MsgBox nbfichier
     
        Do While nbfichier > 0
        nbfichier = nbfichier - 1
        Fichier2 = Dir(repertoire & "*.txt")
     
            Date1 = Mid(Fichier1, 9, 6)
            Date2 = Mid(Fichier2, 9, 6)
     
            Workbooks.Open (repertoire & Fichier1)
     
            If Date2 = Date1 Then
                    Workbooks.Open (repertoire & Fichier2)
                    '
                    'copier coller
                    '
                    Workbooks.Close True
                    Fichier1 = Dir
                    ChDir "C:\Documents and Settings\9403095F\Bureau\Test_Macro\Nouveau\"
            Else
                    Workbooks.Close True
                    Fichier1 = Dir
                    ChDir "C:\Documents and Settings\9403095F\Bureau\Test_Macro\Nouveau\"
        End If
        Loop
    End Sub

  7. #7
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Ton problème serait sans doute déjà résolu si tu faisais ce qui t'est demandé !

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    Je pense qu'il y eu un soucis de compréhension.
    Le code mis précédement, est le code que j'ai réalisé afin de réalisé la concaténation. Et, avant de le poster sur le forum, j'ai mis en commentaire le copier coller (étant donné que c'est la partie qui me pose problème), désolez si ce n'était pas assez claire.
    J'ai remplacé dans ma macro, lapartie " copier coller" par ce que vous m'avez conseillé de faire, et c'est là que j'ai eu l'erreur de compilation.

  9. #9
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Oui, j'ai du mal à comprendre; tu as remplacé le copier coller, mais par quoi ?

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    Par ceci :
    Citation Envoyé par Daniel.C Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With principal.Sheets(1)
        ActiveSheet.UsedRange.Copy Destination:=.Range("a" & .Rows.Count).End(xlUp).Offset(1)
    End With
    et ensuite par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ws.UsedRange.Copy Destination:=wb.Sheets(1).Range("a1")
    en déclarant les variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim wb As Workbook
    Dim Ws As Worksheet
    Set Ws = ActiveSheet
    Set wb = Workbooks.Add

  11. #11
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Ecoute, fais tourner ton code, je n'en comprends pas la logique. Au début de la boucle, tu cherches à ouvrir deux fois le même fichier, si j'ai bien compris. D'autre part, tu as des erreurs de compilation.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    C'est bien ce que je pensais...
    En faites, je veux juste que la macro prenne 1 fichier en extrait la date et la compare avec la date d'un second fichier. Si elles sont identiques, il les fusionne sinon il la compare a un autre fichier, afin qu'il fusionne tout les fichiers du même nom entre eux.
    Mon erreur de compilation a été corrigé en remplacant le "Workbooks.Close True" par "ActiveWorkbook.Close True".

    Et merci pour le temps que tu consacres a essayé de resoudre mon problème

  13. #13
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Dur... Est-ce qu'il peut y avoir trois fichiers ou plus correspondant à la même date ? Où écrit-on les données de la fusion ? Est-ce qu'il faut faire une boucle pour comparer tous fichiers deux à deux ?

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    Est-ce qu'il peut y avoir trois fichiers ou plus correspondant à la même date ?
    C'est variable, ça peut aller de 1 à 5 fichiers par jours environs.

    Où écrit-on les données de la fusion ?
    Bonne question...Au début j'avais pensé à l'écrire en dessous d'un des deux fichiers, mais comment savoir dans lequel le mettre, en évitant les doublons... JE pense que la meilleur solution est de les fusionner dans un nouveau classeur.

    Est-ce qu'il faut faire une boucle pour comparer tous fichiers deux à deux ?
    Pour moi c'est la meilleur solution. Prendre un fichier, le comparer à un autre et recommencer l'opération n fois. D'où la boucle "do while" que j'ai mis dans mon code. Après, est-ce la meilleur solution ? Je ne saurais vous dire, étant donné que mes connaissances en vba sont assez limité.

  15. #15
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    Il faut reprendre ta macro de A à Z. Je n'en ai pas le temps. Bon courage.

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    C'est...rassurant, mais merci quand même d'avoir pris de ton temps pour me répondre.

  17. #17
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Ce n'est pas très compliqué, mais le code n'est pas court et je manque de temps, ce n'est peut-être pas ton cas.

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    Il n'y a pas de soucis, je pensez que vous disiez ça car c'était compliqué justement.
    Je mettrais, ici, si j'avance sur le programme, ou si je rencontre de nouveau problème.

Discussions similaires

  1. [XL-2007] Excel 2007 Copier Coller une ligne vers une autre feuille
    Par fcjunic dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/02/2013, 21h54
  2. [XL-2007] Copier - Coller un UserForm vers un autre classeur
    Par grisan29 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/09/2010, 21h24
  3. copier coller de ligne vers un autre onglet
    Par dinettes dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/06/2010, 17h43
  4. Réponses: 1
    Dernier message: 29/12/2008, 10h12
  5. [E-2003] Copier/Coller plage cellules vers autre fichier
    Par macat dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/10/2008, 15h01

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