copier une plage de cellules d'un classeur fermé dans un classeur ouvert

foufana

XLDnaute Junior
Bonjour à tous,

Je voudrais copier à l'aide d'une macro, la plage de cellules "O31:O37" de l'onglet "EPARGNE" du classeur "S:\DCG\DCG_Commun\PNB\PNB 2009\baremes TCI\hitorique TCI 2009.xls" (fermé), dans un autre classeur ("classeur1.xls") à partir de la cellule "B3" de l'onglet "livrets".

J'espère que ce message est assez clair.
Merci d'avance pour votre aide!
 

job75

XLDnaute Barbatruc
Re : copier une plage de cellules d'un classeur fermé dans un classeur ouvert

Bonjour foufana, bienvenue sur XLD,

Dans la feuille "livrets" entrer en B3 la formule :

Code:
='S:\DCG\DCG_Commun\PNB\PNB 2009\baremes TCI\[hitorique TCI 2009.xls]EPARGNE'!$O31

et la tirer jusqu'à B9.

On peut automatiser ça dans une macro :

Code:
Workbooks("Classeur1.xls").Sheets("livrets").Range("B3:B9").FormulaR1C1 = "='S:\DCG\DCG_Commun\PNB\PNB 2009\baremes TCI\[hitorique TCI 2009.xls]EPARGNE'!R[28]C15"

Edit : salut tototiti, pas rafraîchi...

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : copier une plage de cellules d'un classeur fermé dans un classeur ouvert

Re,

Si l'on ne veut pas conserver les formules et ne garder que les valeurs, faire un Copier/Collage spécial/Valeurs de la plage B3:B9 sur elle-même.

En VBA :

Code:
With Workbooks("Classeur1.xls").Sheets("livrets").Range("B3:B9")
.FormulaR1C1 = "='S:\DCG\DCG_Commun\PNB\PNB 2009\baremes TCI\[hitorique TCI 2009.xls]EPARGNE'!R[28]C15"
.Value = .Value
End With

A+
 

foufana

XLDnaute Junior
Re : copier une plage de cellules d'un classeur fermé dans un classeur ouvert

Merci Job, par contre lorsque ça me copie les valeurs ça me décale d'une cellule ! en faite ça commence à B2 et ça finit à B8. Du coup je l'ai modifié dans ta formule mais au final le résultat est décalé d'une cellule! t'as une sulution?
 

job75

XLDnaute Barbatruc
Re : copier une plage de cellules d'un classeur fermé dans un classeur ouvert

Re,

Donc c'est le VBA qui vous intéresse. Il faut adapter correctement le code :

Code:
With Workbooks("Classeur1.xls").Sheets("livrets").Range("[COLOR="red"]B2:B8[/COLOR]")
.FormulaR1C1 = "='S:\DCG\DCG_Commun\PNB\PNB 2009\baremes TCI\[hitorique TCI 2009.xls]EPARGNE'!R[[COLOR="Red"]29[/COLOR]]C15"
.Value = .Value
End With

A+
 

foufana

XLDnaute Junior
Re : copier une plage de cellules d'un classeur fermé dans un classeur ouvert

Ok c cool merci Job!

J'ai une dernière question à te poser stp! en fait lorsque j'execute la macro, ça m'ouvre la boite pour aller chercher le fichier source en question. Est-il possible de ne pas l'afficher et d'importer automatiquement les valeurs sans que je puisse le reseigner?
 

job75

XLDnaute Barbatruc
Re : copier une plage de cellules d'un classeur fermé dans un classeur ouvert

Re,

Si la boîte de dialogue s'ouvre, c'est qu'Excel ne trouve pas le fichier avec le chemin d'accès indiqué.

Vérifiez-le bien, avec l'orthographe et les espaces. Par exemple à la place d'hitorique c'est peut-être historique, non ?

A+
 

foufana

XLDnaute Junior
Re : copier une plage de cellules d'un classeur fermé dans un classeur ouvert

J'ai rencontré un nouveau problème, c'est que le nom de mon fichier change sans arrêt donc pour la macro qui retient le nom du fichier suivant "classeur1.xls" entraîne une erreur sur celle-ci. J'ai pensé à retirer le nom du fichier mais cela ne fonctionne pas alors y'a t-il un moyen pour que cela fonctionne même si le nom du fichier change?merci de votre aide
 

job75

XLDnaute Barbatruc
Re : copier une plage de cellules d'un classeur fermé dans un classeur ouvert

Bonsoir foufana,

J'ai rencontré un nouveau problème, c'est que le nom de mon fichier change sans arrêt

C'est peut-être un fichier fantôme :eek:

Sinon, son nom doit bien être stocké quelque part :

- dans une cellule (A1 par exemple) :

With Workbooks(Range("A1") & ".xls").Sheets("livrets").Range("B2:B8")

- dans une variable du code définie préalablement (NomFichier par exemple) :

With Workbooks(NomFichier).Sheets("livrets").Range("B2:B8")

A+
 
Dernière édition:

jerome23

XLDnaute Nouveau
Re : copier une plage de cellules d'un classeur fermé dans un classeur ouvert

Je relance le sujet car j'ai moi aussi ce probleme la.

J'ai beau essayer, rien n'y fait.

J'ai essayé de chercher sur d'autre messages, mais à chaque fois un cas particulier.

Alors voici mon probleme:

Je suis dans un classeur excel (disons CL1) et Je cherche juste à savoir comment on appelle un classeur fermé (disons CL2) afin que :

1. la macro l'ouvre.
2. La macro remplisse les infos de CL1 dans CL2 sous certaines conditions.

une info comme ce qui suit m'irait à merveille :

"tu dis à ta macro:

ouvrir fichier C:\mes documents\CL2

'et il l'ouvre

et

dans fichier c:\mes documents\CL2.sheets("Feuil1").cells(i,6) = Variable1
'pour le remplissage conditionnel du classeur"


Je m'excuse par avance si je suis pas très clair car c'est vraiment très dur de passer Ljournée + la nuit sur les VBA quand on débute...

Merci d'avance pour vos réponses
 

tototiti2008

XLDnaute Barbatruc
Re : copier une plage de cellules d'un classeur fermé dans un classeur ouvert

Bonjour Jérome23,

"tu dis à ta macro:

ouvrir fichier C:\mes documents\CL2

'et il l'ouvre"
ça devrait donner

Code:
Workbooks.Open "C:\mes documents\CL2.xls"

et

"et

dans fichier c:\mes documents\CL2.sheets("Feuil1").cells(i,6) = Variable1
'pour le remplissage conditionnel du classeur"

ça devrait donner

Code:
Workbooks("Cl2.xls").sheets("Feuil1").cells(i,6).value = Variable1
 

jerome23

XLDnaute Nouveau
Re : copier une plage de cellules d'un classeur fermé dans un classeur ouvert

Merci, tototiti, milllllllle merci

c'est exactement ce que je voulais

ca marche du tonnerre

"Ca remet le facteur sur le vélo, ca !!"

un grand merci à vous tous qui nous faites partager votre expérience.

:p
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 979
dernier inscrit
bderradji