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"

: 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 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.

187test.xlsm (13.70 Ko)
153reception.xlsx (7.31 Ko)

D'avance merci,

Cordialement

Slyss

Bonjour,

Slyss a écrit :

...:

1° : Ouverture du second fichier nommé "Reception"

: 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 Sub

Re-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")
'... 

Else

Re-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

Rechercher des sujets similaires à "copier coller feuille classeur"