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 !
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 '**************
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.
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
'**************
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 !
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 '**************
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 !