IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème avec une sub open


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Par défaut Problème avec une sub open
    Bonjour,

    Je suis assez novice en programmation et je travaille actuellement sur un projet excel. Je rencontre un problème qui m'intrigue car les résultats sont "aléatoires". Je m'explique :

    Je cherche simplement à faire en sorte qu'à l'ouverture d'un fichier "vierge" visant à être dupliqué, excel demande si l'on veut créer un nouveau fichier. Une fois le nouveau fichier enregistré sous un autre nom, la question ne sera plus posée.

    Ce qui me surprend, c'est que parfois ça marche très bien, et parfois à l'ouverture du fichier "Vierge", aucune question n'est posée. Et ceci de manière très aléatoire. Ce qui fonctionne à chaque fois, c'est lorsque j'ouvre le fichier, je le referme en enregistrant, et je l'ouvre à nouveau. A cette nouvelle ouverture, la boite de dialogue apparaît. Mais pour les cas où ça ne marche pas, je sèche...

    Voici le code utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    Private Sub Workbook_Open()
     
    Dim OuiNon As Integer
    Dim Nom As String
    Dim chemin As String
    chemin = ThisWorkbook.Path
     
    Nom = ThisWorkbook.Name
     
    If Nom Like "Vierge *" Then
     
        OuiNon = MsgBox("Voulez-vous ajouter un nouveau résident?", vbYesNo)
        If OuiNon = vbNo Then
     
        Exit Sub
     
        Else
        End If
     
        Dim fichier As String
        On Error Resume Next
        ChDir chemin
        fichier = Application.GetSaveAsFilename("", fileFilter:="Excel Files (*.xlsm), *.xlsm")
        If fichier <> False Then ThisWorkbook.SaveAs fichier
     
    Else
    End If
     
     
    End Sub

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 175
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pourquoi ne pas tout simplement utiliser comme fichier "Vierge" un modèle (classeur suffixé xltx ou xtm) ?
    Même si cela ne change rien à l'exécution du programme, les lignes 21 à 25 devrait être avant le End If de la ligne 19
    Le caractère générique * doit être contre le mot cherché If Nom Like "Vierge*" Then et pas If Nom Like "Vierge *" Then
    Es-tu certain de la casse ?
    Je chercherais "vierge" et j'utiliserais la fonction LCase(Nom) voir même Trim(LCase(Nom))
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Par défaut
    Bonjour,

    J'utilise actuellement un fichier "Vierge 2018" comme modèle mais le programme que je crée est destiné à des soignants qui ne savent pas toujours bien utiliser les fichiers. J'ai déjà eu quelques retours de fausses manip (par ex le fichier vierge a été modifié par inadvertance). C'est pourquoi je souhaite créer ce fichier "vierge" qui rappelle qu'il est là pour créer des copies. Évidemment les copies ne doivent pas afficher le message en question.

    Oui je suis certain de la casse car je compte créer des fichiers "vierge 2018" donc ce n'est pas ça le problème à mon avis.

    En fait tout fonctionne parfaitement, mais ce que je ne comprends pas c'est que c'est aléatoire, parfois le MsgBox n'apparaît pas, tout simplement, sans aucun message d'erreur

    Excusez mon ignorance, mais qu'entendez-vous par rechercher vierge avec Lcase?

    Merci en tout cas pour votre réponse.

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Par défaut
    Re

    Après quelques recherches j'ai testé avec Trim(Lcase(Nom)) et ça a l'air de marcher. Je ne comprends pas bien pourquoi parfois ça marchait, et d'autres fois non...

    En tout cas merci pour le tuyau!

    Si vous avez une explication rationnelle, je suis preneur!

    Bon dimanche

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Par défaut
    J'ai répondu trop vite... ça ne marche pas à tous les coups, et je ne vois aucune logique là dedans!

    Voici le code tel que je l'ai modifié d'après votre réponse :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Private Sub Workbook_Open()
     
    Dim OuiNon As Integer
    Dim Nom As String
    Dim chemin As String
    chemin = ThisWorkbook.Path
     
     
     
    Nom = ThisWorkbook.Name
     
     
    If Trim(LCase(Nom)) Like "vierge*" Then
     
     
        OuiNon = MsgBox("Voulez-vous ajouter un nouveau résident?", vbYesNo)
        If OuiNon = vbNo Then
     
        Exit Sub
     
        Else
     
        Dim fichier As String
        On Error Resume Next
        ChDir chemin
        fichier = Application.GetSaveAsFilename("", fileFilter:="Excel Files (*.xlsm), *.xlsm")
        If fichier <> False Then ThisWorkbook.SaveAs fichier
     
     
        End If
     
    Else
     
    End If
     
     
    End Sub

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 175
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je reviens sur ce que j'ai écrit
    Pourquoi ne pas tout simplement utiliser comme fichier "Vierge" un modèle (classeur suffixé xltx ou xtm) ?
    Un modèle est fait pour cela.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Par défaut
    Bonjour,

    Oui j'ai testé cette méthode et ce n'est pas vraiment ce que je recherche parce que je souhaite guider davantage l'utilisateur pour créer la nouvelle version (qui peut être plus que novice pour certains). Et de plus, par curiosité, je vous avoue que ça me dérange de ne pas comprendre pourquoi mon code ne fonctionne qu'une fois de temps en temps!

    J'ai essayé de comprendre la logique qu'il y a derrière :

    Le code ne fonctionne que si j'ouvre le fichier, je le ferme en enregistrant et je l'ouvre de nouveau juste après. Là ça marche comme prévu.
    Si je n'enregistre pas, ça ne marche pas. Si j'ouvre un autre fichier entre temps, ça ne marche pas. Je me suis demandé s'il n'y avait pas une histoire de temps dans l'histoire, comme si excel en ouvrant un fichier ne lui affectait pas son vrai nom tout de suite. Du coup si le code compare le nom du fichier avant, ça pourrait ne pas fonctionner. Mais ce n'est qu'une théorie et je n'ai pas vraiment d'idée de solution...

  8. #8
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    avec un peu de jugeote, juste en réchauffant une paire de neurones :
    à partir d'un modèle, le classeur ouvert peut être considéré comme "vierge" via sa propriété Path
    car tant que ce nouveau classeur n'est pas enregistré cette propriété est vide !

    _________________________________________________________________________________________________________
    Je suis Paris, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  9. #9
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Par défaut
    Bonjour Marc-L

    Merci pour votre réponse. Je comprends ce que vous dîtes dans l'idée mais concrètement je ne vois trop comment faire pour inviter l'utilisateur à enregistrer son nouveau fichier dès le début. Si j'ai bien compris l'idée serait d'attendre qu'il ferme la fenêtre pour enregistrer et que le chemin d'enregistrement soit déjà orienté sur le bon dossier, le bon format xlms, le bon nom? J'ai voulu essayer mais je ne vois pas comment modifier ça (ce n'est pas de la modestie, je suis vraiment novice...)

  10. #10
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    Dans le code de la présentation initiale, au lieu de tester le nom du classeur juste vérifier sa propriété Path

  11. #11
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Par défaut
    Je ne saisis pas bien...

    ThisWorkbook.Path me donne le chemin d'accès mais pas le nom du fichier. Comment je peux tester le nom du fichier?

    Je précise aussi que le code que j'utilise fonctionne très bien si je l'exécute depuis visual basic (via le bouton "play"). C'est juste qu'à l'ouverture réelle du fichier, c'est aléatoire, et ça ça me dépasse...

  12. #12
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,
    Comme te l'indique @Marc-L, vérifie si ton fichier est bien enregistré :
    https://www.developpez.net/forums/d3...te-enregistre/
    Ensuite si c'est ok test le nom du fichier

    Edit : si tu veux éviter de vérifier si tu as des majuscules ou minuscules dans ton nom, utilise en début de module (Avant le code) :
    à utiliser à condition que le contexte s'y prête et ne te fasse pas défaut par la suite
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  13. #13
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Par défaut
    Merci pour votre conseil.
    J'ai été voir votre lien et copié ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Application.ActiveDocument.Path = "" Then
        MsgBox "Le document n'a pas été enregistré"
    Else
        MsgBox "Le document a déjà été enregistré"
    End If
    Mais ça ne fonctionne pas, j'ai un message d'erreur. Le post date un peu... ça a pu changer en 10 ans de temps?

  14. #14
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Remplace dans ce cas là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Application.ActiveDocument.Path = "" Then
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ActiveWorkbook.Path = "" Then
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  15. #15
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Par défaut verdict!
    Voilà j'ai enfin pu tester ce que vous me proposiez, j'ai donc simplement inséré ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Workbook_Open()
     
    If ActiveWorkbook.Path = "" Then
        MsgBox "Le document n'a pas été enregistré"
    Else
        MsgBox "Le document a déjà été enregistré"
    End If
     
    End Sub
    Et le verdict est... toujours aussi bizarre mais ça me permet de comprendre une chose. Alors quand j'exécute le code directement dans visual basic, ça fonctionne, il me dit que c'est bien enregistré.

    Et quand j'ouvre mon fichier dans des conditions normales, il n'affiche rien du tout... (donc même pas le message "n'a pas été enregistré"). Par contre, comme précédemment, si je fais ma manip "ouvrir, fermer et enregistrer, puis rouvrir", là le message apparaît.

    Déduction (arrêtez moi si je me plante) : en dehors de cette manip que je n'explique pas encore, le fichier n'exécute pas du tout le code de la sub open. Mais pourquoi??

  16. #16
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 175
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Déduction (arrêtez moi si je me plante) : en dehors de cette manip que je n'explique pas encore, le fichier n'exécute pas du tout le code de la sub open. Mais pourquoi??
    Si l'événement n'est pas détecté c'est vraisemblablement que les macros ne sont pas activées ou que tu aurais une ligne de code désactivant les événements
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  17. #17
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Quand comprendras-tu que le fait d'enregistrer (ton saveas) un classeur sous un autre nom ne le fait pas passer par la "case" Workbook_open ?
    Quand suivras-tu le sage conseil que t'a donné Philippe Tulliez (utilisation d'un modèle) ?
    Mais si tu tiens vraiment à continuer sur le chemin des usines à gaz, le voici :
    - 1) dans workbook_open : dire que si son nom est autre que "vierge",fermer le classeur "vierge" de la collection Workbooks
    - 2) ouvrir ton classeur "vierge"
    - 3) si son nom est "vierge", le copier non par saveas mais par la méthode copyfile
    - 4) lancer le classeur copié en 3 (son évènement Open interviendra et le classeur "vierge" sera fermé.
    Une chose est claire : je ne t'accompagnerai pas sur ce chemin-là, dont tu es seul décideur. Je respecte et trouve justifié dans ce domaine le dicton qui dit que "qui fait à sa tête doit savoir payer de son dos".
    A toi de voir ...

    Et usine à gaz pour usine à gaz ou réinvention de roue pour réinvention de roue,
    rien ne t'empêche de créer un classeur toto dont le seul propos est de lancer une copie de ton classeur "vierge" (en t'assurant quand-même de ce que le chemin de ce classeur copié n'existe pas déjà), puis de fermer le classeur "toto".
    J'insiste toutefois : tout ce "bricolage" est très loin de la suggestion "pro" et bien plus raisonnable que t'a faite Philippe Tulliez.

  18. #18
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Par défaut Merci!
    Bonjour,

    Merci à tous pour vos réponses.
    Je crois bien que je vais opter pour la sage solution "modèle xltm". Ca ne correspond pas vraiment au "cahier des charges" que je m'étais donné mais tant pis, ils finiront bien par s'y faire!

    En passant, j'ai fait quelques recherches et découvert que le problème d'événement "open" qui ne s'exécute pas a déjà été rencontré en présence de certaines mises en forme conditionnelles dans les fichiers. Le mien est bien chargé à ce niveau, alors allez savoir... Je n'ai vu nulle part mention de qqun qui évoque le fait que parfois ça fonctionne, parfois non... mais tant pis je lâche l'affaire.

    J'ai une dernière question tout de même, toujours de novice : comment puis-je prédéfinir dans mon modèle un dossier d'enregistrement, un nom type et une extension (j'ai besoin d'un xlsm et c'est xlsx qui vient par défaut)?

  19. #19
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    En passant, j'ai fait quelques recherches et découvert que le problème d'événement "open" qui ne s'exécute pas a déjà été rencontré en présence de certaines mises en forme conditionnelles dans les fichiers. Le mien est bien chargé à ce niveau, alors allez savoir... Je n'ai vu nulle part mention de qqun qui évoque le fait que parfois ça fonctionne, parfois non... mais tant pis je lâche l'affaire.
    pour mémoire :
    le fait d'enregistrer (ton saveas) un classeur sous un autre nom ne le fait pas passer par la "case" Workbook_open
    CQFD

    Poue ce qui est de travailler avec un modèle :
    Je ne sais pas quelle est ta version Excel.
    Avec 2010, ce serait ainsi (exemple) :
    https://support.office.com/fr-fr/art...9-ad8baec39e1e
    Je ne doute pas que tu sauras trouver (même avec googoomachin) les gestes à accomplir si autre version.

  20. #20
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 175
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai une dernière question tout de même, toujours de novice : comment puis-je prédéfinir dans mon modèle un dossier d'enregistrement, un nom type et une extension (j'ai besoin d'un xlsm et c'est xlsx qui vient par défaut)?
    Comment prédéfinir un dossier d'enregistrement dans un modèle ?
    Utiliser dans le modèle, une cellule nommée dans une feuille dédiée aux paramètres où l'on indiquera le chemin et le nom du dossier
    Le problème que l'on va rencontrer.
    Le client ou le service informatique remplace les ordinateurs, le réseau, l'organisation des répertoires, etc. et on doit modifier le paramètre dans le modèle.
    Solutions possibles
    1. Prévoir un fichier Txt ou Ini contenant le nom du répertoire dans le répertoire où se trouve les modèles. La propriété TemplatesPath de l'objet Application permet de connaître l'emplacement des modèles. Cependant le problème restera le même en cas de réorganisation. Il ne faudra pas ooblier de copier les modèles et fichier paramètres dans le nouveau répertoire Template. Le nouveau chemin devra têre également remplacer dans le fichier paraètre
    2. Placer le modèle dans le même répertoire que l'application ou dans un sous-répertoire nommé par exemple Template et utiliser un fichier xlsm nommé par exemple CreateFile dédié à la création des classeurs basés sur un ou plusieurs modèles.

    On peut alors placer dans une feuille paramètre le nom du sous-dossiers de l'application où le classeur sera sauvé (cela peut être le dossier principal de l'application)
    C'est cette dernière option que j'ai utilisée chez un client qui doit créer régulièrement des classeurs basés sur plusieurs modèles
    Dans la plage nommée de ma feuille paramètre j'ai une colonne (étiquette de colonne Template) contenant le nom des modèles et dans une seconde (étiquette de colonne SaveAs) les noms que devront prendre les classeurs

    Avantage : On déplace l'ensemble des fichiers et sous-répertoire de l'application sans risque (toujours penser à la maintenance).
    En lieu et place de la feuille paramètre on peut bien entendu utiliser un fichier txt ou INI
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème avec une librairie open source sous myEclipse
    Par scaryfan dans le forum EDI et Outils pour Java
    Réponses: 0
    Dernier message: 01/09/2009, 20h40
  2. [JBOSS] [Struts] Problème avec une application
    Par Tiercel dans le forum Wildfly/JBoss
    Réponses: 5
    Dernier message: 13/07/2004, 13h50
  3. Problème avec une instruction OUTER /Postgres
    Par Volcomix dans le forum Langage SQL
    Réponses: 14
    Dernier message: 21/04/2004, 16h56
  4. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29
  5. Problème avec une procédure stockée
    Par in dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/05/2003, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo