FullName contient....

S

Scoy

Guest
Salut le forum,
J'ai un petit prob.
A l'ouverture de mon fichier(woorkbook.open) j'exécute une procédure de sauvegarde qui renome le fichier en "enregistrement x + date du jour"
Mais évidement qu'en j'ouvre le fichier "enregistrement" il recommence la procédure.... je voudrais donc l'annulé en mettant un if... le nom "contient" "enregistrement" ne pas enregistrer.., comment qu'on fait????


Merci!!!!!
 
M

michel

Guest
bonjour Scoy

la macro ci-dessous créée un nouveau classeur "enregistrement " puis supprime la procedure Workbook_Open qu'elle contient


Private Sub Workbook_Open()
Dim Debut As Integer, Lignes As Integer
'enregistrement du nouveau classeur
ThisWorkbook.SaveAs Filename:="C:\excel\enregistrement " & Format(Time, "hh mm ss") & ".xls"
'suppression de la procedure Workbook_Open
With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").codemodule
Debut = .ProcStartLine("Workbook_Open", 0)
Lignes = .ProcCountLines("Workbook_Open", 0)
.DeleteLines Debut, Lignes
End With
'sauvegarde modification
ThisWorkbook.Save
End Sub


j'epere que j'ai bien compris ta demande

bon week end
MichelXld
 
S

Scoy

Guest
Salut Michel et merci,

C'est presque ça!! Le seul hic c'est que je voudrais que le fichier "mère" (celui qui crée le fichier "enregsitrement") garde sa macro dans son WoorkBook_open, que l'éffacement de la macro ne se fasse que dans le fichier "fille". C'est pour celà que j'avait penser a un truc dans le code WoorkBook_Open du fichier mère pour que qd la copie a eu lieu et que j'ouvre le fichier il reconnaisse un fichier copié(ayant donc le nom "enregistrement"+ date) et n'execute pas la macro de copie.....

ouuuffff(j'espère avoir été un peu plus clair...)

PS : le code pour créer/copié un fichier en "enregistrement"+date, je l'ai. Il me faut juste du code pour mettre dans un "if" au début pour que dans la copie, la copie ne se fasse que SI elle ne contient pas dans son nom : "enregsitrement"+date.....

Un grand merci de ta patience!
 
M

michel

Guest
bonjour Scoy

je ne comprends plus ce que tu souhaites faire car pour moi la procedure effectue l'action demandée :

la procédure Workbook_Open est placée dans le classeur "mère"
quand j'ouvres le classeur "mère" , un nouveau classeur "Enregistrement" est créé , sans la macro Workbook_Open
si je réouvres le classeur "mère" , un nouvel enregistrement est crééé
si j'ouvre un classeur "enregistrement il ne se passe rien
mais tu souhaites certainement faire autre chose puisque la macro ne te convient pas

ci joint un fichier que tu peux tester :
un fichier nommé "enregistrement" est sauvegardé dans le meme repertoire que le classeur "Master" lors de l'ouverture du document .


bonne soirée
MichelXld
 

Pièces jointes

  • Master.zip
    6 KB · Affichages: 13
  • Master.zip
    6 KB · Affichages: 23
  • Master.zip
    6 KB · Affichages: 11
S

Scoy

Guest
Ok, ça s'approche.....

Le fichier que j'utilise tout les jours est le fichier "mère"("x"+date), le matin quand on l'ouvre il crée une copie (qui sera juste utilisée comme sauvagarde des "mouvements" de la veille(donc pas besoin qu'a son ouverture une nouvel copie soit crée)) après il se renome ("x"+nouvel date) et on peut commencer a travailler dessus....on le ferme au soir et ainsi de suite.
On peut expliqué ça aussi en disant que le classeur mère est dans un dossier nomé "master" et qu'il sera topujours le seul classeur dans se dossier, il se renome mais reste le seul. Mais a coté de se dossier se trouve un autre nomé "enregistrement" ou il y a toutes les sauvegardes du fichier "mère" jour après jour. Ces classeur ne sont ouvert que de temps en temps pour voir une chose ou l'autre ou être envoyé par mail mais ne sont plus "actif".
Mon but est donc que le code dans WoorkBook_Open du classeur "mère" fasse : 1 une copie du classeur "mère" en classeur "enregistrement"+date et 2 après éfface le code WoorkBook_Open du fichier "enregistrement"+date.

Pour continuer après a se renomé avec la date du jour et puis s'ouvrir pour commencer a travailler.
Et quand je veut ouvrir une des sauvegardes, qu'elles ne s'amusent pas a re-créer une copie d'elles-mêmes...

Voilà, je crois qu'on va y arrivé.

Merciiiii !
 
S

Scoy

Guest
Salut Michel,
Désolé de te faire tourner en bourique, j'espère que ce zip pourra t'aider a m'aider.... Je crois que c'est nettement plus explicit.

Merci de ta patience.
 

Pièces jointes

  • Master2.zip
    20.3 KB · Affichages: 20
M

michel

Guest
bonjour Scoy

rassures toi, tu ne me fais pas tourner en bourrique .
tu peux essayer d'insérer au début de la procédure Workbook_Open

Private Sub Workbook_Open()
If Left(ThisWorkbook.Name, 14) = "Enregistrement" Then Exit Sub


cela te permettra de sortir directement de la macro , si le nom du classeur commence par "Enregistrement"



bon apres midi
MichelXld
 

Discussions similaires

Statistiques des forums

Discussions
312 480
Messages
2 088 757
Membres
103 951
dernier inscrit
Misterb