cop./enreg.feuil avec chem indiqué par utilisateur

A

Aude

Guest
Bonjour à tout le forum, et félicitaions pour ce site, il est vraiment incroyable.
Voilà, j'espère que vous pourrez m'aider.J'ai regardé dans les différentes discussions du forum mais je n'ai pas trouvé ce que je souhaite ( les solutions proposées s'en rapprochant, mais étant soit trop complexes ou que je n'arrive pas a appliquer), je suis débutante et j'ai du mal ( pour l'instant) a decripter les codes. C'est pourquoi je me permet de vous exposer directement mon pb avec un fichier joint explicatif.

Voilà, je souhaiterais, qu'une macro copie la feuille 'Pointage en cours', et la renomme en feuille 'Dernier pointage historisé' ( sans recopier le bouton de macro), qu'également la feuille pointage en cours ait une zône de valeurs effacée (indiqué dans le fichier joint), et que de + cette feuille copiée aille s'enregistrer dans un classeur dont le nom et le chemin est indiqué dans la feuille 'Param', par l'utilisateur, mais sous le nom de la valeur de la cellule C4 de cette feuille copiée.

J'ai essayé d'être la + précise possible, afin que vous puissiez trouver une solution à mon pb.

Merci d'avance pour votre aide

Aude



[file name=Exemple_20051030165058.zip size=3989]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Exemple_20051030165058.zip[/file]
 

Pièces jointes

  • Exemple_20051030165058.zip
    3.9 KB · Affichages: 7

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Aude, bonsoir le forum,

Je te propose la macro suivante qui devrait te satisfaire :
Sub Macro1()
Const Nf As String = 'Dernier pointage historisé' 'définit la constante Nf
Const PC As String = 'Pointage en cours' 'définit la constante PC
Dim chemO As String 'déclare la variable ChemO
Dim chemC As String 'déclare la variable chemC
Dim ws As Worksheet 'déclare la variable ws
Dim nom As String 'déclare la variable nom

chemO = ThisWorkbook.FullName 'définit la variable chemO
chemC = Sheets('Param').Range('C12').Value 'définit la variable chemC
nom = Sheets('param').Range('G10').Value & '.xls' 'définit la variable nom

Application.DisplayAlerts = False 'empêche les messages d'alerte d'excel
Sheets(Nf).Delete 'supprime la feuille 'Dernier pointage historisé'
Application.DisplayAlerts = True 'repermet les message d'alerte d'excel
'copie la feuille 'Pointage en cours'
Sheets(PC).Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Nf 'renomme la copie en 'Dernier pointage historisé'
'supprime le bouton
ActiveSheet.Shapes('Button 1').Select
Selection.Delete
'remplace les formules par les résultats
ActiveSheet.Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range('A1').Select
'efface les données de l'onglets 'Pointage en Cours'
Sheets(PC).Range('C4,C9:G11').ClearContents
ThisWorkbook.Save 'sauve le classeur
ThisWorkbook.SaveAs (chemC) 'crée la copie
Application.DisplayAlerts = False 'empêche les messages d'alerte d'excel
'supprime les onglets en trop de la copie
For Each ws In ActiveWorkbook.Sheets
If ws.Name <> Nf Then ws.Delete
Next ws
Application.DisplayAlerts = True 'repermet les message d'alerte d'excel
ThisWorkbook.Save 'sauve la copie
Application.Workbooks.Open (chemO) 'ouvre l'original
Sheets(PC).Select
Application.Workbooks(nom).Close 'ferme la copie

End Sub

[file name=Exemple2_20051030211924.zip size=13371]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Exemple2_20051030211924.zip[/file]
 

Pièces jointes

  • Exemple2_20051030211924.zip
    13.1 KB · Affichages: 10
A

Aude

Guest
Merci beaucoup de t'interresser a mon pb.

Vous êtes de véritables magiciens sur ce forum!!!!

J'ai essayé mais cela ne donne pas exactement ce que je souhaite, là la macro crée le fichier historique et donc écrase le fichier historique précédent, ce que je souhaiterais c'est que la macro aille intégrer la feuille dans le classeur historique déjà existant. Et que cette feuille intégrée dans le classeur historique prenne le nom de sa cellule C4, c'est à dire pour le fichier que je t'ai joint le nom de Juillet. Le but étant d'obtenir dans ce fichier historique les feuilles: Juin; Juillet ;Aout ect...

Est ce faisable? Je te remercie encore pour ta disponibilité!!

Par avance Merci

Aude
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Aude, bonsoir le forum,

Ok Aude je n'avais pas compris cela. Mais alors dans ce cas, pourquoi le chemin d'accès d'historique.xls est-il variable ? Ça na pas de sens. Il devrait être fixe pour qu'on puisse le trouver à coup sûr. J'attends ta réponse pour pouvoir te proposer une solution.
 

SergiO

XLDnaute Accro
Re:cop./enreg.feuil avec chem indiqué par utilisat

Bonsoir Aude, Robert,

Je vais paraître rétro mais voici une solution avec Macro MS Excel 4.0

Le VBA, je m'y mets depuis que j'ai découvert ce super site.

@+

[file name=Exemple_20051030234341.zip size=5019]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Exemple_20051030234341.zip[/file]
 

Pièces jointes

  • Exemple_20051030234341.zip
    4.9 KB · Affichages: 12
A

Aude

Guest
Re:cop./enreg.feuil avec chem indiqué par utilisat

Merci Sergio,
C'est très sympa de t'occuper de mon pb comme robert.
Mais comme lui, ta solution n'est pas vraimment celle que je recherche. J'aimerais que la feuille 'Pointage en cours' effectivement se copie pour devenir 'dernier pointage historisé' dans le classeur 'Exemple', mais qu'également cette copie s'intègre dans le classeur 'Historique' déjà existant, afin que ce classeur Historique au fur et à mesure contienne tous les mois de l'année avec les onglets Janvier,fevrier, mars ect.. Là Sergio, ta solution créer un classeur , alors que ce que je cherche est qu'il intègre dans le classeur historique la feuille copiée en la renommant par le mois qu'elle concerne (cellule C4).

Cela est il possible???

Pouvez vous m'aider?

Par avance encore merci à vous 2 et à tout le forum pour votre aide, j'espère que vous trouverez la solution.

Aude
 

SergiO

XLDnaute Accro
Re:cop./enreg.feuil avec chem indiqué par utilisat

Voici ma solution en espérant avoir bien compris ce que tu voulais
@+ [file name=Exemple_20051031004637.zip size=4987]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Exemple_20051031004637.zip[/file]
 

Pièces jointes

  • Exemple_20051031004637.zip
    4.9 KB · Affichages: 11
A

Aude

Guest
Re:cop./enreg.feuil avec chem indiqué par utilisat

Merci, beaucoup Sergio et Robert pour votre aide.
Sergio, c'est exactement ce que je recherchait.

J'ai encore une petite question,quel est l'intérêt de mettre la macro dans un onglet. Quelle différence avec le fait de mettre cette macro, dans la feuille de VBA ( Alt + F11)?

Pouvez vous m'indiquer si en copiant cette macro de l'onglet 'macro', et en la collant dans une feuille VBA, cela fonctionnerait?
Si non, quel est le scrpt VBA, pour que cela fonctionne de la même manière?


Robert ou qqn du Forum connaitrait il la solution?

En tout cas Sergio, je te remercie encore cela réponds dans un 1er temps a mon besoin. Robert merci encore de m'avoir proposé ta 1ere solution. Peut être Robert connais tu le script VBA de la macro de Sergio incrit dans l'onglet 'macro' du classeur qu'il a joint?

Merci encore et Salutations

Aude
 

Robert

XLDnaute Barbatruc
Repose en paix
Re:cop./enreg.feuil avec chem indiqué par utilisat

Bonsoir Aude, Sergio, bonsoir le forum,

Attention ! il faut qu'un classeur Historique.xls existe dans le chemin pr'sdéfinit, sinon ça bugue...

La macro modifiée :


Sub Macro1()
Dim Ori As Workbook 'déclare la variable Ori
Dim His As Workbook 'déclare la variable His
Const DPH As String = 'Dernier pointage historisé' 'définit la constante DPH
Const PeC As String = 'Pointage en cours' 'définit la constante PeC

Dim chemOri As String 'déclare la variable ChemOri
Dim chemHis As String 'déclare la variable chemHis
Dim ws As Worksheet 'déclare la variable ws

Set Ori = ThisWorkbook 'définit la variable Ori
chemOri = Ori.FullName 'définit la variable chemOri
chemHis = Sheets('Param').Range('C12').Value 'définit la variable chemC

With Ori
Application.DisplayAlerts = False 'empêche les messages d'alerte d'excel
.Sheets(DPH).Delete 'supprime la feuille 'Dernier pointage historisé'
Application.DisplayAlerts = True 'repermet les message d'alerte d'excel
'copie la feuille 'Pointage en cours'
.Sheets(PeC).Copy after:=Sheets(Sheets.Count)
.ActiveSheet.Name = DPH 'renomme la copie en 'Dernier pointage historisé'
'supprime le bouton
.ActiveSheet.Shapes('Button 1').Select
Selection.Delete
'remplace les formules par les résultats
.ActiveSheet.Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range('A1').Select
'efface les données de l'onglets 'Pointage en Cours'
.Sheets(PeC).Range('C4,C9:G11').ClearContents
.Save 'sauve le classeur
End With

Application.Workbooks.Open (chemHis) 'ouvre le classeur 'Historique.xls'
Set His = ActiveWorkbook 'définit la variable his
'copie l'onglet 'Dernier pointage historisé' dans le classeur 'Historique.xls'
Ori.Sheets(DPH).Copy after:=His.Sheets(Sheets.Count)
On Error Resume Next 'évite le bug si C4 est vide
ActiveSheet.Name = Range('C4').Value 'donne le nom à l'onglet en fonction de la cellule C4
His.Save 'sauve 'Historique.xls'
His.Close 'ferme 'Historique.xls'
Sheets(PeC).Select 'sélectionne l'onglet 'pointage en cours'
End Sub
[file name=Exemple3_20051031015108.zip size=14982]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Exemple3_20051031015108.zip[/file]

Édition

Aude on s'est croisé... Malheureusement je n'ai jamais utilisé le système de Sergio et je ne le connais absolument pas. Je ne pourrai donc pas répondre à tes questions. Mais je t'ai donné une solution VBA qui semble fiable hormis le fait qu'il faille que Historique.xls existe au préalable


Message édité par: Robert, à: 31/10/2005 01:55
 

Pièces jointes

  • Exemple3_20051031015108.zip
    14.6 KB · Affichages: 14

Statistiques des forums

Discussions
312 492
Messages
2 088 893
Membres
103 982
dernier inscrit
krakencolas