Bonjour à tous,
J'ai cherché une solution dans les discussions déjà ouvert, mais rien ne correspond ou alors je n'emploi pas les bons termes...
J'ai des feuilles de mesures enregistrés au format (.xltm)
A l'ouverture je souhaite qu'une boite de dialogue s'ouvre et invite le technicien à entrer un numéro à 4 chiffres, ensuite c'est la boite de dialogue "enregistrer sous" qui s'ouvre et reprend ce numéro à 4 chiffres + un nom et un chemin prédéfini.
mon problème : lancer la macro qui demande le numéro à 4 chiffres et qui "enregistre sous" (au format .xlsm)
(je l'ai mise dans le workbook open mais a chaque ouverture elle se relance...)
Ci-dessous ma macro:
Sub enregistrer()
Dim objSaveBox As FileDialog
'Enregistrement feuille de mesure
essai = InputBox("Numéro de l'essai ?", "Configuration feuille de mesure", "EXXXX")
Range("D3") = essai
'Définit la fenêtre "Enregistrer sous"
Set objSaveBox = Application.FileDialog(msoFileDialogSaveAs) With objSaveBox
'Définit un nom par défaut dans le champ "Nom de fichier".
.InitialFileName = "Z:\Commun\R&D\Tests&Essais\En_cours\1_Essais_E\" & essai & ", mesures_" & Date & ".xlsx"
'Définit le type de fichier par défaut :
'(la valeur 4 Permet de spécifier les classeurs "Excel 97-2003" lorsque vous êtes dans Excel 2007)
.FilterIndex = 2
'Affiche la boîte de dialogue
.Show
'Enregistre
.Execute End With
End Sub
Bonsoir.
En somme votre macro fait exactement ce que vous souhaitez, et quand vous le souhaitez, mais malheureusement c'est justement à ce moment là qu'elle fait exactement ce que vous souhaitez. Au fait, savez vous exactement ce que vous souhaitez et quand ?
Bonjour et merci pour réponse
désolé pour mon explication confus...
oui, cette macro fonctionne, mais....je souhaite qu'elle ne se lance qu'une seul fois et dés l'ouverture du classeur(.xltm) et ensuite une fois le classeur(.xlsm) enregistré cette macro ne soit plus active.
Bonjour et merci pour la réponse, mais je dois placer ce code au début du code existant ? et comment faire pour qu'à l'ouverture de mon classeur la macro se lance toute seul ??
Bonjour.
Avec au début de la Sub Workbook_Open If Me.Name <> "… ? Then Exit Sub ça n'irait pas ?
Parce que s'il porte déjà un autre nom que celui du classeur modèle c'est que la macro a déjà été exécutée, non ? Ou en testant le chemin, enfin n'importe quoi ne caractérisant que le classeur modèle.
S'il n'y avait pas d'autre macro à garder dans le classeurs dupliqué il suffirait de l'enregistrer en xlsx.
Bonjour.
Avec au début de la Sub Workbook_Open If Me.Name <> "… ? Then Exit Sub ça n'irait pas ?
Parce que s'il porte déjà un autre nom que celui du classeur modèle c'est que la macro a déjà été exécutée, non ? Ou en testant le chemin, enfin n'importe quoi ne caractérisant que le classeur modèle.
S'il n'y avait pas d'autre macro à garder dans le classeurs dupliqué il suffirait de l'enregistrer en xlsx.
Bonjour,
merci pour le temps que vous prenez pour me répondre, mais je n'y arrive pas !
je ne sais pas ou ajouter, ou placer, vos proposition de code.
si je dois l'intégrer dans le module qui contient la macro ou dans le "ThisWorkbook"...
Bonne journée
Bonjour.
Je ne sais pas ,vous n'avez jamais joint de classeur.
En le mettant dans une Workbook_Open ça permettrait de l'exécuter comme vous le souhaitiez dans à l'ouverture du classeur modèle.
D'un autre coté si c'est une macro exécutée par un bouton de formulaire ce srait plus simple car vous pourriez supprimer ce bouton une fois l'opération effectuée.
Si c'est une macro dont l'exécution est demandée via une commande personnalisée du ruban, elle pourrait être dans un 3ème classeur qui se chargerait d'ouvrir le xltm et l'enregistrer en xlsm. Dans ce cas tous les classeurs impliqués pourraient être dans le même état.
Bonjour,
Voilà, j'ai ajouté le code dans la macro,
mais quand j'ouvre mon classeur modèle elle ne fonctionne pas (lancement manuel de la macro)
il ne se passe rien...
??
Sub enregistrer()
If IsNumeric([Fait]) Then Exit Sub
ThisWorkbook.Names.Add "Fait", 1, Visible:=False 'nom défini masqué
Dim objSaveBox As FileDialog
'Enregistrement feuille de mesure
essai = InputBox("Numéro de l'essai ?", "Configuration feuille de mesure", "EXXXX")
Range("D3") = essai
'Définit la fenêtre "Enregistrer sous"
Set objSaveBox = Application.FileDialog(msoFileDialogSaveAs)
With objSaveBox
'Définit un nom par défaut dans le champ "Nom de fichier".
.InitialFileName = "Z:\Commun\R&D\Tests&Essais\En_cours\1_Essais_E\" & essai & ", mesures_" & Date & ".xlsx"
'Définit le type de fichier par défaut :
'(la valeur 4 Permet de spécifier les classeurs "Excel 97-2003" lorsque vous êtes dans Excel 2007)
.FilterIndex = 2
'Affiche la boîte de dialogue
.Show
'Enregistre
.Execute
End With
End Sub
À mon avis ce n'est pas prudent de se baser sur un tel indicateur, parce que je pense qu'elle doit toujours être exécutée quand on ouvre le classeur modèle mais jamais quand on ouvre un classeur qui en est issu. C'est pourquoi je pense que le mieux ce serait encore que la macro n'y soit tout simplement pas, mais dans un troisième et affectée à une commande personnalisée du ruban.
Alors je ne comprend vraiment pas à quoi ça sert.
Ne créerait il pas des …xlsx.xlsm par hasard ?
De toute façon je n'utilise jamais Application.FileDialog(msoFileDialogSaveAs).
Je préfère ChNomF = GetSaveAsFilename( … et contrôler moi même l'enregistrement pour être sûr qu'il est fait comme je veux.
Si pour ma part j'avais bien compris le problème, essayez comme ça.
(À enregistrer comme Modèle Excel (prenant en charge les macros) (*.xltm)
… ou pas.