Copier des données dans un classeur dont le nom change

slaurent01

XLDnaute Junior
Bonjour à tous,

J'ai encore un problème dans mon projet et je viens à nouveau appeler à l'aide

j'ouvre un classeur nommé "devis_adhesif.xlsm" j'ai un bouton pour ouvrir un 2eme classeur nommé "Papiers.xlsm"
Je fais des modifications dans ce 2e classeurs et quand je quitte je copie les données dans le premier classeur.

Code:
Sub devis()
Dim w As Workbook, w2 As Workbook
 
Set w = GetObject("F:\ESSAI EXCEL\devis adhesif\Modification projet\Papiers.xlsm")
Set w2 = GetObject("F:\ESSAI EXCEL\devis adhesif\Modification projet\devis_adhesif.xlsm")     

'Copier les données du classeur "Papiers" dans l'onglet "Papiers" du classeur "Devis_adhesif"
w.Sheets("Papiers").Range("A2:d100").Copy
w2.Worksheets("Papiers").Range("A2").PasteSpecial xlPasteAll
Application.CutCopyMode = False

'fermer le classeur "Papiers"
ThisWorkbook.Close SaveChanges:=True
w2.Worksheets("Devis").Select
End Sub

Tout fonctionne bien. Cependant le classeur "devis_adhesif" prend par la suite d'autres noms.
Comment peut on procéder afin de copier les données quand le nom du classeur n'est pas fixe ?

J'ai essayé avec "workbooks(2).name" mais sans succès, mais étant débutant je l'ai peut etre mal codifié..

en vous remerciant par avance, cordialement
stéphane
 

slaurent01

XLDnaute Junior
Re : Copier des données dans un classeur dont le nom change

bonsoir le forum,

bonsoir Kjin, :).
Je me suis mal expliqué alors.

A la base je travaille avec un fichier "devis_adhesif", mais l'utilisateur le sauvegarde sous un autre nom, d'ailleurs tu m'as fourni une aide précieuse à ce sujet.

Donc si l'utilisateur l'appelle "toto", quand il l'ouvre à nouveau j'ai un bug quand je veux copier l'onglet "Papiers" puisque dans le code j'ai :
Code:
Set w2 = GetObject("F:\ESSAI EXCEL\devis adhesif\Modification projet\[COLOR="#FF0000"]devis_adhesif.xlsm[/COLOR]")
.

j'espere avoir été plus clair.....

cordialement
stephane
 

job75

XLDnaute Barbatruc
Re : Copier des données dans un classeur dont le nom change

Bonjour,

Si la macro est dans un 3ème fichier il sera difficile de retrouver les 2 autres si l'on change leurs noms ou leur chemin d'accès.

Cela coule de source.

Mais si l'on met la macro dans le 1er fichier, au moins pour celui-là il n'y aura jamais de problème :

Code:
Set w2 = ThisWorkbook
A+
 

job75

XLDnaute Barbatruc
Re : Copier des données dans un classeur dont le nom change

Re,

S'il s'agit de copier les valeurs on peut aussi mettre des formules de liaison dans chaque cellule de la plage A2: D100.

Les 2 fichiers étant ouverts entrer en Papiers!A2 du fichier devis_adhesif.xlsm :

Code:
=[Papiers.xlsm]Papiers!A2
et tirer la formule à droite et vers le bas.

Bien entendu les cellules vides donneront 0, mais on peut masquer les zéros... ou utiliser :

Code:
=SI(ESTVIDE([Papiers.xlsm]Papiers!A2);"";[Papiers.xlsm]Papiers!A2)
A+
 

slaurent01

XLDnaute Junior
Re : Copier des données dans un classeur dont le nom change

bonsoir le forum,


bonsoir job75, merci pour tes réponses.
j'avais pensé aux liaisons, mais comme ensuite je me sers de la première colonne dans une combobox, j'ai un message d'erreur car la colonne est issue d'une formule, c'est pour ca que j'essayais de contourner le problème.
L'utilisation de combobox est assez compliquée.

j'avais pu lire sur d'autre forums l'utilisation de Worbooks(2).name pour identifier un classe ouvert, mais je n'arrive pas à adapter....trop compliqué pour un débutant comme moi....

je vais essaye d'adapter avec :
Code:
Set w2 = ThisWorkbook

Et reviendrais peut etre pour quelques questions:p

bonne soiree et merci a vous

stephane
 

Discussions similaires

Statistiques des forums

Discussions
312 237
Messages
2 086 486
Membres
103 232
dernier inscrit
logan035