Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

débutant: Copier une feuille d'un fichier .xls fermé vers un autre ouvert

1 réponse
Avatar
Viniboy
Bonjour à tous,

J'ai 2 documents excel l'un ouvert (c:\test1.xls) , l'autre fermé
(c:\temp\test2.xls).

Dans le document ouvert, j'ai en feuil1!A1 le chemin complet du document
fermé, type "c:\temp\test2.xls",
Dans le document ouvert, j'ai en feuil!1A2 le nom de la feuille que je
souhaite copier du document test2.xls, type "feuil1", et finalement
Dans le document ouvert, j'ai en feuil1!A3 le nom de la feuille de test1.xls
vers laquelle je veux copier test2.xls[feuil1].

Si quelqu'un peut m'aider, cela me serait tres utile professionellement mais
c'est au dessus de mes compétences !

Merci d'avance.

1 réponse

Avatar
PMO
Bonjour,

Voici 2 solutions mais en VBA.
Recopiez le code suivant dans un module standard du VBE.
ATTENTION: faites le test sur une copie de votre classeur.

DIFFERENCES ENTRE LES 2 PROCEDURES
1) PMO_CopieSansMiseEnPage
Cette procédure copie les données et objets (graphiques...)
sans récupérer la mise en page à l'impression. Si des données existaient
dans la feuille de réception, celles-ci seront écrasées.

2)PMO_CopieAvecMiseEnPage
Cette procédure copie les données et objets et reproduit la mise en page à
l'impression. Si la feuille de réception contenait des données, une alerte
vous informe que la copie s'effectue dans une nouvelle feuille xxx.

Bien entendu si la feuille sélectionnée au départ ne contient pas en A1
le chemin de l'autre classeur, en A2 le nom de la feuille de l'autre classeur
qu'il faudra copier, en A3 le nom de la feuille de réception et bien ça ne
fonctionnera pas.

'**************
Sub PMO_CopieSansMiseEnPage()
Dim Chemin$
Dim Feuille$
Dim Cible$
Dim bool As Boolean
Dim W1 As Workbook
Dim W2 As Workbook
Dim S2 As Worksheet
On Error GoTo Erreur
Chemin$ = [a1]
Feuille$ = [a2]
Cible$ = [a3]
For Each S2 In ActiveWorkbook.Sheets
If S2.Name = Cible$ Then
bool = True
Exit For
End If
Next S2
If Not bool Then
MsgBox "La feuille ''" & Cible$ & "'' n'existe pas."
Exit Sub
End If
Set W1 = ActiveWorkbook
Set W2 = GetObject(Chemin$)
Set S2 = W2.Sheets(Feuille$)
S2.Cells.Copy
W1.Activate
W1.Sheets(Cible$).Select
[a1].Select
ActiveSheet.Paste
[a1].Select
Erreur:
Set S2 = Nothing
Set W1 = Nothing
Set W2 = Nothing
End Sub
'__________________________
Sub PMO_CopieAvecMiseEnPage()
Dim Chemin$
Dim Feuille$
Dim Cible$
Dim bool As Boolean
Dim W1 As Workbook
Dim W2 As Workbook
Dim S1 As Worksheet
Dim S2 As Worksheet
On Error GoTo Erreur
Chemin$ = [a1]
Feuille$ = [a2]
Cible$ = [a3]
For Each S2 In ActiveWorkbook.Sheets
If S2.Name = Cible$ Then
bool = True
Exit For
End If
Next S2
If Not bool Then
MsgBox "La feuille ''" & Cible$ & "'' n'existe pas."
Exit Sub
End If
Set W1 = ActiveWorkbook
Set S1 = W1.Sheets(Cible$)
Set W2 = GetObject(Chemin$)
Set S2 = W2.Sheets(Feuille$)
W2.Sheets(Feuille$).Copy After:=W1.Sheets(W1.Sheets.Count)
If S1.UsedRange.Address = "$A$1" And _
S1.[a1] = "" Then
Application.DisplayAlerts = False
S1.Delete
W1.Sheets(W1.Sheets.Count).Name = Cible$
Else
MsgBox "La feuille ''" & Cible$ & "'' contient dèjà des données." & _
vbCrLf & vbCrLf & _
"Pour éviter de les écraser la copie a été effectuée dans la feuille
''" & _
W1.Sheets(W1.Sheets.Count).Name & "''"
End If
Erreur:
Set S1 = Nothing
Set S2 = Nothing
Set W1 = Nothing
Set W2 = Nothing
End Sub
'**************

Cordialement.
--
PMO
Patrick Morange



Bonjour à tous,

J'ai 2 documents excel l'un ouvert (c:test1.xls) , l'autre fermé
(c:temptest2.xls).

Dans le document ouvert, j'ai en feuil1!A1 le chemin complet du document
fermé, type "c:temptest2.xls",
Dans le document ouvert, j'ai en feuil!1A2 le nom de la feuille que je
souhaite copier du document test2.xls, type "feuil1", et finalement
Dans le document ouvert, j'ai en feuil1!A3 le nom de la feuille de test1.xls
vers laquelle je veux copier test2.xls[feuil1].

Si quelqu'un peut m'aider, cela me serait tres utile professionellement mais
c'est au dessus de mes compétences !

Merci d'avance.