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

VBA Access Discussion :

supprimer un module dynamiquement


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut supprimer un module dynamiquement
    bon bah c'est encore moi

    voilà j'ai donc réussi à creer dynamiquement un controle en lui associant du code mais maintenant si je lance ma fonction qui me crée un bouton avec du code sur un formulaire et bien il me crée à chaque fois le module

    en gros j'ai ca :


    Public Sub FonctionCréée()
    ...
    End Sub


    Public Sub FonctionCréée()
    ...
    End Sub


    Public Sub FonctionCréée()
    ...
    End Sub

    (enfin je l'ai pas 3 fois car il me dit qu'il y a ambiguité sur le nom dès la 2eme fois)

    j'ai donc tenté (on rigole pas merci ) de supprimer l'ancien module mais bon ca marche pas biensur... :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim fm As Form
    'Ouvrir le formulaire en mode création
    DoCmd.OpenForm NomForm, acDesign
    Set fm = Forms(NomForm)
     
     
    Do While fm.Module.Count > 0
         fm.Module.DeleteLines
    Loop
    "membre de données ou de methodes introuvable"

    sur la ligne : Do While fm.Module.Count > 0 (sur le Count)

    j'avais tenté de faire un copier/coller de mon bout de code qui supprime mes control mais non..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Do While fm.Controls.Count > 0
        Application.DeleteControl strFmName, fm.Controls(0).Name
    Loop
    et pourtant quand je tape le point apres fm.Module. il me propose "count" ce %$^*

    merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 045
    Par défaut
    en REFERENCE , ajoute "Microsoft Visual Basic for Application Extensibility"

    puis les modules :
    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
     
    Public Function GetProc(Nfrm As String, ProcName As String, ByRef StartLine As Long, ByRef CountLine As Long) As Boolean
     ' en REFERENCE :
     '   "Microsoft Visual Basic for Application Extensibility"
     
     Dim modl As Module
        On Error GoTo ErrProc
        Set modl = Forms.Item(Nfrm).Module
        With modl
            StartLine = .ProcStartLine(ProcName, vbext_pk_Proc)
            CountLine = .ProcCountLines(ProcName, vbext_pk_Proc)
            GetProc = True
        End With
        Set modl = Nothing
        Exit Function
    ErrProc:
        'ProcName n'existe pas Err 35
        Set modl = Nothing
        GetProc = False
    End Function
     
     
    Public Sub DelProc(Nfrm As String, DepLine As Long, NbLine As Long)
        Dim modl As Module
        Set modl = Forms.Item(Nfrm).Module
        modl.DeleteLines DepLine, NbLine
        Set modl = Nothing
    End Sub
    que tu appelles , avnat l'insertion du nouveau module, par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
    If GetProc(NomForm, ctl.Name & "_Click", DepL, NbL) = True Then
        DelProc NomForm, DepL, NbL
    End If
    ...
    It works with me

  3. #3
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Si je m'en tient à la question : Supprimer un module, j'aurais tendance à répondre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.DeleteObject acModule, "Module2"
    La solution données plus haut semble plus coller à ton problème mais il ne s'agit pas de supprimer un module mais une fonction ou procédure de ce module.

    Petite précision avant que tu n'ailles plus loin : la création de code et contrôle en dynamique n'est pas compatible avec le runtime Access. Tous les clients devront donc disposer d'une version Access complète

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    euh non en fait je me suis emmelé les pinceaux.

    je voulais dire supprimer une fonction/procédure et non un module car le code est généré directement sur le formulaire.

    Sinon le code proposé pour supprimer une procédure fonctionne tres bien c'est cool

    en ce qui concerne le "runtime access" je sais pas ce que c'est mais je suppose que c'est une partie d'acces qui ne permet que de lire les fichiers mdb?
    pas de probleme à ce niveau là car juste une personne l'utilisera (et aura access)

    voilà merci

  5. #5
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 045
    Par défaut
    Juste pour rendre à César ... pardon à Maxence Hubiche,
    ce code a été trouvé rapidement via Google.
    Bonne journée

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

Discussions similaires

  1. Supprimer un module vide d'un etat impossible?
    Par electrosat03 dans le forum IHM
    Réponses: 5
    Dernier message: 03/03/2007, 14h11
  2. [C#] Supprimer un combox dynamique
    Par lykim1982 dans le forum C#
    Réponses: 4
    Dernier message: 09/02/2007, 16h37
  3. Module dynamique PHP
    Par tedparker dans le forum Zend
    Réponses: 6
    Dernier message: 29/12/2006, 11h50
  4. Ajouter/Supprimer un select dynamiquement
    Par n@n¤u dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/06/2006, 10h22
  5. comment supprimer un module dans vba
    Par moicats dans le forum Access
    Réponses: 3
    Dernier message: 13/04/2006, 10h16

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