Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

8 réponses
Avatar
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

8 réponses

Avatar
isabelle
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


Avatar
LSteph
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 wrote:
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


Avatar
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


Avatar
defluc
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 ?
Avatar
LSteph
...

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 ?


Avatar
MichDenis
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" a écrit dans le message de groupe de discussion :

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


Avatar
FS
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" a écrit dans le message de groupe de discussion :

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


Avatar
MichDenis
À 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.