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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 179
    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 179
    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 179
    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 179
    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

+ Répondre à la discussion
Cette discussion est résolue.

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