Copier coller une feuille Excel sur un autre classeur
Bonjour à tous,
J'aurais besoin d'une petite d'aide concernant une macro.
En effet, je possède 2 fichiers Excel, j'aimerais que depuis le premier fichier nommé "test" lorsque j'exécute ma macro il se produise la chose suivante :
1° : Ouverture du second fichier nommé "Reception"
2° : copier dans une nouvelle feuille du classeur "Reception" les données présente dans la feuille du classeur "test"
3° : (-Si possible ne copier que les valeurs présentent dans les cellules et non les formules, par exemple dans le cellule E9 j'aimerais uniquement retrouver la valeur "21000" et non la formule dans mon fichier reception).
4°: nommer cette nouvelle feuille avec le nom de la cellule C8 de mon fichier test.
Pour le moment j'ai cette macro qui me permet uniquement de réaliser le 2° en ouvrant "manuellement le fichier "Reception"
Voici la macro que je possède actuellement :
Sub test()
Sheets("Sheet1").Select
Sheets("Sheet1").Copy Before:=Workbooks("Reception.xlsx").Sheets(1)
Windows("TEST.xlsm").Activate
End Sub
Je vous mets a disposition les deux fichiers avec lequel j'ai réalisé mes essais.
D'avance merci,
Cordialement
Slyss
Bonjour,
Slyss a écrit :...:
1° : Ouverture du second fichier nommé "Reception"
2° : copier dans une nouvelle feuille du classeur "Reception" les données présente dans la feuille du classeur "test"
3° : (-Si possible ne copier que les valeurs présentent dans les cellules et non les formules, par exemple dans le cellule E9 j'aimerais uniquement retrouver la valeur "21000" et non la formule dans mon fichier reception).
4°: nommer cette nouvelle feuille avec le nom de la cellule C8 de mon fichier test.
j'écris cela directement sur le forum il faudra sans doute tester et corriger certaines erreurs ...
'Code placé dans un module de ton fichier test
Sub MiseAJour()
Dim wk As Workbook
On Error Resume Next 'On inhibe la gestion d'erreur pour intercepter les erreurs d'ouverture fichier reception
set wk = Workbooks.open(ThisWorkbook.path & "\Reception.xls")' A toi d'adapter nom du fichier à ouvrir sans oublier son chemin ..la j'ai considéré que les 2 fichiers étaient dans le même répertoire
On Error GoTo 0
If Not wk Is Nothing Then
'On copie la feuille 1 ... du classeur courant ????
ThisWorkbook.Sheets("Feuil1").Copy , wk.Sheets(wk.Sheets.Count) 'Copy aprés dernière feuille /!\ ne pas oublier la virgule
wk.Sheets(wk.Sheets.Count).Range("A1").CurrentRegion.Formula = wk.Sheets(wk.Sheets.Count).Range("A1").CurrentRegion.Value
Else
MsgBox "Erreur ouverture fichier reception"
End If
End SubRe-bonjour,
Merci pour votre réponse rapide !
Cependant la macro n'arrive pas à ouvrir le fichier réception.
Je pense que cela provient de moi (je suis tout de même assez novice avec VBA). D'après votre macro :
Sub MiseAJour()
Dim wk As Workbook
On Error Resume Next 'On inhibe la gestion d'erreur pour intercepter les erreurs d'ouverture fichier reception
set wk = Workbooks.open(ThisWorkbook.path & "\Reception.xls")' A toi d'adapter nom du fichier à ouvrir sans oublier son chemin ..la j'ai considéré que les 2 fichiers étaient dans le même répertoire
Si j'ai bien compris je dois uniquement ajouter le chemin de mon fichier Reception avant le \Reception.xls ?
D'avance merci,
Cordialement,
Slyss
oui .. vérifie le chemin si ce n'est pas le même que ton second fichier... fait attention aussi j'ai mis .xls .. au lieu de .xlsx
Bonjour,
Super la macro marche ! Merci ! J'ai enlevé la partie en orange et rajouté le chemin d'accès avec xlsx à la fin. (Voir exemple ci dessous)
Sub MiseAJour()
Dim wk As Workbook
On Error Resume Next 'On inhibe la gestion d'erreur pour intercepter les erreurs d'ouverture fichier reception
set wk = Workbooks.open(ThisWorkbook.path & "\Reception.xlsx") 'A toi d'adapter nom du fichier à ouvrir sans oublier son chemin ..la j'ai considéré que les 2 fichiers étaient dans le même répertoire
Serait-il possible d'ajouter quelques lignes à cette macro afin qu'elle puisse répondre à mes points 3° et 4° ? A savoir :
3° : Si possible ne copier que les valeurs présentent dans les cellules et non les formules, par exemple dans le cellule E9 j'aimerais uniquement retrouver la valeur "21000" et non la formule dans mon fichier reception.
4°: Nommer cette nouvelle feuille avec le nom de la cellule C8 de mon fichier test.
D'avance merci,
Cordialement
Slyss
Bonjour,
pour le point 3°) .. le reste de mon code ne fonctionne-t'il pas ?
Re-bonjour,
Elle marche mais pas dans tout les cas, si je veux prendre un ensemble de cellules elle ne marche pas toujours. Une explication ?
Concernant le point n°4 rien ne se passe pouvez vous y faire quelque chose s'il vous plait ?
D'avance merci,
Cordialement,
Slyss
Bonsoir,
Un point après l'autre...
Pour ce point 3 je comprends pas..que change tu au code?
Bonjour,
D'après votre macro,
'Code placé dans un module de ton fichier test
Sub MiseAJour()
Dim wk As Workbook
On Error Resume Next 'On inhibe la gestion d'erreur pour intercepter les erreurs d'ouverture fichier reception
set wk = Workbooks.open(ThisWorkbook.path & "\Reception.xls")' A toi d'adapter nom du fichier à ouvrir sans oublier son chemin ..la j'ai considéré que les 2 fichiers étaient dans le même répertoire
On Error GoTo 0
If Not wk Is Nothing Then
'On copie la feuille 1 ... du classeur courant ????
ThisWorkbook.Sheets("Feuil1").Copy , wk.Sheets(wk.Sheets.Count) 'Copy aprés dernière feuille /!\ ne pas oublier la virgule
wk.Sheets(wk.Sheets.Count).Range("A1").CurrentRegion.Formula = wk.Sheets(wk.Sheets.Count).Range("A1").CurrentRegion.Value
Else
MsgBox "Erreur ouverture fichier reception"
End If
End Sub
Je modifie les coordonnées de sélection (voir couleur rouge), et donc si je veux une plage de cellule je modifie en mettant par exemple ("A1:F15") mais bizarrement cela ne prend en compte que la première partie c'est à dire le A1 ou je retrouve uniquement les valeurs et non les formules dans mon second fichier au niveau de cette cellule et uniquement elle.
D'avance merci,
Cordialement
Slyss
Bonjour,
le truc c'est qu'il te faut comprendre as quoi sert "CurrentRegion" ... pour cela place le curseur en A1 puis actionne les touches CTRL et *
la zone sélectionné correspond alors à la Zone traitée...
si tu veux définir "En dur" la Zone à traiter remplace les "A1" par tes adresses mais n'oublie pas de supprimer .CurrentRegion
Re-bonjour,
Ca marche nickel ! Ca venait donc de la ! Merci pour cette information !
Il ne reste à présent plus que le point n°4 et ce sera parfait. Comment intégrer cela dans votre macro ?
Merci en tout cas pour le temps que vous me consacrez c'est gentil de votre part.
Cordialement,
Slyss
4°: nommer cette nouvelle feuille avec le nom de la cellule C8 de mon fichier test.
on vas dire qu'il s'agit de la cellule C8 de la feuille "Feuil1" du classeur exécutant la macro???
'...
ThisWorkbook.Sheets("Feuil1").Copy , wk.Sheets(wk.Sheets.Count) 'Copy aprés dernière feuille /!\ ne pas oublier la virgule
wk.Sheets(wk.Sheets.Count).Range("A1").CurrentRegion.Formula = wk.Sheets(wk.Sheets.Count).Range("A1").CurrentRegion.Value
' Tu rajoute :
wk.Sheets(wk.Sheets.Count).name = ThisWorkbook.Sheets("Feuil1").Range("C8")
'...
ElseRe-bonjour,
Ca marche impeccable !
Il ne me reste plus qu'a te remercier pour tout le temps que tu m'a consacré et ton aide précieuse !
Cordialement
Slyss