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 :

Modifier dynamiquement le code d'un autre formulaire


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Administrateur Systèmes, Clouds et Réseaux /CAO/DAO/Ingénierie Electrotechnique
    Inscrit en
    Décembre 2014
    Messages
    457
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur Systèmes, Clouds et Réseaux /CAO/DAO/Ingénierie Electrotechnique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 457
    Par défaut Modifier dynamiquement le code d'un autre formulaire
    Bonjour,

    J'ai crée un module de class qui crée dynamiquement une listbox, j'arrive à me débrouiller pour gérer les évènements, vu que je connais déjà son nom j'ai écris la sub dans le code du formulaire dynform. (comme une anticipation en fait, mais bien sur ca n'a rien de dynamique)

    Mais pour autant, j'ai vu que le vba sous excel permet d'écrire, modifier du code dans un autre formulaire et j'aurais aimé avoir des informations là dessus mais pour access


    Ma listbox s'appelle ls_recept, si je voulais qu'a sa création dynamique cela aille modifier le formulaire dynform (qui s'affiche form_dynform dans l'éditeur de code) pour rajouter que sur un ondblclick cela affiche une msgbox "salut !" comment ca se passerait ? J'ai lu du code sur le site, mais le fait qu'il y ait aussi la création d'un formulaire dynamique fait que je m'y perds totalement.

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Option Explicit
    Dim Usf As Object
     
    Sub lancementProcedure()
    Dim X As Object
    Dim i As Integer
    Dim strList As String
     
    strList = "ListBox1"
    Set X = creationUserForm_Et_listBox_Dynamique(strList)
     
    For i = 1 To 10
    X.Controls(strList).AddItem "Donnee " & i
    Next i
     
    X.Show
     
    ThisWorkbook.VBProject.VBComponents.Remove Usf
    Set Usf = Nothing
    End Sub
     
     
    Function creationUserForm_Et_listBox_Dynamique(nomListe As String) As Object
    Dim ObjListBox As Object
    Dim j As Integer
     
      Set Usf = ThisWorkbook.VBProject.VBComponents.Add(3)
      With Usf
        .Properties("Caption") = "Mon UserForm"
        .Properties("Width") = 300
        .Properties("Height") = 200
      End With
     
    Set ObjListBox = Usf.Designer.Controls.Add("Forms.ListBox.1")
     
    With ObjListBox
        .Left = 20: .Top = 10: .Width = 90: .Height = 140
        .Name = nomListe
        .Object.ColumnCount = 1
        .Object.ColumnWidths = 70
    End With
     
    With Usf.CodeModule
        j = .CountOfLines
        .InsertLines j + 1, "Sub " & nomListe & "_Click()"
        .InsertLines j + 2, "If Not " & nomListe & ".ListIndex = -1 Then MsgBox " & nomListe
        .InsertLines j + 3, "End Sub"
    End With
     
    VBA.UserForms.Add (Usf.Name)
    Set creationUserForm_Et_listBox_Dynamique = UserForms(UserForms.Count - 1)
    End Function
    Quand j'essaie ne serait ce que d'entrer Set Usf = ThisWorkbook.VBProject.VBComponents.Add(3)

    je prends une erreur, thisworkbook doit être remplacé par le nom du projet ?

    Merci d'avance.

  2. #2
    Membre très actif Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Par défaut
    Salut,

    Sujet intéressant.
    Jette un oeil à ce tuto. Il explique comment modifier le contenu, en rajouter, supprimer dans les modules et formulaires.

    ICI

  3. #3
    Membre expérimenté
    Homme Profil pro
    Administrateur Systèmes, Clouds et Réseaux /CAO/DAO/Ingénierie Electrotechnique
    Inscrit en
    Décembre 2014
    Messages
    457
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur Systèmes, Clouds et Réseaux /CAO/DAO/Ingénierie Electrotechnique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 457
    Par défaut
    Merci pour la réponse mais le code que je cite est celui là justement :/ d'ou mes questions

  4. #4
    Membre très actif Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Par défaut
    Ou est ce que tu as collé ton code ?
    Dans thisworkbook ou dans un module ?

    (perso ca marche au poil pour moi, tu ne peux pas debugger, mais ça c'est normal)

  5. #5
    Invité
    Invité(e)
    Par défaut
    Salut,

    Il faut régler les options d'Excel, notamment dans (Sous Excel 2013 du moins) :

    Option => Centre de gestion de la confidentialité => Paramètre du centre de gestion de la confidentialité => Paramètres des macros => Accès approuvé au modèle d'objet du projet VBA.

    Ce réglage te permet d'accepter d'utiliser la bibliothèque VBIDE sans prendre d'erreur.
    Sous Excel, VBProject (de ThisWorkbook.VBProject) est typé VBIDE.VBProject et idem pour Application.VBE.


    -------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Property Get IsVbideReady() As Boolean
    On Error Resume Next
        IsVbideReady = IsObject(Application.VBE)
    End Property
    Cette fonction devrai te renvoyer un boolean pour savoir si tu peut utiliser VBProject/VBE.





    -----------------------------------------------------------------------------------------------------------------------------

    EDIT:

    Une petite mise à jour.
    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
     
    Sub CheckMacroSecurityTest()
     
        Const SECURITY_MESSAGE As String = _
            "Vous devez approuver l'accès au modèle objet d'Excel " & _
            "pour pouvoir accéder/utiliser à certaines " & _
            "fonctionnalités nécessaire au bon fonctionnement de ce programme."
     
        If IsVbideReady Then
            ' Code critique demandant une autorisation (réglable depuis les options d'Excel).
            Debug.Print ThisWorkbook.VBProject.Name
        Else
            If Application.DisplayAlerts Then
                If MsgBox(SECURITY_MESSAGE, vbExclamation) = vbOK Then
                    Excel.CommandBars.FindControl(ID:=3627).Execute
                End If
            End If
        End If
     
    End Sub
     
    Public Property Get IsVbideReady() As Boolean
    On Error Resume Next
        IsVbideReady = IsObject(Application.VBE)
    End Property
    Dernière modification par Invité ; 19/12/2014 à 13h25.

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/05/2011, 10h49
  2. Modifier dynamiquement le code source d'une classe
    Par mahdi26_ca dans le forum C#
    Réponses: 4
    Dernier message: 30/07/2010, 16h12
  3. Réponses: 7
    Dernier message: 21/07/2006, 08h56
  4. [VBA-A]suivi d'un code unique d'un formulaire a un autre
    Par acidstrike dans le forum VBA Access
    Réponses: 4
    Dernier message: 09/03/2006, 15h02

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