Pas d'incrémentation du nom de classeur à l'ouverture d'un modèle

Le
defluc
Hello,

J'ouvre un nouveau classeur "DAPU.xlt" à partir d'une application externe.

A l'ouverture, le classeur se nomme "DAPU1".
Je le sauve sous ce nom.

A l'ouverture du même modèle, je m'attend à ce que le nouveau classeur
s'appelle "DAPU2" et non plus "DAPU1".
Or, ce n'est pas le cas.

Est-il possible que le nom d'un classeur soit incrémenté à chaque
ouverture du modèle sachent que la propriété Workbook.Name est en
lecture seule.

Merci d'avance
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
isabelle
Le #20051561
bonjour,

est ce que tu l'ouvre avec :

Workbooks.Add Template:

isabelle

defluc a écrit :
Hello,

J'ouvre un nouveau classeur "DAPU.xlt" à partir d'une application
externe.

A l'ouverture, le classeur se nomme "DAPU1".
Je le sauve sous ce nom.

A l'ouverture du même modèle, je m'attend à ce que le nouveau classeur
s'appelle "DAPU2" et non plus "DAPU1".
Or, ce n'est pas le cas.

Est-il possible que le nom d'un classeur soit incrémenté à chaque
ouverture du modèle sachent que la propriété Workbook.Name est en
lecture seule.

Merci d'avance


LSteph
Le #20051661
Bonjour,


Plus de dapu1 à partir du moment où tu l'as enregistré sous dapu1.xls
donc lorsque tu rappelle ton dapu.xlt pour un nouveau classeur
le premier classeur est nommé dapu1
essaye en ne l'enregistrant pas ils s'appelleront dapu1 ..dapu2 ...etc
puis ensuite tu peux les enregistrer sous dapu1.xls dapu2.xls...etc

Sinon, tu auras le même pb s i tu ferme excel et que tu réitère ce
sera à nouveau dapu1 ...

--
lSteph


On 3 sep, 14:09, defluc
Hello,

J'ouvre un nouveau classeur "DAPU.xlt" à partir d'une application exter ne.

A l'ouverture, le classeur se nomme "DAPU1".
Je le sauve sous ce nom.

A l'ouverture du même modèle, je m'attend à ce que le nouveau class eur
s'appelle "DAPU2" et non plus "DAPU1".
Or, ce n'est pas le cas.

Est-il possible que le nom d'un classeur soit incrémenté à chaque
ouverture du modèle sachent que la propriété Workbook.Name est en
lecture seule.

Merci d'avance


FS
Le #20052221
Bonjour,

Il existe une possibilité d'obtenir ce que tu souhaites en bidouillant
le modèle.
Ton modèle doit avoir une feuille supplémentaire (qui sera détruite à
l'enregistrement) pour tenir le compte des classeurs créés à partir de lui.
Et tu ajoutes le code ci-dessous dans le module ThisWorkbook du modèle
(la feuille supplémentaire s'appelle "Num") :

'================== Private Sub Workbook_Open()
Dim x As Long, S, Wbk
If ThisWorkbook.Path = "" Then
x = Sheets("Num").Range("A1").Value
Sheets("Num").Range("A1").Value = x + 1
ActiveWindow.Caption = "DAPU" & x + 1
With ThisWorkbook
Application.DisplayAlerts = False
.SaveCopyAs Application.TemplatesPath & "DAPU.xlt"
Application.DisplayAlerts = True
.SaveAs "DAPU" & x + 1 & ".xls", xlWorkbook
ActiveWindow.Caption = .Name
Application.DisplayAlerts = False
.Sheets("Num").Delete
Application.DisplayAlerts = True
.Save
End With
End If
End Sub
'==================
Note que j'ai retenu comme chemin d'enregistrement du modèle le dossier
par défaut que tu obtiens en exécutant cette ligne de code

MsgBox Application.TemplatesPath

et que j'ai envoyé les enregistrements des classeurs (DAPU1.xls,
DAPU2.xls, etc) dans le dossier par défaut d'Excel, obtenu par

MsgBox Application.DefaultFilePath

Tu peux adapter si besoin.
Enfin, j'ai testé avec Excel 2003 et 2007 sur WinXP et je peux mettre
sur cjoint un modèle exemple si besoin.

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

defluc a écrit :
Hello,

J'ouvre un nouveau classeur "DAPU.xlt" à partir d'une application externe.

A l'ouverture, le classeur se nomme "DAPU1".
Je le sauve sous ce nom.

A l'ouverture du même modèle, je m'attend à ce que le nouveau classeur
s'appelle "DAPU2" et non plus "DAPU1".
Or, ce n'est pas le cas.

Est-il possible que le nom d'un classeur soit incrémenté à chaque
ouverture du modèle sachent que la propriété Workbook.Name est en
lecture seule.

Merci d'avance


defluc
Le #20052551
Isabelle,
j'ouvre en Delphi avec l'instruction suivante :

xlApp.Workbooks.Open(CurDir + 'DAPU.xlt', EmptyParam, EmptyParam,
EmptyParam, LicenseForm.XlPassw, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam,EmptyParam);

LSteph,

essaye en ne l'enregistrant pas ils s'appelleront dapu1..dapu2..

Si, je ne l'enregistre pas, il sera perdu.

N'est-il pas possible de renommer le classeur ouvert par le modèle, en
incrémentant son nom après un test vérifiant si le nom existe déjà dans
le dossier de sauvegarde ?
LSteph
Le #20052611
...

ActiveWorkbook.SaveAs Format(Now,"yyyymmddhhnnss") & "dapu.xls"

'lSteph



N'est-il pas possible de renommer le classeur ouvert par le modèle, en
incrémentant son nom après un test vérifiant si le nom existe déj à dans
le dossier de sauvegarde ?


MichDenis
Le #20067731
Bonjour Frédéric,

Si j'étais pointilleux... le fait d'ouvrir un classeur à partir du
modèle, ne signifie pas nécessairement que ce classeur sera
sauvegardé. S'il ne l'était pas, comment ta procédure permet
de reprendre le numéro du fichier qui a été bousillé ?
T'es chanceux, je ne suis pas pointilleux !!!
;-))



"FS"
Bonjour,

Il existe une possibilité d'obtenir ce que tu souhaites en bidouillant
le modèle.
Ton modèle doit avoir une feuille supplémentaire (qui sera détruite à
l'enregistrement) pour tenir le compte des classeurs créés à partir de lui.
Et tu ajoutes le code ci-dessous dans le module ThisWorkbook du modèle
(la feuille supplémentaire s'appelle "Num") :

'================== Private Sub Workbook_Open()
Dim x As Long, S, Wbk
If ThisWorkbook.Path = "" Then
x = Sheets("Num").Range("A1").Value
Sheets("Num").Range("A1").Value = x + 1
ActiveWindow.Caption = "DAPU" & x + 1
With ThisWorkbook
Application.DisplayAlerts = False
.SaveCopyAs Application.TemplatesPath & "DAPU.xlt"
Application.DisplayAlerts = True
.SaveAs "DAPU" & x + 1 & ".xls", xlWorkbook
ActiveWindow.Caption = .Name
Application.DisplayAlerts = False
.Sheets("Num").Delete
Application.DisplayAlerts = True
.Save
End With
End If
End Sub
'==================
Note que j'ai retenu comme chemin d'enregistrement du modèle le dossier
par défaut que tu obtiens en exécutant cette ligne de code

MsgBox Application.TemplatesPath

et que j'ai envoyé les enregistrements des classeurs (DAPU1.xls,
DAPU2.xls, etc) dans le dossier par défaut d'Excel, obtenu par

MsgBox Application.DefaultFilePath

Tu peux adapter si besoin.
Enfin, j'ai testé avec Excel 2003 et 2007 sur WinXP et je peux mettre
sur cjoint un modèle exemple si besoin.

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

defluc a écrit :
Hello,

J'ouvre un nouveau classeur "DAPU.xlt" à partir d'une application externe.

A l'ouverture, le classeur se nomme "DAPU1".
Je le sauve sous ce nom.

A l'ouverture du même modèle, je m'attend à ce que le nouveau classeur
s'appelle "DAPU2" et non plus "DAPU1".
Or, ce n'est pas le cas.

Est-il possible que le nom d'un classeur soit incrémenté à chaque
ouverture du modèle sachent que la propriété Workbook.Name est en
lecture seule.

Merci d'avance


FS
Le #20068111
Bonjour Denis,

Comme c'est un événement plutôt difficile à prévoir, il me paraît aussi
difficile à programmer. Je dirais qu'il est toujours possible de
corriger le modèle à la main en l'ouvrant par FichierOuvrir (et non
FichierNouveau) puis en modifiant la cellule A1 de la feuille 'Num'.

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

MichDenis a écrit :
Bonjour Frédéric,

Si j'étais pointilleux... le fait d'ouvrir un classeur à partir du
modèle, ne signifie pas nécessairement que ce classeur sera
sauvegardé. S'il ne l'était pas, comment ta procédure permet
de reprendre le numéro du fichier qui a été bousillé ?
T'es chanceux, je ne suis pas pointilleux !!!
;-))



"FS"
Bonjour,

Il existe une possibilité d'obtenir ce que tu souhaites en bidouillant
le modèle.
Ton modèle doit avoir une feuille supplémentaire (qui sera détruite à
l'enregistrement) pour tenir le compte des classeurs créés à partir de lui.
Et tu ajoutes le code ci-dessous dans le module ThisWorkbook du modèle
(la feuille supplémentaire s'appelle "Num") :

'================== > Private Sub Workbook_Open()
Dim x As Long, S, Wbk
If ThisWorkbook.Path = "" Then
x = Sheets("Num").Range("A1").Value
Sheets("Num").Range("A1").Value = x + 1
ActiveWindow.Caption = "DAPU" & x + 1
With ThisWorkbook
Application.DisplayAlerts = False
.SaveCopyAs Application.TemplatesPath & "DAPU.xlt"
Application.DisplayAlerts = True
.SaveAs "DAPU" & x + 1 & ".xls", xlWorkbook
ActiveWindow.Caption = .Name
Application.DisplayAlerts = False
.Sheets("Num").Delete
Application.DisplayAlerts = True
.Save
End With
End If
End Sub
'================== >
Note que j'ai retenu comme chemin d'enregistrement du modèle le dossier
par défaut que tu obtiens en exécutant cette ligne de code

MsgBox Application.TemplatesPath

et que j'ai envoyé les enregistrements des classeurs (DAPU1.xls,
DAPU2.xls, etc) dans le dossier par défaut d'Excel, obtenu par

MsgBox Application.DefaultFilePath

Tu peux adapter si besoin.
Enfin, j'ai testé avec Excel 2003 et 2007 sur WinXP et je peux mettre
sur cjoint un modèle exemple si besoin.

FS


MichDenis
Le #20069991
À la première lecture du demandeur, c'est ce sur quoi
j'avais accroché quant au comment faire sans développer
une usine à gaz !

Merci.
Publicité
Poster une réponse
Anonyme