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

Excel 97, execution d'une macro a l'ouverture d'un nouveau document issus d'un modele (xlt) et uniquement a ce moment.

8 réponses
Avatar
David Q
Bonjour.


J'ai un Modele excel 97.
Lorsque je fais Fichier/Nouveau/Modele/Facture.xlt, le modele s'ouvre en
document facture.Facture1.xls (par exemple)
A ce moment la, il va copier une partie d'une nomenclature (pas enorme),
dans une feuille du classeur.Grace a la Procedure OPEN
Cette nomenclature est regulierement mise a jour et contient tarif et marge.

Une fois ce document enregistré (Fac2003-10-06.xls) , je ne veux plus que la
fonction OPEN s'execute a l'ouverture de ce classeur.
En effet , si elle s'execute a chaque ouverture , les marges ayant bougées ,
mes factures se reactualisent et ne sont plus celles envoyées aux clients.

Y a t il un moyen d'eviter cela?

Pour l'instant j'ai bloqué le truc en verifiant le debut du nom, si c'est
"Facture" c'est un issu du modele et j'actualise, sinon je ne le fais pas.
Mais le jour ou la secretaire renomme le modele ou sauve sous le nom
FactureTOTO, ca marche plus :(

Y a t il une procedure equivalente a OPEN, pour la creation d'un classeur
issu d'un modele, un ON CREATE par exemple :)

J'espere avoir ete le plus clair possible.

Merci de votre aide.


David .Q

8 réponses

Avatar
John Fuss
Slt,

pour ma part j'aurai fait un truc du genre :

créé une feuille que j'aurai rendu invisible dans laquel j'aurai stocké une
valeur genre "DEJA FAIT" que tu tests avant de lancer ta fonction Open.

Voilà

John

"David Q" <Vortex30-remplacer-Wanadoo.fr> a écrit dans le message de
news:3f82ae0d$0$27604$
Bonjour.


J'ai un Modele excel 97.
Lorsque je fais Fichier/Nouveau/Modele/Facture.xlt, le modele s'ouvre en
document facture.Facture1.xls (par exemple)
A ce moment la, il va copier une partie d'une nomenclature (pas enorme),
dans une feuille du classeur.Grace a la Procedure OPEN
Cette nomenclature est regulierement mise a jour et contient tarif et
marge.


Une fois ce document enregistré (Fac2003-10-06.xls) , je ne veux plus que
la

fonction OPEN s'execute a l'ouverture de ce classeur.
En effet , si elle s'execute a chaque ouverture , les marges ayant bougées
,

mes factures se reactualisent et ne sont plus celles envoyées aux clients.

Y a t il un moyen d'eviter cela?

Pour l'instant j'ai bloqué le truc en verifiant le debut du nom, si c'est
"Facture" c'est un issu du modele et j'actualise, sinon je ne le fais pas.
Mais le jour ou la secretaire renomme le modele ou sauve sous le nom
FactureTOTO, ca marche plus :(

Y a t il une procedure equivalente a OPEN, pour la creation d'un classeur
issu d'un modele, un ON CREATE par exemple :)

J'espere avoir ete le plus clair possible.

Merci de votre aide.


David .Q






Avatar
David Q
Merci
C'est vrai que ca marche mieux que mon astuce.
Mais cela reste "une astuce".

Y a rien de plus "conventionnel" ?

merci.

"John Fuss" a écrit dans le message de news:
blubcu$44j$
Slt,

pour ma part j'aurai fait un truc du genre :

créé une feuille que j'aurai rendu invisible dans laquel j'aurai stocké
une

valeur genre "DEJA FAIT" que tu tests avant de lancer ta fonction Open.

Voilà

John

"David Q" <Vortex30-remplacer-Wanadoo.fr> a écrit dans le message de
news:3f82ae0d$0$27604$
Bonjour.


J'ai un Modele excel 97.
Lorsque je fais Fichier/Nouveau/Modele/Facture.xlt, le modele s'ouvre en
document facture.Facture1.xls (par exemple)
A ce moment la, il va copier une partie d'une nomenclature (pas enorme),
dans une feuille du classeur.Grace a la Procedure OPEN
Cette nomenclature est regulierement mise a jour et contient tarif et
marge.


Une fois ce document enregistré (Fac2003-10-06.xls) , je ne veux plus
que


la
fonction OPEN s'execute a l'ouverture de ce classeur.
En effet , si elle s'execute a chaque ouverture , les marges ayant
bougées


,
mes factures se reactualisent et ne sont plus celles envoyées aux
clients.



Y a t il un moyen d'eviter cela?

Pour l'instant j'ai bloqué le truc en verifiant le debut du nom, si
c'est


"Facture" c'est un issu du modele et j'actualise, sinon je ne le fais
pas.


Mais le jour ou la secretaire renomme le modele ou sauve sous le nom
FactureTOTO, ca marche plus :(

Y a t il une procedure equivalente a OPEN, pour la creation d'un
classeur


issu d'un modele, un ON CREATE par exemple :)

J'espere avoir ete le plus clair possible.

Merci de votre aide.


David .Q










Avatar
John Fuss
Se baser sur la date de création ou d'enregistrement ? Avec les objets FSO
(FileSystem Object).

Pour s'en servir : Dans les références de ton projet tu ajoutes Microsoft
Scripting Runtime, après ça tu peux déclarer une variable FSO comme suit :

Dim fso as new FileSystemObject

et après tu as tout ce que tu veux genre :

MsgBox fso.GetFile(thisworkbook.path & "" &
ThisWorkbook.Name).GetLastModifiedDate

ou un truc dans le genre....

Vérifie la syntaxe

John


"David Q" <Vortex30-remplacer-Wanadoo.fr> a écrit dans le message de
news:3f82b265$0$27591$
Merci
C'est vrai que ca marche mieux que mon astuce.
Mais cela reste "une astuce".

Y a rien de plus "conventionnel" ?

merci.

"John Fuss" a écrit dans le message de news:
blubcu$44j$
Slt,

pour ma part j'aurai fait un truc du genre :

créé une feuille que j'aurai rendu invisible dans laquel j'aurai stocké
une

valeur genre "DEJA FAIT" que tu tests avant de lancer ta fonction Open.

Voilà

John

"David Q" <Vortex30-remplacer-Wanadoo.fr> a écrit dans le message de
news:3f82ae0d$0$27604$
Bonjour.


J'ai un Modele excel 97.
Lorsque je fais Fichier/Nouveau/Modele/Facture.xlt, le modele s'ouvre
en



document facture.Facture1.xls (par exemple)
A ce moment la, il va copier une partie d'une nomenclature (pas
enorme),



dans une feuille du classeur.Grace a la Procedure OPEN
Cette nomenclature est regulierement mise a jour et contient tarif et
marge.


Une fois ce document enregistré (Fac2003-10-06.xls) , je ne veux plus
que


la
fonction OPEN s'execute a l'ouverture de ce classeur.
En effet , si elle s'execute a chaque ouverture , les marges ayant
bougées


,
mes factures se reactualisent et ne sont plus celles envoyées aux
clients.



Y a t il un moyen d'eviter cela?

Pour l'instant j'ai bloqué le truc en verifiant le debut du nom, si
c'est


"Facture" c'est un issu du modele et j'actualise, sinon je ne le fais
pas.


Mais le jour ou la secretaire renomme le modele ou sauve sous le nom
FactureTOTO, ca marche plus :(

Y a t il une procedure equivalente a OPEN, pour la creation d'un
classeur


issu d'un modele, un ON CREATE par exemple :)

J'espere avoir ete le plus clair possible.

Merci de votre aide.


David .Q














Avatar
David Q
Bonne idée. :)
merci.

"John Fuss" a écrit dans le message de news:
bludfv$5nj$
Se baser sur la date de création ou d'enregistrement ? Avec les objets FSO
(FileSystem Object).

Pour s'en servir : Dans les références de ton projet tu ajoutes Microsoft
Scripting Runtime, après ça tu peux déclarer une variable FSO comme suit :

Dim fso as new FileSystemObject

et après tu as tout ce que tu veux genre :

MsgBox fso.GetFile(thisworkbook.path & "" &
ThisWorkbook.Name).GetLastModifiedDate

ou un truc dans le genre....

Vérifie la syntaxe

John


"David Q" <Vortex30-remplacer-Wanadoo.fr> a écrit dans le message de
news:3f82b265$0$27591$
Merci
C'est vrai que ca marche mieux que mon astuce.
Mais cela reste "une astuce".

Y a rien de plus "conventionnel" ?

merci.

"John Fuss" a écrit dans le message de news:
blubcu$44j$
Slt,

pour ma part j'aurai fait un truc du genre :

créé une feuille que j'aurai rendu invisible dans laquel j'aurai
stocké



une
valeur genre "DEJA FAIT" que tu tests avant de lancer ta fonction
Open.




Voilà

John

"David Q" <Vortex30-remplacer-Wanadoo.fr> a écrit dans le message de
news:3f82ae0d$0$27604$
Bonjour.


J'ai un Modele excel 97.
Lorsque je fais Fichier/Nouveau/Modele/Facture.xlt, le modele
s'ouvre




en
document facture.Facture1.xls (par exemple)
A ce moment la, il va copier une partie d'une nomenclature (pas
enorme),



dans une feuille du classeur.Grace a la Procedure OPEN
Cette nomenclature est regulierement mise a jour et contient tarif
et




marge.

Une fois ce document enregistré (Fac2003-10-06.xls) , je ne veux
plus




que
la
fonction OPEN s'execute a l'ouverture de ce classeur.
En effet , si elle s'execute a chaque ouverture , les marges ayant
bougées


,
mes factures se reactualisent et ne sont plus celles envoyées aux
clients.



Y a t il un moyen d'eviter cela?

Pour l'instant j'ai bloqué le truc en verifiant le debut du nom, si
c'est


"Facture" c'est un issu du modele et j'actualise, sinon je ne le
fais




pas.
Mais le jour ou la secretaire renomme le modele ou sauve sous le nom
FactureTOTO, ca marche plus :(

Y a t il une procedure equivalente a OPEN, pour la creation d'un
classeur


issu d'un modele, un ON CREATE par exemple :)

J'espere avoir ete le plus clair possible.

Merci de votre aide.


David .Q


















Avatar
Frédéric Sigonneau
Bonjour,

La particularité d'un classeur créé à partir d'un modèle est qu'au moment de sa
création il a un nom par défaut (Facture1 dans ton exemple) mais pas de chemin.
Il aura un dès qu'il aura été enregistré et seulement à ce moment là.
Dans l'événement Workbook_Open de ton modèle tu peux donc, avant d'exécuter le
traitement souhaité, tester la propriété Path du classeur. Si elle est vide, tu
traites, sinon tu ne fais rien (le classeur a déjà été enregistré).
Ça peut donner ce genre de code (dans le module ThisWorkbook du modèle .xlt) :

Sub Workbook_Open()
If ThisWorkbook.Path="" Then
'ton traitement
End If
End Sub

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour.

J'ai un Modele excel 97.
Lorsque je fais Fichier/Nouveau/Modele/Facture.xlt, le modele s'ouvre en
document facture.Facture1.xls (par exemple)
A ce moment la, il va copier une partie d'une nomenclature (pas enorme),
dans une feuille du classeur.Grace a la Procedure OPEN
Cette nomenclature est regulierement mise a jour et contient tarif et marge.

Une fois ce document enregistré (Fac2003-10-06.xls) , je ne veux plus que la
fonction OPEN s'execute a l'ouverture de ce classeur.
En effet , si elle s'execute a chaque ouverture , les marges ayant bougées ,
mes factures se reactualisent et ne sont plus celles envoyées aux clients.

Y a t il un moyen d'eviter cela?

Pour l'instant j'ai bloqué le truc en verifiant le debut du nom, si c'est
"Facture" c'est un issu du modele et j'actualise, sinon je ne le fais pas.
Mais le jour ou la secretaire renomme le modele ou sauve sous le nom
FactureTOTO, ca marche plus :(

Y a t il une procedure equivalente a OPEN, pour la creation d'un classeur
issu d'un modele, un ON CREATE par exemple :)

J'espere avoir ete le plus clair possible.

Merci de votre aide.

David .Q


Avatar
Michel Pierron
Salut David;
Il te suffit de tester à l'ouverture du classeur si la feuille contenant la
nomenclature est vierge ou non. Si elle est vierge tu exécutes la macro sinon,
basta.
MP

"David Q" <Vortex30-remplacer-Wanadoo.fr> a écrit dans le message de
news:3f82ae0d$0$27604$
Bonjour.


J'ai un Modele excel 97.
Lorsque je fais Fichier/Nouveau/Modele/Facture.xlt, le modele s'ouvre en
document facture.Facture1.xls (par exemple)
A ce moment la, il va copier une partie d'une nomenclature (pas enorme),
dans une feuille du classeur.Grace a la Procedure OPEN
Cette nomenclature est regulierement mise a jour et contient tarif et marge.

Une fois ce document enregistré (Fac2003-10-06.xls) , je ne veux plus que la
fonction OPEN s'execute a l'ouverture de ce classeur.
En effet , si elle s'execute a chaque ouverture , les marges ayant bougées ,
mes factures se reactualisent et ne sont plus celles envoyées aux clients.

Y a t il un moyen d'eviter cela?

Pour l'instant j'ai bloqué le truc en verifiant le debut du nom, si c'est
"Facture" c'est un issu du modele et j'actualise, sinon je ne le fais pas.
Mais le jour ou la secretaire renomme le modele ou sauve sous le nom
FactureTOTO, ca marche plus :(

Y a t il une procedure equivalente a OPEN, pour la creation d'un classeur
issu d'un modele, un ON CREATE par exemple :)

J'espere avoir ete le plus clair possible.

Merci de votre aide.


David .Q






Avatar
David Q
Bonjour.
Le modele contient toujours la nomenclature de base( au cas ou).

merci de ton aide.

"Michel Pierron" a écrit dans le message de news:
OsRB#
Salut David;
Il te suffit de tester à l'ouverture du classeur si la feuille contenant
la

nomenclature est vierge ou non. Si elle est vierge tu exécutes la macro
sinon,

basta.
MP

"David Q" <Vortex30-remplacer-Wanadoo.fr> a écrit dans le message de
news:3f82ae0d$0$27604$
Bonjour.


J'ai un Modele excel 97.
Lorsque je fais Fichier/Nouveau/Modele/Facture.xlt, le modele s'ouvre en
document facture.Facture1.xls (par exemple)
A ce moment la, il va copier une partie d'une nomenclature (pas enorme),
dans une feuille du classeur.Grace a la Procedure OPEN
Cette nomenclature est regulierement mise a jour et contient tarif et
marge.



Une fois ce document enregistré (Fac2003-10-06.xls) , je ne veux plus
que la


fonction OPEN s'execute a l'ouverture de ce classeur.
En effet , si elle s'execute a chaque ouverture , les marges ayant
bougées ,


mes factures se reactualisent et ne sont plus celles envoyées aux
clients.



Y a t il un moyen d'eviter cela?

Pour l'instant j'ai bloqué le truc en verifiant le debut du nom, si
c'est


"Facture" c'est un issu du modele et j'actualise, sinon je ne le fais
pas.


Mais le jour ou la secretaire renomme le modele ou sauve sous le nom
FactureTOTO, ca marche plus :(

Y a t il une procedure equivalente a OPEN, pour la creation d'un
classeur


issu d'un modele, un ON CREATE par exemple :)

J'espere avoir ete le plus clair possible.

Merci de votre aide.


David .Q










Avatar
David Q
Merci.

Suite au message de john, j'etais parti sur cette piste.
Le probleme etait dans quel repertoire tester la presence du Classeur.
Tu me donnes la solution ce qui est parfait :)

Merci

David.

"Frédéric Sigonneau" a écrit dans le message
de news:
Bonjour,

La particularité d'un classeur créé à partir d'un modèle est qu'au moment
de sa

création il a un nom par défaut (Facture1 dans ton exemple) mais pas de
chemin.

Il aura un dès qu'il aura été enregistré et seulement à ce moment là.
Dans l'événement Workbook_Open de ton modèle tu peux donc, avant
d'exécuter le

traitement souhaité, tester la propriété Path du classeur. Si elle est
vide, tu

traites, sinon tu ne fais rien (le classeur a déjà été enregistré).
Ça peut donner ce genre de code (dans le module ThisWorkbook du modèle
.xlt) :


Sub Workbook_Open()
If ThisWorkbook.Path="" Then
'ton traitement
End If
End Sub

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour.

J'ai un Modele excel 97.
Lorsque je fais Fichier/Nouveau/Modele/Facture.xlt, le modele s'ouvre en
document facture.Facture1.xls (par exemple)
A ce moment la, il va copier une partie d'une nomenclature (pas enorme),
dans une feuille du classeur.Grace a la Procedure OPEN
Cette nomenclature est regulierement mise a jour et contient tarif et
marge.



Une fois ce document enregistré (Fac2003-10-06.xls) , je ne veux plus
que la


fonction OPEN s'execute a l'ouverture de ce classeur.
En effet , si elle s'execute a chaque ouverture , les marges ayant
bougées ,


mes factures se reactualisent et ne sont plus celles envoyées aux
clients.



Y a t il un moyen d'eviter cela?

Pour l'instant j'ai bloqué le truc en verifiant le debut du nom, si
c'est


"Facture" c'est un issu du modele et j'actualise, sinon je ne le fais
pas.


Mais le jour ou la secretaire renomme le modele ou sauve sous le nom
FactureTOTO, ca marche plus :(

Y a t il une procedure equivalente a OPEN, pour la creation d'un
classeur


issu d'un modele, un ON CREATE par exemple :)

J'espere avoir ete le plus clair possible.

Merci de votre aide.

David .Q