OVH Cloud OVH Cloud

macro d'import : reponse de michdenis

7 réponses
Avatar
rick
salut mich denis,

pour ta macro, c'est ok, mais si la feuille existe dans les deux classeurs
je veux que la macro me colle les valeurs de la feuille(toutes les cellules,
je crois cells.select) de l'ancien classeur sur la feuille correspondante du
nouveau classeur portant le meme nom.

ci joint la macro:
Sub CopyData()

Dim WkaCopier As Workbook
Dim NewWk As Workbook, F As String
Dim Sh As Worksheet, Feuille As Worksheet
Dim File As String, A As Integer
Dim Fichier As String

File = "c:\Atravail\test1.xls" 'A déterminer

Fichier = ExtractFile(File)

If Dir(File) = "" Then
MsgBox "Ce fichier """ & File & """ n'existe pas."
End If
On Error Resume Next

Set NewWk = ThisWorkbook
Set WkaCopier = Workbooks(Fichier)

If Err <> 0 Then
Err = 0
Set WkaCopier = Workbooks.Open(File)
End If

For Each Sh In WkaCopier.Worksheets
A = A + 1
F = Sh.Name
Set Feuille = NewWk.Worksheets(F)
If Err <> 0 Then
Err = 0
Sh.Copy before:=NewWk.Sheets(A)
Else
Application.DisplayAlerts = False
Feuille.Delete
Sh.Copy before:=NewWk.Sheets(A)
End If
Next

Set Sh = Nothing: Set Feuille = Nothing
Set NewWk = Nothing: WkaCopier = Nothing

End Sub

'---------------------------------------------
Function ExtractFile(File As String)
Dim Nb As Integer, C As Integer
Nb = Len(File)
For C = Nb To 1 Step -1
If Mid(File, C, 1) <> "\" Then
ExtractFile = Mid(File, C, 1) & ExtractFile
Else
Exit Function
End If
Next
End Function

7 réponses

Avatar
MichDenis
Bonsoir Rick,

Voilà !

'------------------------------------------
Sub CopyData()

Dim WkaCopier As Workbook
Dim NewWk As Workbook, F As String
Dim Sh As Worksheet, Feuille As Worksheet
Dim File As String, A As Integer
Dim Fichier As String, AcF As String

File = "c:Atravailtest1.xls" 'A déterminer

Fichier = ExtractFile(File)

If Dir(File) = "" Then
MsgBox "Ce fichier """ & File & """ n'existe pas."
Exit Sub
End If
On Error Resume Next

AcF = ThisWorkbook.ActiveSheet.Name
Set NewWk = ThisWorkbook
Set WkaCopier = Workbooks(Fichier)

If Err <> 0 Then
Err = 0
Set WkaCopier = Workbooks.Open(File)
End If

For Each Sh In WkaCopier.Worksheets
A = A + 1
F = Sh.Name
Set Feuille = NewWk.Worksheets(F)
If Err <> 0 Then
Err = 0
Sh.Copy before:=NewWk.Sheets(A)
Else
Sh.Cells.Copy NewWk.Sheets(A).Range("A1")
End If
Next

'Si tu veux que le classeur que tu as ouvert
'se ferme en s'enregistrant :
'WkaCopier.Close True

NewWk.Activate
Sheets(AcF).Select

Set Sh = Nothing: Set Feuille = Nothing
Set NewWk = Nothing: WkaCopier = Nothing

End Sub

'------------------------------------------
Function ExtractFile(File As String)
Dim Nb As Integer, C As Integer
Nb = Len(File)
For C = Nb To 1 Step -1
If Mid(File, C, 1) <> "" Then
ExtractFile = Mid(File, C, 1) & ExtractFile
Else
Exit Function
End If
Next
End Function
'------------------------------------------


Salutations!
Avatar
rick
une fois que j'ai executé cette macro, j'ai le message du type en ouvrant mon
nouveau classeur voulez vous mettre a jour les liasons avec un autre classeur.

Moi je souhaite copier les valeurs seulement,et mon ancien classeur passe
ensuite à la poubelle directement. et donc à l'ouverture de mon nouveau
classeur, ne plus avoir la demande de mettre à jour les liasons.

merci


Bonsoir Rick,

Voilà !

'------------------------------------------
Sub CopyData()

Dim WkaCopier As Workbook
Dim NewWk As Workbook, F As String
Dim Sh As Worksheet, Feuille As Worksheet
Dim File As String, A As Integer
Dim Fichier As String, AcF As String

File = "c:Atravailtest1.xls" 'A déterminer

Fichier = ExtractFile(File)

If Dir(File) = "" Then
MsgBox "Ce fichier """ & File & """ n'existe pas."
Exit Sub
End If
On Error Resume Next

AcF = ThisWorkbook.ActiveSheet.Name
Set NewWk = ThisWorkbook
Set WkaCopier = Workbooks(Fichier)

If Err <> 0 Then
Err = 0
Set WkaCopier = Workbooks.Open(File)
End If

For Each Sh In WkaCopier.Worksheets
A = A + 1
F = Sh.Name
Set Feuille = NewWk.Worksheets(F)
If Err <> 0 Then
Err = 0
Sh.Copy before:=NewWk.Sheets(A)
Else
Sh.Cells.Copy NewWk.Sheets(A).Range("A1")
End If
Next

'Si tu veux que le classeur que tu as ouvert
'se ferme en s'enregistrant :
'WkaCopier.Close True

NewWk.Activate
Sheets(AcF).Select

Set Sh = Nothing: Set Feuille = Nothing
Set NewWk = Nothing: WkaCopier = Nothing

End Sub

'------------------------------------------
Function ExtractFile(File As String)
Dim Nb As Integer, C As Integer
Nb = Len(File)
For C = Nb To 1 Step -1
If Mid(File, C, 1) <> "" Then
ExtractFile = Mid(File, C, 1) & ExtractFile
Else
Exit Function
End If
Next
End Function
'------------------------------------------


Salutations!





Avatar
jps
t'es vraiment emm....ant, rick
car si tu suivais davantage ce qui se passe sur ce forum au lieu de te
polariser sur cette application pour laquelle tu as posé des tonnes de fois
la même question, tu aurais pu trouver cette récente réponse faite à ta
question que tu colles où tu peux :

Application.AskToUpdateLinks = False



"rick" a écrit dans le message de
news:
une fois que j'ai executé cette macro, j'ai le message du type en ouvrant
mon

nouveau classeur voulez vous mettre a jour les liasons avec un autre
classeur.


Moi je souhaite copier les valeurs seulement,et mon ancien classeur passe
ensuite à la poubelle directement. et donc à l'ouverture de mon nouveau
classeur, ne plus avoir la demande de mettre à jour les liasons.

merci


Bonsoir Rick,

Voilà !

'------------------------------------------
Sub CopyData()

Dim WkaCopier As Workbook
Dim NewWk As Workbook, F As String
Dim Sh As Worksheet, Feuille As Worksheet
Dim File As String, A As Integer
Dim Fichier As String, AcF As String

File = "c:Atravailtest1.xls" 'A déterminer

Fichier = ExtractFile(File)

If Dir(File) = "" Then
MsgBox "Ce fichier """ & File & """ n'existe pas."
Exit Sub
End If
On Error Resume Next

AcF = ThisWorkbook.ActiveSheet.Name
Set NewWk = ThisWorkbook
Set WkaCopier = Workbooks(Fichier)

If Err <> 0 Then
Err = 0
Set WkaCopier = Workbooks.Open(File)
End If

For Each Sh In WkaCopier.Worksheets
A = A + 1
F = Sh.Name
Set Feuille = NewWk.Worksheets(F)
If Err <> 0 Then
Err = 0
Sh.Copy before:=NewWk.Sheets(A)
Else
Sh.Cells.Copy NewWk.Sheets(A).Range("A1")
End If
Next

'Si tu veux que le classeur que tu as ouvert
'se ferme en s'enregistrant :
'WkaCopier.Close True

NewWk.Activate
Sheets(AcF).Select

Set Sh = Nothing: Set Feuille = Nothing
Set NewWk = Nothing: WkaCopier = Nothing

End Sub

'------------------------------------------
Function ExtractFile(File As String)
Dim Nb As Integer, C As Integer
Nb = Len(File)
For C = Nb To 1 Step -1
If Mid(File, C, 1) <> "" Then
ExtractFile = Mid(File, C, 1) & ExtractFile
Else
Exit Function
End If
Next
End Function
'------------------------------------------


Salutations!







Avatar
MichDenis
Bonjour Rick,

| voulez vous mettre a jour les liasons avec un autre classeur
A ) Explique de quel type de liaisons il s'agit. Avec la version Excel 2003, la méthode utilisée ne provoque pas de liaison au
sujet des formules de la feuille.

B ) En utilisant la méthode "Cells" pour copier une feuille vers l'autre, si tu modifies le nom d'une plage nommée de la feuille
source, la copie ne va pas effacer l'ancien nom qui se trouve sur la feuille de destination. Elle va se contenter d'ajouter le
nouveau nom (plage nommée) seulement.

C ) Si tu n'identifies pas comment le lien est maintenu avec l'ancien fichier, Comment dois-je faire pour tenter de rompre ce ce
lien ?

D ) Si dans le classeur de destination, tu ne veux pas avoir de formule, seulement les valeurs :

tu remplaces cette section de la procédure
'------------------------
If Err <> 0 Then
Err = 0
Sh.Copy before:=NewWk.Sheets(A)
Else
Sh.Cells.Copy NewWk.Sheets(A).Range("A1")
End If
End If
'------------------------

PAR

'------------------------
If Err <> 0 Then
Err = 0
Sh.Copy before:=NewWk.Sheets(A)
With NewWk.Sheets(A)
.UsedRange.Value = .UsedRange.Value
End With
Else
Sh.Cells.Copy NewWk.Sheets(A).Range("A1")
With NewWk.Sheets(A)
.UsedRange.Value = .UsedRange.Value
End With
End If
End If
'------------------------


Salutations!



"rick" a écrit dans le message de news:
une fois que j'ai executé cette macro, j'ai le message du type en ouvrant mon
nouveau classeur voulez vous mettre a jour les liasons avec un autre classeur.

Moi je souhaite copier les valeurs seulement,et mon ancien classeur passe
ensuite à la poubelle directement. et donc à l'ouverture de mon nouveau
classeur, ne plus avoir la demande de mettre à jour les liasons.

merci


Bonsoir Rick,

Voilà !

'------------------------------------------
Sub CopyData()

Dim WkaCopier As Workbook
Dim NewWk As Workbook, F As String
Dim Sh As Worksheet, Feuille As Worksheet
Dim File As String, A As Integer
Dim Fichier As String, AcF As String

File = "c:Atravailtest1.xls" 'A déterminer

Fichier = ExtractFile(File)

If Dir(File) = "" Then
MsgBox "Ce fichier """ & File & """ n'existe pas."
Exit Sub
End If
On Error Resume Next

AcF = ThisWorkbook.ActiveSheet.Name
Set NewWk = ThisWorkbook
Set WkaCopier = Workbooks(Fichier)

If Err <> 0 Then
Err = 0
Set WkaCopier = Workbooks.Open(File)
End If

For Each Sh In WkaCopier.Worksheets
A = A + 1
F = Sh.Name
Set Feuille = NewWk.Worksheets(F)
If Err <> 0 Then
Err = 0
Sh.Copy before:=NewWk.Sheets(A)
Else
Sh.Cells.Copy NewWk.Sheets(A).Range("A1")
End If
Next

'Si tu veux que le classeur que tu as ouvert
'se ferme en s'enregistrant :
'WkaCopier.Close True

NewWk.Activate
Sheets(AcF).Select

Set Sh = Nothing: Set Feuille = Nothing
Set NewWk = Nothing: WkaCopier = Nothing

End Sub

'------------------------------------------
Function ExtractFile(File As String)
Dim Nb As Integer, C As Integer
Nb = Len(File)
For C = Nb To 1 Step -1
If Mid(File, C, 1) <> "" Then
ExtractFile = Mid(File, C, 1) & ExtractFile
Else
Exit Function
End If
Next
End Function
'------------------------------------------


Salutations!





Avatar
rick
mich denis, j'ai essayé la macro que tu ma donné,

mais dans mon classeur de destination(fichier nouveau.xls): j'ai toujours
dans les cellules

=[fichier ancien.xls]test!H16

je souhaite avoir seulement les valeurs dans mon nouveau classeur.
et avoir en formules test!H16

car en mettant à la corbeille mon fichier ancien.xls, des que j'ouvre mon
nouveau classeur, il me dit qu'il y a des liens a mettre a jour(sous excel
97, et 2002)

Il faudrai que ca copie seulement les valeurs, j'ai essayé ta macro mais
apparement dans les cellules du nouveau classeur,j'ai toujours:
=[fichier ancien.xls]test!H16

c'est un problème!!!

merci d'avance pour ton aide


Bonjour Rick,

| voulez vous mettre a jour les liasons avec un autre classeur
A ) Explique de quel type de liaisons il s'agit. Avec la version Excel 2003, la méthode utilisée ne provoque pas de liaison au
sujet des formules de la feuille.

B ) En utilisant la méthode "Cells" pour copier une feuille vers l'autre, si tu modifies le nom d'une plage nommée de la feuille
source, la copie ne va pas effacer l'ancien nom qui se trouve sur la feuille de destination. Elle va se contenter d'ajouter le
nouveau nom (plage nommée) seulement.

C ) Si tu n'identifies pas comment le lien est maintenu avec l'ancien fichier, Comment dois-je faire pour tenter de rompre ce ce
lien ?

D ) Si dans le classeur de destination, tu ne veux pas avoir de formule, seulement les valeurs :

tu remplaces cette section de la procédure
'------------------------
If Err <> 0 Then
Err = 0
Sh.Copy before:=NewWk.Sheets(A)
Else
Sh.Cells.Copy NewWk.Sheets(A).Range("A1")
End If
End If
'------------------------

PAR

'------------------------
If Err <> 0 Then
Err = 0
Sh.Copy before:=NewWk.Sheets(A)
With NewWk.Sheets(A)
.UsedRange.Value = .UsedRange.Value
End With
Else
Sh.Cells.Copy NewWk.Sheets(A).Range("A1")
With NewWk.Sheets(A)
.UsedRange.Value = .UsedRange.Value
End With
End If
End If
'------------------------


Salutations!



"rick" a écrit dans le message de news:
une fois que j'ai executé cette macro, j'ai le message du type en ouvrant mon
nouveau classeur voulez vous mettre a jour les liasons avec un autre classeur.

Moi je souhaite copier les valeurs seulement,et mon ancien classeur passe
ensuite à la poubelle directement. et donc à l'ouverture de mon nouveau
classeur, ne plus avoir la demande de mettre à jour les liasons.

merci


Bonsoir Rick,

Voilà !

'------------------------------------------
Sub CopyData()

Dim WkaCopier As Workbook
Dim NewWk As Workbook, F As String
Dim Sh As Worksheet, Feuille As Worksheet
Dim File As String, A As Integer
Dim Fichier As String, AcF As String

File = "c:Atravailtest1.xls" 'A déterminer

Fichier = ExtractFile(File)

If Dir(File) = "" Then
MsgBox "Ce fichier """ & File & """ n'existe pas."
Exit Sub
End If
On Error Resume Next

AcF = ThisWorkbook.ActiveSheet.Name
Set NewWk = ThisWorkbook
Set WkaCopier = Workbooks(Fichier)

If Err <> 0 Then
Err = 0
Set WkaCopier = Workbooks.Open(File)
End If

For Each Sh In WkaCopier.Worksheets
A = A + 1
F = Sh.Name
Set Feuille = NewWk.Worksheets(F)
If Err <> 0 Then
Err = 0
Sh.Copy before:=NewWk.Sheets(A)
Else
Sh.Cells.Copy NewWk.Sheets(A).Range("A1")
End If
Next

'Si tu veux que le classeur que tu as ouvert
'se ferme en s'enregistrant :
'WkaCopier.Close True

NewWk.Activate
Sheets(AcF).Select

Set Sh = Nothing: Set Feuille = Nothing
Set NewWk = Nothing: WkaCopier = Nothing

End Sub

'------------------------------------------
Function ExtractFile(File As String)
Dim Nb As Integer, C As Integer
Nb = Len(File)
For C = Nb To 1 Step -1
If Mid(File, C, 1) <> "" Then
ExtractFile = Mid(File, C, 1) & ExtractFile
Else
Exit Function
End If
Next
End Function
'------------------------------------------


Salutations!










Avatar
MichDenis
Bonjour Rick,

Je n'ai pas la version Excel 97 d'installer sur mon ordi. Mes tests sont donc limités. Mais sous Excel 2003, il n'y a plus de traces
de formules des feuilles sources dans les feuilles de destination.

Si d'autres usagers du MPFE veulent faire le test ... ils sont bienvenus, peut être auront-ils une solution pour toi.

Je n'ai pas d'autres alternatives à te proposer que celle-là !

'---------------------------------------
Sub CopyData()

Dim WkaCopier As Workbook
Dim NewWk As Workbook, F As String
Dim Sh As Worksheet, Feuille As Worksheet
Dim File As String, A As Integer
Dim Fichier As String, AcF As String

File = "c:Atravailtest1.xls" 'A déterminer

Fichier = ExtractFile(File)

If Dir(File) = "" Then
MsgBox "Ce fichier """ & File & """ n'existe pas."
Exit Sub
End If
On Error Resume Next

AcF = ThisWorkbook.ActiveSheet.Name
Set p = ThisWorkbook.Application
p.Visible = False
Set NewWk = ThisWorkbook
Set WkaCopier = Workbooks(Fichier)


If Err <> 0 Then
Err = 0
Set WkaCopier = Workbooks.Open(File)
End If

For Each Sh In WkaCopier.Worksheets
A = A + 1
F = Sh.Name
Set Feuille = NewWk.Worksheets(F)
If Err <> 0 Then
Err = 0
Sh.Copy before:=NewWk.Sheets(A)
With NewWk.Sheets(A)
.UsedRange.Value2 = .UsedRange.Value2
End With
Else
Sh.Cells.Copy NewWk.Sheets(A).Range("A1")
With NewWk.Sheets(A)
.UsedRange.Value2 = .UsedRange.Value2
End With
End If
Next

'Si tu veux que le classeur que tu as ouvert
'se ferme en s'enregistrant :
'WkaCopier.Close True

NewWk.Activate
Sheets(AcF).Select
p.Visible = True
Set Sh = Nothing: Set Feuille = Nothing
Set NewWk = Nothing: WkaCopier = Nothing

End Sub

'---------------------------------------
Function ExtractFile(File As String)
Dim Nb As Integer, C As Integer
Nb = Len(File)
For C = Nb To 1 Step -1
If Mid(File, C, 1) <> "" Then
ExtractFile = Mid(File, C, 1) & ExtractFile
Else
Exit Function
End If
Next
End Function
'---------------------------------------


Salutations!







"rick" a écrit dans le message de news:
mich denis, j'ai essayé la macro que tu ma donné,

mais dans mon classeur de destination(fichier nouveau.xls): j'ai toujours
dans les cellules

=[fichier ancien.xls]test!H16

je souhaite avoir seulement les valeurs dans mon nouveau classeur.
et avoir en formules test!H16

car en mettant à la corbeille mon fichier ancien.xls, des que j'ouvre mon
nouveau classeur, il me dit qu'il y a des liens a mettre a jour(sous excel
97, et 2002)

Il faudrai que ca copie seulement les valeurs, j'ai essayé ta macro mais
apparement dans les cellules du nouveau classeur,j'ai toujours:
=[fichier ancien.xls]test!H16

c'est un problème!!!

merci d'avance pour ton aide


Bonjour Rick,

| voulez vous mettre a jour les liasons avec un autre classeur
A ) Explique de quel type de liaisons il s'agit. Avec la version Excel 2003, la méthode utilisée ne provoque pas de liaison au
sujet des formules de la feuille.

B ) En utilisant la méthode "Cells" pour copier une feuille vers l'autre, si tu modifies le nom d'une plage nommée de la feuille
source, la copie ne va pas effacer l'ancien nom qui se trouve sur la feuille de destination. Elle va se contenter d'ajouter le
nouveau nom (plage nommée) seulement.

C ) Si tu n'identifies pas comment le lien est maintenu avec l'ancien fichier, Comment dois-je faire pour tenter de rompre ce ce
lien ?

D ) Si dans le classeur de destination, tu ne veux pas avoir de formule, seulement les valeurs :

tu remplaces cette section de la procédure
'------------------------
If Err <> 0 Then
Err = 0
Sh.Copy before:=NewWk.Sheets(A)
Else
Sh.Cells.Copy NewWk.Sheets(A).Range("A1")
End If
End If
'------------------------

PAR

'------------------------
If Err <> 0 Then
Err = 0
Sh.Copy before:=NewWk.Sheets(A)
With NewWk.Sheets(A)
.UsedRange.Value = .UsedRange.Value
End With
Else
Sh.Cells.Copy NewWk.Sheets(A).Range("A1")
With NewWk.Sheets(A)
.UsedRange.Value = .UsedRange.Value
End With
End If
End If
'------------------------


Salutations!



"rick" a écrit dans le message de news:
une fois que j'ai executé cette macro, j'ai le message du type en ouvrant mon
nouveau classeur voulez vous mettre a jour les liasons avec un autre classeur.

Moi je souhaite copier les valeurs seulement,et mon ancien classeur passe
ensuite à la poubelle directement. et donc à l'ouverture de mon nouveau
classeur, ne plus avoir la demande de mettre à jour les liasons.

merci


Bonsoir Rick,

Voilà !

'------------------------------------------
Sub CopyData()

Dim WkaCopier As Workbook
Dim NewWk As Workbook, F As String
Dim Sh As Worksheet, Feuille As Worksheet
Dim File As String, A As Integer
Dim Fichier As String, AcF As String

File = "c:Atravailtest1.xls" 'A déterminer

Fichier = ExtractFile(File)

If Dir(File) = "" Then
MsgBox "Ce fichier """ & File & """ n'existe pas."
Exit Sub
End If
On Error Resume Next

AcF = ThisWorkbook.ActiveSheet.Name
Set NewWk = ThisWorkbook
Set WkaCopier = Workbooks(Fichier)

If Err <> 0 Then
Err = 0
Set WkaCopier = Workbooks.Open(File)
End If

For Each Sh In WkaCopier.Worksheets
A = A + 1
F = Sh.Name
Set Feuille = NewWk.Worksheets(F)
If Err <> 0 Then
Err = 0
Sh.Copy before:=NewWk.Sheets(A)
Else
Sh.Cells.Copy NewWk.Sheets(A).Range("A1")
End If
Next

'Si tu veux que le classeur que tu as ouvert
'se ferme en s'enregistrant :
'WkaCopier.Close True

NewWk.Activate
Sheets(AcF).Select

Set Sh = Nothing: Set Feuille = Nothing
Set NewWk = Nothing: WkaCopier = Nothing

End Sub

'------------------------------------------
Function ExtractFile(File As String)
Dim Nb As Integer, C As Integer
Nb = Len(File)
For C = Nb To 1 Step -1
If Mid(File, C, 1) <> "" Then
ExtractFile = Mid(File, C, 1) & ExtractFile
Else
Exit Function
End If
Next
End Function
'------------------------------------------


Salutations!










Avatar
rick
moi j'utilise excel, 97, donc tu pense que cela peut etre du à la version.

car dans mon fichier de destination j'ai des formules sur mes cellules qui
font réference à une autre feuille du meme classeur, et dès que l'import a
lieu
les formules font references a la feuille du fichier source.

Chose qui ne devrait pas , car le fichier source part directement à la
corbeille.

j'essaie de voir? mais je ne trouve toujous pas la solution à mon problème.

SInon autre chose, pour laisser le choix à l'utilisateur de choisir le
chemin de son fichier source, sans mettre en dur le chemin.
car chaque utilisateur peut avoir un chemin différent.

quelle est le code macro qui permet de faire ca?

merci d'avance

et je cherche toujours le probleme en ce qui conçerne mes formules!!!!


Bonjour Rick,

Je n'ai pas la version Excel 97 d'installer sur mon ordi. Mes tests sont donc limités. Mais sous Excel 2003, il n'y a plus de traces
de formules des feuilles sources dans les feuilles de destination.

Si d'autres usagers du MPFE veulent faire le test ... ils sont bienvenus, peut être auront-ils une solution pour toi.

Je n'ai pas d'autres alternatives à te proposer que celle-là !

'---------------------------------------
Sub CopyData()

Dim WkaCopier As Workbook
Dim NewWk As Workbook, F As String
Dim Sh As Worksheet, Feuille As Worksheet
Dim File As String, A As Integer
Dim Fichier As String, AcF As String

File = "c:Atravailtest1.xls" 'A déterminer

Fichier = ExtractFile(File)

If Dir(File) = "" Then
MsgBox "Ce fichier """ & File & """ n'existe pas."
Exit Sub
End If
On Error Resume Next

AcF = ThisWorkbook.ActiveSheet.Name
Set p = ThisWorkbook.Application
p.Visible = False
Set NewWk = ThisWorkbook
Set WkaCopier = Workbooks(Fichier)


If Err <> 0 Then
Err = 0
Set WkaCopier = Workbooks.Open(File)
End If

For Each Sh In WkaCopier.Worksheets
A = A + 1
F = Sh.Name
Set Feuille = NewWk.Worksheets(F)
If Err <> 0 Then
Err = 0
Sh.Copy before:=NewWk.Sheets(A)
With NewWk.Sheets(A)
.UsedRange.Value2 = .UsedRange.Value2
End With
Else
Sh.Cells.Copy NewWk.Sheets(A).Range("A1")
With NewWk.Sheets(A)
.UsedRange.Value2 = .UsedRange.Value2
End With
End If
Next

'Si tu veux que le classeur que tu as ouvert
'se ferme en s'enregistrant :
'WkaCopier.Close True

NewWk.Activate
Sheets(AcF).Select
p.Visible = True
Set Sh = Nothing: Set Feuille = Nothing
Set NewWk = Nothing: WkaCopier = Nothing

End Sub

'---------------------------------------
Function ExtractFile(File As String)
Dim Nb As Integer, C As Integer
Nb = Len(File)
For C = Nb To 1 Step -1
If Mid(File, C, 1) <> "" Then
ExtractFile = Mid(File, C, 1) & ExtractFile
Else
Exit Function
End If
Next
End Function
'---------------------------------------


Salutations!







"rick" a écrit dans le message de news:
mich denis, j'ai essayé la macro que tu ma donné,

mais dans mon classeur de destination(fichier nouveau.xls): j'ai toujours
dans les cellules

=[fichier ancien.xls]test!H16

je souhaite avoir seulement les valeurs dans mon nouveau classeur.
et avoir en formules test!H16

car en mettant à la corbeille mon fichier ancien.xls, des que j'ouvre mon
nouveau classeur, il me dit qu'il y a des liens a mettre a jour(sous excel
97, et 2002)

Il faudrai que ca copie seulement les valeurs, j'ai essayé ta macro mais
apparement dans les cellules du nouveau classeur,j'ai toujours:
=[fichier ancien.xls]test!H16

c'est un problème!!!

merci d'avance pour ton aide


Bonjour Rick,

| voulez vous mettre a jour les liasons avec un autre classeur
A ) Explique de quel type de liaisons il s'agit. Avec la version Excel 2003, la méthode utilisée ne provoque pas de liaison au
sujet des formules de la feuille.

B ) En utilisant la méthode "Cells" pour copier une feuille vers l'autre, si tu modifies le nom d'une plage nommée de la feuille
source, la copie ne va pas effacer l'ancien nom qui se trouve sur la feuille de destination. Elle va se contenter d'ajouter le
nouveau nom (plage nommée) seulement.

C ) Si tu n'identifies pas comment le lien est maintenu avec l'ancien fichier, Comment dois-je faire pour tenter de rompre ce ce
lien ?

D ) Si dans le classeur de destination, tu ne veux pas avoir de formule, seulement les valeurs :

tu remplaces cette section de la procédure
'------------------------
If Err <> 0 Then
Err = 0
Sh.Copy before:=NewWk.Sheets(A)
Else
Sh.Cells.Copy NewWk.Sheets(A).Range("A1")
End If
End If
'------------------------

PAR

'------------------------
If Err <> 0 Then
Err = 0
Sh.Copy before:=NewWk.Sheets(A)
With NewWk.Sheets(A)
.UsedRange.Value = .UsedRange.Value
End With
Else
Sh.Cells.Copy NewWk.Sheets(A).Range("A1")
With NewWk.Sheets(A)
.UsedRange.Value = .UsedRange.Value
End With
End If
End If
'------------------------


Salutations!



"rick" a écrit dans le message de news:
une fois que j'ai executé cette macro, j'ai le message du type en ouvrant mon
nouveau classeur voulez vous mettre a jour les liasons avec un autre classeur.

Moi je souhaite copier les valeurs seulement,et mon ancien classeur passe
ensuite à la poubelle directement. et donc à l'ouverture de mon nouveau
classeur, ne plus avoir la demande de mettre à jour les liasons.

merci


Bonsoir Rick,

Voilà !

'------------------------------------------
Sub CopyData()

Dim WkaCopier As Workbook
Dim NewWk As Workbook, F As String
Dim Sh As Worksheet, Feuille As Worksheet
Dim File As String, A As Integer
Dim Fichier As String, AcF As String

File = "c:Atravailtest1.xls" 'A déterminer

Fichier = ExtractFile(File)

If Dir(File) = "" Then
MsgBox "Ce fichier """ & File & """ n'existe pas."
Exit Sub
End If
On Error Resume Next

AcF = ThisWorkbook.ActiveSheet.Name
Set NewWk = ThisWorkbook
Set WkaCopier = Workbooks(Fichier)

If Err <> 0 Then
Err = 0
Set WkaCopier = Workbooks.Open(File)
End If

For Each Sh In WkaCopier.Worksheets
A = A + 1
F = Sh.Name
Set Feuille = NewWk.Worksheets(F)
If Err <> 0 Then
Err = 0
Sh.Copy before:=NewWk.Sheets(A)
Else
Sh.Cells.Copy NewWk.Sheets(A).Range("A1")
End If
Next

'Si tu veux que le classeur que tu as ouvert
'se ferme en s'enregistrant :
'WkaCopier.Close True

NewWk.Activate
Sheets(AcF).Select

Set Sh = Nothing: Set Feuille = Nothing
Set NewWk = Nothing: WkaCopier = Nothing

End Sub

'------------------------------------------
Function ExtractFile(File As String)
Dim Nb As Integer, C As Integer
Nb = Len(File)
For C = Nb To 1 Step -1
If Mid(File, C, 1) <> "" Then
ExtractFile = Mid(File, C, 1) & ExtractFile
Else
Exit Function
End If
Next
End Function
'------------------------------------------


Salutations!