Coller des valeurs dans une feuille portant le nom d'un fichier ouvert

newpol

XLDnaute Nouveau
Bonjour à tous,

Je reste bloqué sur une ligne de code VBA et espère trouver parmi vous la solution.

Je dispose d'un fichier global avec 9 onglets et le but est d'ouvrir les 9 fichiers sources contenus dans un répertoire et de coller les données vers le fichier global.
Sachant que chaque onglets du fichier global porte le nom d'un des fichiers sources.

J'ai réussi à récupérer une macro qui ouvre les 9 fichiers Excel sources, copie et colle les valeurs dans le fichier global.

Mon souci est que la macro colle systématiquement les valeurs sur la feuille active du fichier global et non sur chaque onglet qui porte le nom du fichier source.

Je souhaiterai que les données copiées du fichier source soient coller dans le fichier global mais dans l'onglet qui porte le même nom que le fichier source ouvert.

nom du Fichier source: FR-4.xls
==> copier les données dans la feuille "FR-4" du fichier global.

Je vois joint un fichier Excel avec mon code sur le module1.

Par avance merci pour votre aide

cordialement
 

Pièces jointes

  • Test macro.xlsm
    264.9 KB · Affichages: 16
  • Test macro.xlsm
    264.9 KB · Affichages: 19

thebenoit59

XLDnaute Accro
Re : Coller des valeurs dans une feuille portant le nom d'un fichier ouvert

Bonjour Newpol.
Je n'ai pas pu tester sans les fichiers à ouvrir, mais ça devrait le faire.
Modifie la partie ActiveSheet.Activate par :
Code:
nFeuille = Left(wbSource.Name, Len(wbSource.Name) - 4)
wbdest.Worksheets(nFeuille).Activate 'activate the destination file
Le -4 si tes fichiers sont bien du type .xls
 

Lone-wolf

XLDnaute Barbatruc
Re : Coller des valeurs dans une feuille portant le nom d'un fichier ouvert

Bonjour newpol,

concernant les select's, évite au maximum de t'en servir; sutout que tu as autant d'onglets. Par expérience j'ai vu les conséquences qu'ils encourraient.

Code:
Set wbSource = Workbooks.Open(Ton Chemin & fichier) 'open the file
Set wksNewSheet = wbSource.Sheets("Budget") 'ceci active déjà la feuille
wksNewSheet.Activate '1ère ligne en trop
Range("A4:K2000").Select '2ème ligne en trop
Selection.Copy '3ème ligne en trop
wbdest.Activate '4ème ligne en trop
'i = ActiveSheet.UsedRange.Rows.Count 'count the number of line used in this file
Cells(4, 1).Select 'A changer 
ActiveSheet.Paste 'paste the data
wbSource.Close 'close the current source file
fichier = Dir 'go to next file in the directory
Loop 'restart the process with next file
wbdest.Activate  'En trop vus qu'elle est déjà activée

En résumé:

Code:
Set wbSource = Workbooks.Open(Ton Chemin & fichier) 'open the file
Set wksNewSheet = wbSource.Sheets("Budget")

set wbdest = workbook ou worksheet?
wksNewSheet.Range("A4:K2000").Copy wbdest.Cells(4, 1)

wbSource.Close 'close the current source file
fichier = Dir 'go to next file in the directory
Loop 'restart the process with next file


Tu vois la différence? Pour le reste je laisse la main à mes professeurs.


A+ :cool:
 

newpol

XLDnaute Nouveau
Re : Coller des valeurs dans une feuille portant le nom d'un fichier ouvert

Bonjour thebenoit59,

Merci pour ta réponse rapide.

Je ne vois pas où placer ton code car je ne vois de "ActiveSheet.Activate" dans mon code..??

Parles tu de "wbdest.Activate" ?

merci !
 

Lone-wolf

XLDnaute Barbatruc
Re : Coller des valeurs dans une feuille portant le nom d'un fichier ouvert

Bonsoir thebenoit,

merci pour ce que tu viens de dire, en souhaitant qu'il les suivra.

@newpol: as-tu déjà entendu un marteau piqeur? Voilà ce que vont faire tous ces select's, et peut-être bloquer le progamme. À toi de voir.



A+ :cool:
 

newpol

XLDnaute Nouveau
Re : Coller des valeurs dans une feuille portant le nom d'un fichier ouvert

Bonjour thebenoit59 et bonjour Lone-wolf,

Merci encore pour vos réponses.

J'ai suivi vos conseils et j'ai remplacé mon code par celui de Lone-Wolf et apparemment il manquait un "DO" car j'avais un message d'erreur du type "boucle sans DO".
je les donc mis dans le code.


mais j'ai ensuite un autre message d'erreur dont je ne parviens pas à résoudre:
"erreur d'exécution '1004' désolé...nous ne trouvons pas C:......peut être l'avez vous déplacé, renommé ou supprimé?"

Je n'ai pourtant pas changé de place les fichiers ni renommé.

ci joint mon fichier avec le code dans le module 1.

désolé je n'arrive pas à copier mon code dans mon message pour qu'il apparait comme vous le faites...

merci!
 

Pièces jointes

  • Test macro - Copie.xlsm
    259.2 KB · Affichages: 17

Lone-wolf

XLDnaute Barbatruc
Re : Coller des valeurs dans une feuille portant le nom d'un fichier ouvert

Bonjour newpol,

si le nom du fichier source: FR-4.xls, pourquoi Set wksNewSheet = wbSource.Sheets("Budget"), que je ne vois pas dans le fichier??
Et ic ce n'est pas FR-4.xls, mais FR_4.xls si je ne dit pas de bêtises.

Set wbdest = Workbook Ici il manque le nom du classeur; c'est bien de lui demander de chercher, mais il faut lui dire lequel aussi.
Et non "Là tu m'ouvre un classeur et tu te débrouille pour le reste"

Pour le chemin, pour avoir un peu de clarté dans le code, fais comme ceci (a copier juste au dessus de Sub Importfiles() )

Code:
Option Explicit
Public Const repertoire As String = "C:\  et le reste du chemin que tu as écrit\" ; et ensuite
Public wbSource, wbdest As Workbook, wksNewSheet  As Worksheet, fichier

Sub Importfiles()
Set wbSource = Workbooks.Open(repertoire & "*.xls")


End Sub

A+ :cool:
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 114
Messages
2 085 432
Membres
102 889
dernier inscrit
monsef JABBOUR