Copier des données depuis un Classeur A vers un Classeur B

Bonjour à tous,

Je souhaite créer une Macro pour copier des données (en spécifiant chaque cellule qui devrait être copiée) depuis un fichier Excel (Classeur A) vers une 2ème fichier (Classeur B). Les données devraient être copiées dans certaines cellules au préalable sectionnées :

Exemple :

Copiez le contenu des cellules ("A1:A3") du classeur A (la feuille1) vers le classeur B dans les cellules ("B3:B3") (la feuille1)

La macro devrait s’exécuter en cliquant sur le bouton "insérer les données depuis le Classeur" Le bouton serait placé sur le Classeur

sub rangecopy

Range ("A3:A5"). Copy Feuil2 ("B3:B5")

End Suv

Idem le petit code ci-dessus mais entre 2 fichiers.

Si vous avez une idée, c'est volontiers :-)

Merci et bon weekend

2classeur-a.xlsm (8.68 Ko)
3classeur-b.xlsm (12.31 Ko)

Bonjour,

Voici un exemple avec 2 classeurs ouverts :

sub rangecopy()
workbooks(2).sheets(1).range("B3:B5").value =  workbooks(1).sheets(1).Range("A3:A5").value
End Suv

Il faut adapter les références qui peuvent être des index ou des noms.

Cdlt,

Bonjour le fil, bonjour le forum,

Arf grillé !... Tout comme 3GB, les deux classeurs ouverts ça donne un code à placer dans le classeur que tu veux :

Sub rangecopy()
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OS (Onglet Destination)

Set CS = Workbooks("classeur-a.xlsm") 'définit le classeur source CS (celui où se trouvent les données à copier)
Set OS = CS.Worksheets("Feuil1") 'définit l'onglet source OS (celui où se trouvent les données à copier)
Set CD = Workbooks("classeur-b.xlsm") 'définit le classeur destination CD (celui où seront copiées les données)
Set OD = CD.Worksheets("Feuil1") 'définit l'onglet destination OD (celui où seront copiées les données)
OS.Range("A3:A5").Copy OD.Range("B3") 'copie la plage A3:A5 de'l'onglet source et la copie dans B3 de l'onglet destination
End Sub

Salut Thauthème !

Et bien, tu ne chômes pas le week-end !

Juste pour faire remarquer que mon code ne copie que les valeurs tandis que celui de Thauthème copie le contenu des cellules.

Cdlt,

Bonjour,

Un grand merci pour votre réponse rapide

Si je comprends bien, les 2 classeurs doivent absolument être ouverts pour que la Macro fonctionne. Est-il possible d'indiquer le chemin d'accès pour le fichier A sans l'ouvrir, directement dans la Macro? Ou alors peut-être ouvrir, via la Macro le fichier A, effectuer la copie et refermer le fichier A?

Non, ils ne doivent pas nécessairement être ouverts au lancement de la procédure. On peut ouvrir, opérer et refermer.

Pour des valeurs, il existe des solutions (que je ne maitrise pas) sans ouvrir mais pour le contenu, j'en doute un peu.

Exemple en ouvrant (code à placer dans le fichier B donc) :

sub rangecopy()
with workbooks.open(fichierA)
    thisworkbook.sheets(1).range("B3:B5").value =  .sheets(1).Range("A3:A5").value
    .close true
end with
End Sub

où fichierA est le chemin complet du fichier A.

Cdlt,

Edit : Thauthème ! C'est bien, on dit exactement la même chose au moins...

Re,

Ça peut se faire sans ouvrir le classeur mais je ne sais pas faire... Le code à placer cette fois dans le classeur destination classeur-b.xlsm :

Sub rangecopy()
Dim CAS As String 'déclare la variable CAS (Chemin d'Accès Source)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OS (Onglet Destination)

CAS = "C:\Documents\" 'à adapter à ton cas (sans oublier le "\" à la fin)
Set CS = Workbooks.Open(CAS & "classeur-a.xlsm") 'ouvre le classeur source CS (celui où se trouvent les données à copier)
Set OS = CS.Worksheets("Feuil1") 'définit l'onglet source OS (celui où se trouvent les données à copier)
Set CD = ThisWorkbook 'définit le classeur destination CD (celui où seront copiées les données)
Set OD = CD.Worksheets("Feuil1") 'définit l'onglet destination OD (celui où seront copiées les données)
OS.Range("A3:A5").Copy OD.Range("B3") 'copie la plage A3:A5 de'l'onglet source et la copie dans B3 de l'onglet destination
CS.Close False 'ferme le classeur source sans enregistrer
End Sub

[Édition]

Arf ! Re grillé... Je vais finir carbonisé...

Je mets un simple "=" dans la feuille 2 et ça copie colle la colonne de façon automatique. Autre solution

...

Bonjour,

Merci à tous, je vais faire quelques essais sur mon document, voir si j'arrive à faire ce que j'aimerai

Bon dimanche

Rechercher des sujets similaires à "copier donnees classeur"