Copier des cellules d'un classeur à un autre sans leur liaison

charles2b

XLDnaute Nouveau
Bonjour à tous,

en ayant solutionné un problème grâce au forum j'ai été confronté à une difficulté, que je suppose, bon nombre d'entre vous ont déjà eu. Je n'ai pas trouvé la solution (je l'ai peut être pas vu) alors je vous expose mon problème :

la macro de départ consiste à copier des cellules d'un fichier modèle (xla assistant modèle) à plusieurs autres fichiers (1560) :
Salut,

Sub TEST()
Dim Fich As String, chemin As String
Const chemin = "C:\XXXX\TEST MACRO MULTIPLE\A APPLIQUER\"
Fich = Dir(chemin & "*.xls")
Do While Fich <> ""
Workbooks.Open chemin & Fich
ThisWorkbook.Sheets("Feuil1").Range("A1:A30").Copy
Workbooks(Fich).Activate
ActiveWorkbook.Sheets("Feuil1").Select
Range("A1").Select
ActiveSheet.Paste

Workbooks(Fich).Close True
Fich = Dir
Loop
End Sub

certaines cellules copiées rapportent donc les formules avec leur liaisons du classeur initial ( '[classeur1]') et ça me fausse donc le résultat des fichiers de destination.

J'ai pensé à faire une macro où je repasse sur chaque cellule concernée et supprime les liaisons (travail un peu long certes, mais s'il n'y a pas d'autres solutions tans pis), mais n'y aurait il pas une solution plus simple à appliquer au cours le la 1ère macro TEST ?
 

Dranreb

XLDnaute Barbatruc
Re : Copier des cellules d'un classeur à un autre sans leur liaison

Bonjour.
Comme ça:
VB:
Sub TEST()
Dim Fich As String, chemin As String
Const chemin = "C:\XXXX\TEST MACRO MULTIPLE\A APPLIQUER\"
Fich = Dir(chemin & "*.xls")
Do While Fich <> ""
   Workbooks.Open chemin & Fich
   ActiveWorkbook.Sheets("Feuil1").Range("A1:A30").Value = Feuil1.[A1:A30].Value
   Workbooks(Fich).Close True
   Fich = Dir
   Loop
End Sub
À+
Remarque: Seules les feuilles de Thisworkbook sont des objets connus du projet VBA sous le nom de leur CodeName et non de leur nom Excel (qui est ici le même)
 
Dernière édition:

charles2b

XLDnaute Nouveau
Re : Copier des cellules d'un classeur à un autre sans leur liaison

Bonjour et merci,

j'ai testé mais le problème est que l'opération me ramène la valeur de la cellule et non la formule (à moins que je me trompe, je suis pas un expert).
En fait je voudrais copier la formule sans les liaisons du classeur.
EX :
La formule dans le classeur 1 est =D24*MIN(A24;$B$12;'1EREPHASE'!$C$65) --- 1EREPHASE étant la feuille1

le report du coller est =D24*MIN(A24;$B$12;'[nomduclasseur]1EREPHASE'!$C$65), je cherche donc à supprimer la liaison au classeur 1 ('[Nomduclasseur]') pour que la formule soit appliquée dans le cas du nouveau fichier et non avec les références du classeur n°1

En espérant voir été plus clair
 

Dranreb

XLDnaute Barbatruc
Re : Copier des cellules d'un classeur à un autre sans leur liaison

Dans ce cas la formule ne devrait pas rendre la même chose, et d'ailleurs ne devrait pas bouger dans le classeur source.
Pourquoi ne pas installer la formule plutôt une fois pour toutes ?
Si ce sont 30 formules identiques à l'incrémentation près vous pouvez l'affecter en une fois à la propriété FormulaR1C1 de la plage de 30 cellules. Si ce sont des formules différentes à installer sur le modèle de celles du classeur source vous pouvez faire:
VB:
Sub TEST2()
Dim Fich As String, chemin As String, L As Long
Const chemin = "C:\XXXX\TEST MACRO MULTIPLE\A APPLIQUER\"
Fich = Dir(chemin & "*.xls")
Do While Fich <> ""
   Workbooks.Open chemin & Fich
   With ActiveWorkbook.Sheets("Feuil1")
      For L = 1 To 30
         .Cells(L, 1).FormulaR1C1 = Feuil1.Cells(L, 1).FormulaR1C1
         Next L
      End With
   Workbooks(Fich).Close True
   Fich = Dir
   Loop
End Sub
Mais ça ne marchera que si les feuilles mentionnées dans le fichier source existent sous le même nom dans les fichiers cibles.
À+
 

charles2b

XLDnaute Nouveau
Re : Copier des cellules d'un classeur à un autre sans leur liaison

Je ne pense pas pouvoir appliquer cette méthode.
en fait j'ai une trentaine de cellules (avec chacune sa propre formule) présentes sur mon modèle. Je voudrais donc les appliquer sur des fichiers (qui avaient été généré sur la base de ce même modèle mais où j'ai du apporter des modifications de formule).

Je voudrais ainsi reporter A1 du modèle sur A1 du fichier1 puis du fichier 2 ... fichier 1560 (dans le dossier "C:\XXXX\TEST MACRO MULTIPLE\A APPLIQUER\")
puis B12 du modèle sur B12 du fichier 2 ....
etc ... (une trentaine de fois)

Voila la difficulté
 

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 869
Membres
103 402
dernier inscrit
regishar