XL 2016 VBA : Copier des valeurs entre deux fichiers

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Leché

XLDnaute Junior
Bonjour,

J'ai ce bout de code qui me permet de :

1- Je copie une plage de donnée du FichierA ( les données sont le résultat d'une formule)
2- J'ouvre un second Fichier (dans le même dossier que le FichierA) ayant un nom aléatoire et dont le nom est contenue dans mon fichierA en cellule A1
3- Je colle les données copier du FichierA sur mon fichier fraichement ouvert (en valeur)

VB:
Workbooks("FichierA.xlsm").Worksheets("Feuil1").Range("D8").Select
Workbooks("FichierA.xlsm").Worksheets("Feuil1").Range("D8:D100").Copy

MonFichier = Range("A1").Value
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & MonFichier

Worksheets("Feuil1").Range("V2:V100").Select 'Zone selectionnée
Worksheets("Feuil1").Range("V2:V100").Clear 'Zone selectionnée supprimé
Worksheets("Feuil1").Range("V2").Select 'Cellule selectionné pour copier les donnée du fichier A
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False


Cependant cela me met une erreur au moment du collage, avez vous une idée de ce qui ne va pas ?
Je pensais rajouter un bout de code qui garde en mémoire le copiage des données, mais je ne voit pas comment faire?

Merci pour votre aide,

Salutations,
 
Solution
Re-bonjour,

C'est ton clear qui force la déselection du copy.
Essaye comme suivant :
VB:
MonFichier = Range("A1").Value
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & MonFichier

Worksheets("Feuil1").Range("V2:V100").Clear
Workbooks("FichierA.xlsm").Worksheets("Feuil1").Range("D8:D100").Copy
Worksheets("Feuil1").Range("V2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Bonne journée,
Bonjour,

Commence par supprimer les select qui ne servent à rien :
VB:
Workbooks("FichierA.xlsm").Worksheets("Feuil1").Range("D8:D100").Copy

MonFichier = Range("A1").Value
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & MonFichier

Worksheets("Feuil1").Range("V2:V100").Clear
Worksheets("Feuil1").Range("V2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Ensuite, quel est le message d'erreur ? Je me demande si les Select ne posent pas un problème de non correspondance de la taille de plage.

Bonne journée,
 
Bonjour,

Commence par supprimer les select qui ne servent à rien :
VB:
Workbooks("FichierA.xlsm").Worksheets("Feuil1").Range("D8:D100").Copy

MonFichier = Range("A1").Value
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & MonFichier

Worksheets("Feuil1").Range("V2:V100").Clear
Worksheets("Feuil1").Range("V2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Ensuite, quel est le message d'erreur ? Je me demande si les Select ne posent pas un problème de non correspondance de la taille de plage.

Bonne journée,
Bonjour,

Merci pour ta réponse 🙂

Alors j'ai toujours l'erreur, sur la dernière ligne, en faisant cette modification :

Erreur d'exécution '1004' :
La méthode PasteSpecial de la classe Range à échoué.

Salutations,
 
Re-bonjour,

C'est ton clear qui force la déselection du copy.
Essaye comme suivant :
VB:
MonFichier = Range("A1").Value
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & MonFichier

Worksheets("Feuil1").Range("V2:V100").Clear
Workbooks("FichierA.xlsm").Worksheets("Feuil1").Range("D8:D100").Copy
Worksheets("Feuil1").Range("V2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Bonne journée,
 
Re-bonjour,

C'est ton clear qui force la déselection du copy.
Essaye comme suivant :
VB:
MonFichier = Range("A1").Value
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & MonFichier

Worksheets("Feuil1").Range("V2:V100").Clear
Workbooks("FichierA.xlsm").Worksheets("Feuil1").Range("D8:D100").Copy
Worksheets("Feuil1").Range("V2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Bonne journée,

Et bah ça fonctionne 🙂

Merci beaucoup pour ton aide.

Bonne journée,

Salutations
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour