Copier cellules d'un classeur fermé

Bonjour,

Je souhaite créer une macro pour copier les valeurs des cellules d3 à d22 de la feuille "papa" du "classeurSource" que je veux laisser "fermé" dans les cellules e3 à e22 de la feuille "nana" du "classeurCopie" ouvert. (fichiers "bidons" choisis pour avoir un exemple, car mes fichiers sont en réalité plus complexes et ce serait inutile de les communiquer en entier).

Pour obtenir ce résultat, je ne souhaite pas utiliser les procédures type "ADO" que je trouve trop complexes.

J'avais donc tenté une macro du type suivant que j'avais trouvé sur un forum

Range("d3:d22") = "=plage"

Range("d3:d22").Copy

Sheets("nana").Range("e3:e22").PasteSpecial xlPasteValues

mais cela marche sur un PC alors qu'il me déclenche une erreur "13" sur un autre PC.

Pouvez-vous m'indiquer le code complet pour l'exemple simpliste que j'ai choisi en tête de texte ? et éventuellement me donner une explication de cette différence entre deux PC.

D'avance merci pour votre aide.

47classeurcopie.xlsm (14.59 Ko)

Bonjour début49 et

Tu as un tas d'exemples pour ce que tu veux

J'utilise une méthode particulière:

Le fichier "VOLEUR" rend l écran inactif, ouvre le fichier source, prend et copie les données, ferme le fichier source puis remet l’écran actif.

pour cela voici une petite procédure pour trouver le chemin d’accès au fichier source, il faut la mettre dans le fichier source

Sub macroNOM()

Dim chemin As String

'Sheets("feuil1").Select

chemin = Workbooks(ActiveWorkbook.Name).FullName

MsgBox "Chemin complet " & chemin

chemin = Workbooks(ActiveWorkbook.Name).Path

MsgBox "Nom du Dossier " & chemin

Sheets("papa").Select

Range("C1").Value = chemin

End Sub

Ensuite voici la procédure a glisser dans le fichier VOLEUR :

Sub RequeteVOLEUSE()

Application.DisplayAlerts = False

Application.ScreenUpdating = False

Dim titre As String

Dim wbk1 As Workbook

Dim wbk2 As Workbook

titre = "NOMCOMPLETFICHIERSOURCE\classeurSource.xlsm"

Set wbk1 = ThisWorkbook

Set wbk2 = Workbooks.Open(titre) ' jouvre le classeur (titre)

wbk1.Sheets("nana").Cells(3, 4).Value = wbk2.Sheets("papa").Cells(3, 4).Value

wbk2.Close

Application.ScreenUpdating = True

Application.DisplayAlerts = True

End Sub

Ça a toujours marché car je ne change jamais la place de mes fichiers source

Bonjour Debut49, le Forum,

Ci-dessous un simple code pour ton besoin dans ton classeur de copie.

Sub RecupData()
Dim ChemGlobal As String, Wkb As Workbook
ChemGlobal = Range("A1"): Set Wkb = GetObject(ChemGlobal)   'En cellule A1 est inscrit le chemin complet de ton fichier source
Wkb.Sheets("papa").Range("D3:D22").Copy Sheets("nana").Range("E3")  ' .PasteSpecial xlPasteValues si besoin
Application.CutCopyMode = False 
Workbooks("ClasseurSource.xlsm").Close
Range("A1").Select
End Sub

Note: Ton fichier source n'apparaît jamais. Il est simplement actif en mémoire et rendu inactif en fin de macro.

Bons tests, bonne continuation.

Grand merci à Toukoul, à BrunoM45 et à X Cellus pour vos conseils éclairés. J'ai testé sur mes fichiers exemples joints et ça marche bien.

Compte tenu du fait que mon fichier réel est beaucoup plus complexe que ceux que j'avais joints à ma demande, je vais adapter vos consignes à mon cas concret et reviendrai vers vous si d'aventure je rencontre d'autres problèmes.

Continuez à aider les débutants, c'est sympa !

merci pour ces infos qui m'ont été très utiles

Rechercher des sujets similaires à "copier classeur ferme"