Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/05/2007, 14h58   #1
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 65
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : novembre 2006
Messages : 65
Points : 25
Points : 25
Par défaut Y a-t-il moyen de nommer un document sans le sauvegarder ?

Quand on ouvre un nouveau document, il prend le nom de DocumentN, avec N incrémenté.

ActiveDocument.Name est en lecture seule.

Pourtant, je voudrais (dans certains cas seulement) imposer le nom par défaut du nouveau document que je viens de créer par macro (en fait, en pilotage depuis Delphi, mais peu importe), mais pour autant je ne compte pas sauvegarder ce document (ça a l'air absurde comme ça, hors contexte, mais ça m'aiderait bien).

Rien trouvé dans la faq...

Merci de votre aide...
PaulR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 15h01   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Crée un tableau de tes noms de classeurs que tu redim à chaque nouvelle création et utilise le tableau. Je n'ai pas d'autre idée
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 15h11   #3
Membre Expert
 
Inscription : novembre 2006
Messages : 1 465
Détails du profil
Informations personnelles :
Âge : 49

Informations forums :
Inscription : novembre 2006
Messages : 1 465
Points : 1 411
Points : 1 411
peut etre bien que tu dois créer un modele. en fait classeur1 est le modele classeur
si tu crée une facture d'apres le modele facture, il s'appelle facture1, donc, et ne me demande pas plus de détails, je ne sais pas exactement comment on fait, mais tu dois créer ton modele avec tes parametres , tes formats, ce genre de chose, puis enregistrer sous, et en type de fichier, il y a *.xlt, modeles. a partir de la , par le code,, admettons que ton fichier model s'appelle machose.xlt. quand tu fais fichier nouveau, c'est machose1 qui se crée, que tu es libre d'enregistrer ou non.
alsimbad est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 15h24   #4
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
POur enregistrer un nouveau modèle à partir de "Document1" (vide de toute macro) c'est facile, tu fais "Enregistrer sous... Modèle .xlt" tu mets le nom voulu et tu l'enregistres avec les autres modèles, mais... ton appli ne sera pas transportable à moins de placer le modèle sur les différents postes distribués
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 17h53   #5
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 65
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : novembre 2006
Messages : 65
Points : 25
Points : 25
Visiblement il n'y a pas moyen, snif.

Je me disais qu'il devait bien y avoir quelque part un paramètre qui fournit le string "document" ou "classeur" auquel Office concatène un numéro pour former le nom par défaut. Et que ce paramètre est modifiable puisqu'il est différent de la version anglaise à la version française...

Faut juste trouver lequel c'est

Merci de vos propositions en tout cas.
PaulR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2007, 11h39   #6
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 676
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 676
Points : 7 628
Points : 7 628
Si tu nous expliquais ton but, on pourrait, peut-être, te trouver quelque chose.

Ce nom doit-il apparaître pour l'utilisateur ou en as-tu besoin pour ton programme?

Dans le deuxième cas, la création d'une instance du classeur doit pouvoir t'aider:
Code :
Set UnNom = Workbooks.Add
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
AlainTech est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2007, 14h02   #7
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 65
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : novembre 2006
Messages : 65
Points : 25
Points : 25
En fait, c'est à la fois pour le programme et pour l'utilisateur.

Mon appli (Delphi) génère automatiquement des documents sur base de paragraphes puisés dans une base de données, puis les soumet à l'utilisateur qui peut le sauvegarder ou pas.

Selon le type de document généré, il doit avoir des noms différents, des noms codifiés en fait, et je ne peux pas demander à l'utilisateur de taper ces noms biscornus (enfin si je peux, mais ils vont râler ferme )
Or ce nom, je peux facilement le générer par programme.

Donc, pour le moment, je sauvegarde le document dans un répertoire temporaire en le nommant, mais du coup, il arrive à certains utilisateurs de ne pas l'enregistrer au bon endroit.

Bref, si j'arrive à lui donner le bon nom par défaut, c'est plus zoooli

Je vais regarder pour ta suggestion, la piste me paraît bonne, me reste à l'adapter au pilotage OLE via Delphi...

Merci en tout cas !

Paul
PaulR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 13h49   #8
Rédacteur

 
Avatar de Maxence HUBICHE
 
Homme Maxence HUBICHE
Formateur et Développeur - Conseil en Informatique
Inscription : juin 2002
Messages : 3 687
Détails du profil
Informations personnelles :
Nom : Homme Maxence HUBICHE
Âge : 42
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Formateur et Développeur - Conseil en Informatique

Informations forums :
Inscription : juin 2002
Messages : 3 687
Points : 6 516
Points : 6 516
Envoyer un message via MSN à Maxence HUBICHE Envoyer un message via Skype™ à Maxence HUBICHE
Moi, je créerai 2 classes
  • clsDocuments (collection de tous tes documents)
  • clsDocument (document unique, avec une propriété en plus)
    NomAffichage(String) : Nom du document à afficher
__________________
1formaxion, une formation de qualité, des formateurs compétents
Mes tutoriels et vidéos :
Tableaux croisés dynamiques, Access les Bases, et les autres !
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2007, 00h45   #9
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Citation:
Envoyé par PaulR
Donc, pour le moment, je sauvegarde le document dans un répertoire temporaire en le nommant, mais du coup, il arrive à certains utilisateurs de ne pas l'enregistrer au bon endroit.
Et imposer le bon répertoire ? Je ne sais pas comment tu peux gérer VBA depuis Delphi mais en VBA, par le code, tu pourrais mettre ce code dans Document_Close du nouveau document
Code :
1
2
3
4
5
6
7
8
9
Private Sub Document_Close()
    NomDoc = ActiveDocument.Name
    Do 
         NomFich = InputBox("Saisir le nom du fichier")
    loop until trim(NomFich) <> ""
    if instr(lcase(NomFich),".doc") = 0 then NomFich = NomFich & ".doc"
    Chemin = "D:\Temp\"
    Application.Documents(NomDoc).SaveAs FileName:=Chemin & NomFich
End Sub
A tout hasard

Bien sûr, tu peux prendre le nom "ailleurs"
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2007, 12h35   #10
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 65
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : novembre 2006
Messages : 65
Points : 25
Points : 25
Ah ouiiiiiiiiiiiiiiiiiiiiiiiiiii mais bien sûr, Exécuter une macro dans l'événement de mon document... Ouah, merci !
Bon reste à trouver comment créer une macro dans un document Word par programme, mais ça c'est beaucoup plus un problème Delphi, je pense...

Bon, avant de mettre résolu, p'tite question : est-ce qu'il y a moyen aussi d'intercepter l'événement Save ?

M'en vais chercher ici où on peut trouver la liste des événements qu'on peut intercepter dans les macros, et la syntaxe.

Merci encore !
PaulR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2007, 15h05   #11
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Pour connaître les événements d'un classeur, tu fais F2 dans l'éditeur VB -> Workbook -> les éclairs représentent les événements de l'objet.
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2007, 15h35   #12
Rédacteur

 
Avatar de Maxence HUBICHE
 
Homme Maxence HUBICHE
Formateur et Développeur - Conseil en Informatique
Inscription : juin 2002
Messages : 3 687
Détails du profil
Informations personnelles :
Nom : Homme Maxence HUBICHE
Âge : 42
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Formateur et Développeur - Conseil en Informatique

Informations forums :
Inscription : juin 2002
Messages : 3 687
Points : 6 516
Points : 6 516
Envoyer un message via MSN à Maxence HUBICHE Envoyer un message via Skype™ à Maxence HUBICHE
Citation:
Envoyé par PaulR
Ah ouiiiiiiiiiiiiiiiiiiiiiiiiiii mais bien sûr, Exécuter une macro dans l'événement de mon document... Ouah, merci !
Bon reste à trouver comment créer une macro dans un document Word par programme, mais ça c'est beaucoup plus un problème Delphi, je pense...

Bon, avant de mettre résolu, p'tite question : est-ce qu'il y a moyen aussi d'intercepter l'événement Save ?

M'en vais chercher ici où on peut trouver la liste des événements qu'on peut intercepter dans les macros, et la syntaxe.

Merci encore !
Pourquoi ne pas simplement créer ta procédure dans un modèle de document.
et tu crées tes docs à partir du modèle...
__________________
1formaxion, une formation de qualité, des formateurs compétents
Mes tutoriels et vidéos :
Tableaux croisés dynamiques, Access les Bases, et les autres !
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h27.


 
 
 
 
Partenaires

Hébergement Web