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 pour copier des cellules d'un tableau excel vers des cellules d'un autre tableau excel


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Macro pour copier des cellules d'un tableau excel vers des cellules d'un autre tableau excel
    Bonjour,

    Je cherche depuis quelques jours sur internet et sur le forum une solution à mon problème mais je bloque toujours.
    Je m'explique, j'aimerais pouvoir effectuer une macro qui copie-colle des cellules d'un tableau excel vers des cellules d'un autres tableau excel
    Je dispose de 2 fichiers excel dans C:\Documents and Settings\user\ :
    - un ficher source nommé Donnes_Brutes avec un onglet T1
    - un fichier destination nommé Consolidation avec un onglet T1
    Je voudrais copier des plages de cellules de l'onglet T1 du fichier excel source et les coller vers d'autres plages de cellules de l'onglet T1 de mon fichier Consolidation (template).

    J'ai crée mon bouton CopyOther et inséré le code ci-dessous :

    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
    Sub CopyOther()
    Dim Donnees_Brutes As Workbook, Consolidation As Workbook
     
    'ouvrir le classeur source (en lecture seule)
    Set Donnes_Brutes = Application.Workbooks.Open("C:\Documents and Settings\user\Donnees_Brutes.xlsx", True)
    'définir le classeur destination
    Set Consolidation = ThisWorkbook
     
    'copier les données cellules de la "Feuil1" de l'onglet T1 du classeur source vers les cellules de la "Feuil1" de l'onglet T1 du classeur destination
    Donnees_Brutes.Sheets("Feuil1(T1)").Range("F127:F128").Copy Consolidation.Sheets("Feuil1(T1)").Range("E4:E5")
     
    'fermer le classeur source
    Consolidation.Close False
     
    End Sub
    J'ai réussi à corriger quelques erreurs lors du débogage mais la macro ne marche pas.

    Si quelqu'un pouvait m'aider cela serait gentil,
    Cordialement,
    FiF0o

  2. #2
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    essayes plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    workbooks("donnee_brute.xls").activate
    with Sheets("Feuil1T1") ' je te deconseille les () ' éèàç dans les noms d'onglet VBA y semble allergique
    tablo=.Range("F127:F128").value
    end with
     
    workbooks("Consolidation.xls").activate
    with Sheets("Feuil1T1") 
    .Range("E4:E5").value=tablo
    end with

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Merci pour cette rapide réponse,

    J'ai essayé d'adapter le code mais la macro ne marche toujours pas,
    Voici ce qui j'ai inséré :
    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
    Sub CopyOther()
     
    Dim Donnees_Brutes As Workbook, Consolidation As Workbook
     
    'ouvrir le classeur source (en lecture seule)
    Set Donnees_Brutes = Application.Workbooks.Open("C:\Documents and Settings\user\Donnees_Brutes.xlsx", True)
    'définir le classeur destination
    Set Consolidation = ThisWorkbook
     
    Workbooks("Donnees_Brutes.xlsx").Activate
    With Sheets("Feuil1T1")
    tablo = .Range("F126:F127").Value
    End With
     
    Workbooks("Consolidation.xlsx").Activate
    With Sheets("Feuil1T1").Range("E4:E5").Value = tablo
    End With
     
    End Sub
    Merci pour votre aide,
    Cordialement,
    FiF0o

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Rebonjour,

    J'ai remodifié le code :

    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 CopyOther()
    Dim Donnees_Brutes As Workbook
    Dim Consolidation As Workbook
     
    'ouvrir le classeur source (en lecture seule)
    Set Donnees_Brutes = Application.Workbooks.Open("C:\Documents and Settings\jlazarini\Donnees_Brutes.xlsx", True)
    'définir le classeur destination
    Set Consolidation = Application.Workbooks.Open("C:\Documents and Settings\jlazarini\Consolidation.xlsx", True)
    'copier les données cellules de la "Feuil1" de l'onglet T1 du classeur source vers les cellules de la "Feuil1" de l'onglet T1 du classeur destination
    Donnees_Brutes.Sheets("T1").Range("F126:F127").Copy
    Consolidation.Sheets("T1").Range("E4:E5").Paste
     
    'fermer le classeur source
    Donnees_Brutes.Close
     
    End Sub
    et j'ai désormais une erreur d'exécution 438
    Propriété ou méthode non gérée par cet objet.

    Quelqu'un aurait une idée de comment résoudre ce problèmes ?
    Merci d'avance,
    Cdlt,
    FiF0o

  5. #5
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Sans rien activer comme le suggère Daranc
    Macro à mettre dans le classeur Destination
    remarque: tu as bien les feuilles nommées T1 dans les 2 classeurs (sinon adapte le nom des feuilles)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub CopyOther()
    Dim Donnees_Brutes As Workbook
     
    Application.ScreenUpdating = False
    'ouvrir le classeur source
    Set Donnees_Brutes = Workbooks.Open("C:\Documents and Settings\jlazarini\Donnees_Brutes.xlsx")
    'Copier les données  de la plage F126:E127 de l'onglet T1 du classeur source
    'vers la plage E4:E5 de l'onglet T1 du classeur destination
    ThisWorkbook.Sheets("T1").Range("E4:E5").Value = Donnees_Brutes.Sheets("T1").Range("F126:F127").Value
    'fermer le classeur source
    Donnees_Brutes.Close False
    Set Donnees_Brutes = Nothing
    End Sub

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Merci pour cette réponse,
    Malheureusement j'ai une erreur d'exécution 1004 sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Donnees_Brutes = Workbooks.Open("C:\Documents and Settings\Jonathan\Donnees_Brutes.xlsx")
    Il me semble que le chemin d'accès est bien spécifié pourtant...

    Bon week-end,
    Cordialement

  7. #7
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    ceci marche ( les deux classeurs étant ouvert )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub translation()
    Workbooks("Donnees_Brutes.xls").Activate
    With Sheets("Feuil1")
    Tablotransfer = .Range("F126:F127").Value
    End With
     Workbooks("Consolidation.xls").Activate
    With Sheets("Feuil1")
    .Range("E4:E5").Value = Tablotransfer
    End With
    End Sub
    ou bien celle ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub translation()
    With Workbooks("Donnees_Brutes.xls").Sheets("Feuil1")
    Tablotransfer = .Range("F126:F127").Value
    End With
    With Workbooks("Consolidation.xls").Sheets("Feuil1")
    .Range("E4:E5").Value = Tablotransfer
    End With
    End Sub
    pour les classeur fermés il y a un tuto de Silkyroad
    ici
    PS le test est fait sous 2003 ce qui explique les fichiers en XLS

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2011
    Messages : 3
    Points : 6
    Points
    6
    Par défaut
    Vérifie que ton fichier C:\Documents and Settings\Jonathan\Donnees_Brutes.xlsx n'est pas déjà ouvert (dans Excel); sinon tu peux aussi rajouter l'option ReadOnly:=True

    Utilise l'explorer, fais un clic droit sur le fichier et copie le chemin complet de ton fichier, histoire d'être sûr que ce soit le bon nom.

Discussions similaires

  1. [Toutes versions] Macro pour copier le contenu d'une cellule d'un fichier excel et coller dans une form
    Par wizishop dans le forum VBA PowerPoint
    Réponses: 3
    Dernier message: 16/10/2015, 12h05
  2. [WD-2007] Macro pour copier des paragraphes dans un tableau
    Par foxhound77 dans le forum VBA Word
    Réponses: 1
    Dernier message: 20/03/2013, 22h55
  3. [XL-2003] Macro pour copier une cellule d'un classeur à un autre sous condition
    Par mairiemeudon dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 14/06/2010, 15h28
  4. [XL-2007] macro pour copier coller des selections multiples
    Par bedoch dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 12/06/2009, 12h31
  5. [VBA-E] Macro pour copier cellules
    Par jfamiens dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 07/06/2006, 20h02

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