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 :

Recherche de code dans un module [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Santé

    Informations forums :
    Inscription : Août 2009
    Messages : 86
    Par défaut Recherche de code dans un module
    Bonjour à tous,

    je cherche à vérifier la présence de code dans un module avec une fonction boléenne mais rien ne se passe, pas même un message d'erreur.

    j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Function codeExist(montext) as boolean
    Dim MDL as Module
    Set MDL = Modules("Module1")
    If MDL.Find(montext) then
    codeExist = True
    Else
    codeExist = False
    End if
    End Function
    Faut-il ajouter un référence ou autre chose ?

    merci d'avance.

  2. #2
    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
    J'ignore ce qu'est ce type.
    1) quelle est ta version Excel ?
    La mienne ne connaît ni ce type, ni la collection Modules
    2) si Module est un type personnalisé : montre comment et ou il a été déclaré ...
    et montre alors également dans la foulée où et comment aurait été créée et abondée une collection Modules !

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    un ancien sujet où on recherchait à comparer deux constantes au sein d'un même projet

    il ne reste qu'à épurer ... car pour comparer on doit les chercher, c'est le problème que tu as soulevé

    https://www.developpez.net/forums/d1...e/#post8520378

  4. #4
    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
    Enfin quoi ....
    Voilà par contre ce que je ferais, pour voir si Module1 contient par exemple le mot "end" ou "End" ou "END" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     cherche = "end"
      toto = ThisWorkbook.VBProject.VBComponents("Module1").CodeModule.Lines(1, 10000)
      MsgBox InStr(LCase(toto), cherche) > 0
    Retournera forcément "vrai" chez toi s'il y a une macro (par exemple), puisqu'il y aura un end sub
    Refais la même chose avec cherche = "abracadabra_et_patatipatata " et je suis certain (sauf si vraiment pas de bol) de ce que "faux" sera alors retourné, hein ...

    Mais j'aimerai vraiment que tu répondes aux questions posées dans mon message précédent ...

  5. #5
    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
    Ceci ayant été dit :
    Je me demande quelle pourrait être l'utilité pratique d'une telle démarche

    A moins de développer comme un sabot, au point de penser que le code que l'on a écrit est truffé de conflits en tous genres, l'outil de recherche de l'éditeur est doté de tout ce qu'il faut, non ?
    Il ne m'est jamais arrivé de penser, d'avoir besoin de le faire, à une telle recherche dynamique !!!

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Santé

    Informations forums :
    Inscription : Août 2009
    Messages : 86
    Par défaut
    Hello,

    Merci Unparia pour tes réponses.
    En effet, «*Dim MDS as Module*» vient d’un site mais s’applique à Access, je n’avais pas fait gaffe...
    Pour ta dernière question au sujet de l’utilité de ma démarche, je vais essayer de l’expliquer clairement, même si je suppose que je me complique la vie pour rien et qu’il y a d’autres façons de faire...

    J’ai créé un document Excel pour faire un suivi de budget.
    Dans ce workbook, j’ai plusieurs onglets dons un pour les commandes et un pour les factures.
    Un autre onglet me sert de database dans lequel j’ai renseigné une liste de plus de 100 bâtiments.

    Que ce soit au niveau des factures ou des commandes. J’avais créé une listr Data Validation pour sélectionner le bâtiment concerné. Le problème est qu’il était impossible d’utiliser le scroll de la souris dans ce type de liste.

    J’ai donc eu la bonne idée (ou la mauvaise...) de remplacer ces liste par des combobox activeX et d’utiliser un script trouver sur le net qui fonctionne pas trop mal pour le scroll souris (modHookWheelMouse)

    A chaque fois que l’on encode une nouvelle facture par exemple, via un «*Sub Worksheet_change*», je créé le combobox sur la ligne concernée.
    Chaque nouveau combobox est nommé comme tel : cmb_batiment_N avec N=numéro de la ligne Excel (comme ça je n’ai pas 2 fois le même nom...)
    Je dois également a chaque fois ajouter un bout de code relatif au combobox dans le code de la feuille pour que le script modHookWheelMouse fonctionne.
    Jusque là, tout fonctionne impeccablement. A chaque nouvelle facture ou commande, mes combobox ainsi que le code qui les accompagnent se créé automatiquement.

    Quand je rentre une nouvelle facture ou commande, je commence dans la première colonne par rentrer le nº de facture (ou de commande) et c’est sur la modification de cette première colonne que je lance la création des combobox.

    Mon problème est que si par erreur je fait une faute de frappe dans ce nº et que je le corrige, le Sub Worksheet_change me créé a nouveau le combobox et son code.
    Mon idée était donc de vérifier a chaque modification de la colonne des nº si le code relatif au combobox exitait ou pas.

    Donc voilà la cause de toute cette complication.

    J’ai essayé ton code avec InStr mais il ne marche pas. J’ai ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    If InStr(ThisWorkbook.VBProject.VBComponents(“MaFeuille”).CodeModule.Lines(1, 1000), “Private Sub cmb_batiment_N”) = True Then
    Msgbox(“Existe déjà”)
    Exit Function
    Else
    Msgbox(on execute le code de creation des combobx”)
    ...
    ...
    End If
    Meme si mon text cmb_batiment_N se trouve dans le code de ma feuille, il me créé quand-meme le combobox et ça donne des conflicts ...

    Voilà, j’espère que mon explication tient la route. (Je l’ecrit depuis mon téléphone alors pas facile de se relire

  7. #7
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Cbool(InStr(ThisWorkbook.VBProject.VBComponents(“MaFeuille”).CodeModule.Lines(1, 1000), “Private Sub cmb_batiment_N”))Then

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

Discussions similaires

  1. Puis-je mettre ce code dans un module ?
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 09/03/2009, 15h18
  2. Ecrire par macro du code dans un module
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/09/2007, 01h50
  3. [VBA-E] Insérer du code dans un module
    Par cafeine dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/05/2007, 10h34
  4. Comparaison de code dans plusieurs modules
    Par jbaudin dans le forum Access
    Réponses: 2
    Dernier message: 03/10/2005, 11h47

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