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 :

Macro copier des cellules d'un fichier à l'autre


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Points : 9
    Points
    9
    Par défaut Macro copier des cellules d'un fichier à l'autre
    Bonjour tout le monde

    Malgré mes recherches sur l'aide de vba, je n'ai pas trouvé de réponse à ma question :

    Etant sur un fichier, je voudrais par une macro ouvrir un autre fichier pour recopier des cellules d'un fichier à l'autre

    Voici un exemple que j'ai fait et qui bien sûr ne fonctionne pas !

    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
    Sub transfert()
     
        'réduction de taille du Classeur2
        Application.WindowState = xlMinimized
     
        'ouverture du Classeur1
        Workbook("Classeur1.xls").Worksheets(Feuil1).Open
     
        Range("A1:C3").Select
        Selection.Copy
     
        'fermeture du Classeur1
        Workbook("Classeur1.xls").Worksheets(Feuil1).Close
     
        'plein écran pour Classeur2
        Application.WindowState = xlNormal
     
        'copie des données
        Range("A1:C3").Select
        ActiveSheet.Paste
     
    End Sub
    Ma demande est-elle faisable (honnêtement, j'ai un doute)

    Merci à vous

  2. #2
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    SAlut
    Plutot que de te donner un code tout fait je vais t'expliquer comment trouver tout ou partie de la reponse.
    Dans le menu Outils -> Macro -> Nouvelle Macro
    Tu lui donne un nom (par defaut ca va tres bien ) -> Ok
    A partir de maintenant Excel Enregistre tess moindre fait et geste et les transforme en code VBA. Ouvre donc ton autre fichier fait une copie de données et arrete la macro (le carré dans le petit bout de barre de menu qui c'est ouvert tout seul)

    Ensuite vas dans VBA et regarde le code ainsi generé

    A++
    Qwaz

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Merci mais si c'était aussi simple que ça, je n'aurai pas poser la question sur le forum

    J'ai fait cette manip en 1er et le code obtenu était complètement faux

    D'autres solutions ?

  4. #4
    Membre confirmé
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Points : 563
    Points
    563
    Par défaut
    Bonsoir,

    Dans Excel, la moindre action ou presque efface le presse-papier. Par conséquent il faut éviter au maximum d’insérer des étapes entre Copier et Coller.

    Par ailleurs, l’intérêt de VBA est de pouvoir faire de nombreuses choses sans sélectionner, copier ou coller, ce qui est beaucoup + rapide que de passer par toutes les étapes nécessaires manuellement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Transfert()
        Workbooks("Classeur2.xls").Sheets("Feuil1").Range("A1:C3").Value = Workbooks("Classeur1.xls").Sheets("Feuil1").Range("A1:C3").Value
    End Sub
    Cordialement,

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Je ne sais comment utiliser le code que vous proposez puisque je veux vraiment copier des cellules d'un fichier à un autre

    Je m'explique :

    J'ai un fichier avec 3000 lignes sur une trentaine de colonnes
    Ce fichier contient 20 feuilles

    Régulièrement, une mise à jour est faite au niveau de toutes les feuilles sauf une qui conserve les synthèses de toutes les autres (c'est celle qui m'interresse, on va l'appeller X)

    Mon but, à chaque nouvelle version de ce fichier, est donc d'aller chercher les données sur la feuille X du fichier N pour copier toutes ces données sur la feuille X du fichier N+1

    Est-ce que je suis plus clair

  6. #6
    Membre confirmé
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Points : 563
    Points
    563
    Par défaut
    C’est exactement ce que fait la macro proposée : elle inscrit dans la plage A1:C3 de la feuille 1 du classeur 2 les valeurs de la plage correspondante de la feuille 1 du classeur

    Pour récupérer les formules sur toute le plage utile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Transfert()
    Dim PlageUtile As String
        PlageUtile = Workbooks("Classeur6").Sheets("Feuil1").UsedRange.Address(0, 0)
        Workbooks("Classeur2.xls").Sheets("Feuil1").Range(PlageUtile).Formula = Workbooks("Classeur1.xls").Sheets("Feuil1").Range(PlageUtile).Formula
    End Sub
    Cordialement,

  7. #7
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    DESOLE pour cette phrase :

    Je ne sais comment utiliser le code que vous proposez puisque je veux vraiment copier des cellules d'un fichier à un autre
    Je n'avais vu que la première partie de votre code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Transfert()
        Workbooks("Classeur2.xls").Sheets("Feuil1").Range("A1:C3").Value
    End Sub
    Je viens de voir la suite : j'essaierai demain au boulot

    Merci

  8. #8
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 467
    Points : 493
    Points
    493
    Par défaut
    Bonjour

    La saisie devrait s'enregistrer dans la feuille "x" du fichier N-1 à la suite des saisies antérieures.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub Copie()
    Set Twn = Workbook("Fichier N").Sheets("x")
      Twn.UsedRange.Copy _
      Workbook("N-1").Sheets("x").Range("A65536").End(xlUp)(2)
     End Sub
    Abed_H

  9. #9
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Ce code fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Transfert()
        Workbooks("Classeur2.xls").Sheets("Feuil1").Range("A1:C3").Value = Workbooks("Classeur1.xls").Sheets("Feuil1").Range("A1:C3").Value
    End Sub
    mais uniquement si les 2 fichiers sont ouverts en même temps
    C'est pour ça que mes précédentes tentatives avaient ratées : le classeur1 n'était pas ouvert

    Est-il possible d'incorporer au début du code l'ouverture automatique du fichier excel "classeur1" (qui se situe sur le bureau) ?

  10. #10
    Membre confirmé
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Points : 563
    Points
    563
    Par défaut
    Bonsoir,

    Il faut ajouter une ligne de ce type, en adaptant le chemin et le nom du classeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open "C:\Documents and Settings\Michael  G\Bureau\Classeur1.xls"
    En cas de besoin, pour avoir le chemin d'accès complet (nom defichier inclus) du premier classeur : ouvrir celui-ci, et dans un module standard (à créer si nécessaire) du classeur en question, entrer ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Sub Chemin()
            With ThisWorkbook
                .Worksheets.Add
                ActiveCell = .Path & Application.PathSeparator & .Name
            End With
        ActiveCell.EntireColumn.AutoFit
    End Sub
    Cordialement,

  11. #11
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup pour votre aide !

    Je ferme le sujet car je pense avoir toutes les réponses à mes questions

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

Discussions similaires

  1. [XL-2010] Macro copier des cellules
    Par arthour973 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 28/01/2013, 14h17
  2. Réponses: 0
    Dernier message: 17/03/2011, 21h42
  3. Copier des cellules de plusieurs fichiers et les trier automatiquement
    Par nicethe dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/10/2008, 12h40
  4. Copier des cellules de 2 fichiers excels
    Par peofofo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/06/2008, 11h28
  5. copier des cellules de 2 fichiers Excel identiques
    Par Fab2008 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/06/2008, 23h05

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