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 :

Userform dynamique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 12
    Par défaut Userform dynamique
    Bonjour!!
    j'aimerais bien si quelqu'un pouvait me donner une référence ou aller chercher de l'information afin de créer un userform dynamique( je veux dire par la, que les informations inscrites dans le userform seraient ensuite transférées dans une feuille afin d'etre par la suite traitée).

    j'essaie de comprendre le fonctionnement des userform alors si quelqu'un pouvait m'aider, j'apprécierai beaucoup.

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, déjà tu as cela http://silkyroad.developpez.com/VBA/UserForm/ ainsi que http://silkyroad.developpez.com/VBA/ControlesUserForm/ http://silkyroad.developpez.com/VBA/VisualBasicEditor/

    Sinon un échantillon
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    Option Explicit
     
    '   Sous VBE Menu Outils/Références cocher Microsoft Forms 2.0 Object Library
    '       sinon parcourir et sélectionner c:\windows\system32\FM20.dll
     
    Sub Création()
    Dim UsfForm As Object
    Dim NewB As MSForms.CommandButton
    Dim TxtB As MSForms.TextBox
    Dim i As Long, j As Long
    Dim UsfName As String
    Dim iLeft As Long, iTop As Long
     
        ShTest.Cells.Clear
     
        Application.VBE.MainWindow.Visible = False
        Set UsfForm = ThisWorkbook.VBProject.VBComponents.Add(3)
        With UsfForm
            .Properties("Caption") = "USF et TextBoxes Dynamiques"
            .Properties("Width") = 175
            .Properties("Height") = 375
        End With
        UsfName = UsfForm.Name
     
        Set NewB = UsfForm.Designer.Controls.Add("Forms.CommandButton.1")
        With NewB
            .Height = 28
            .Width = 70
            .Left = 50
            .Top = 315
            .Caption = "Quitter"
        End With
     
        iLeft = 10: iTop = 10
        For i = 1 To 12
            Set TxtB = UsfForm.Designer.Controls.Add("Forms.Textbox.1", , True)
            With TxtB
                .Width = 150
                .Height = 20
                .Left = iLeft
                .Top = iTop
                .BorderStyle = fmBorderStyleSingle
                .SpecialEffect = fmSpecialEffectFlat
     
                Select Case i
                    Case 1, 5
                        .BackColor = &HC0E0FF
                    Case Else
                        .BackColor = &HC0FFFF
                End Select
                .Tag = i
            End With
            iTop = iTop + 25
        Next i
     
        With UsfForm.CodeModule
            i = .CountOfLines
            If i = 2 Then
                .InsertLines i, "": i = i + 1
            Else
                i = 1
            End If
     
            .InsertLines i, "Const entrees_decimales_permises = "",0123456789": i = i + 1
            .InsertLines i, "Const entrees_alpha_permises = "" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz": i = i + 1
            .InsertLines i, "Const Point = "".": i = i + 1
            .InsertLines i, "Const Virgule = "",": i = i + 1
            .InsertLines i, "": i = i + 1
     
            .InsertLines i, "Private Sub CommandButton1_Click()": i = i + 1
            .InsertLines i, "    Unload Me": i = i + 1
            .InsertLines i, "End Sub": i = i + 1
     
            For j = 1 To 12
                .InsertLines i, "": i = i + 1
                .InsertLines i, "Private Sub TextBox" & j & "_Change()": i = i + 1
                .InsertLines i, "Dim i As Integer": i = i + 1
                .InsertLines i, "   i = TextBox" & j & ".Tag": i = i + 1
                .InsertLines i, "   Select Case i": i = i + 1
                .InsertLines i, "       Case 1, 5": i = i + 1
                .InsertLines i, "           ShTest.Range(""A" & j & Chr(34) & ")=TextBox" & j & ".Text": i = i + 1
                .InsertLines i, "       Case Else": i = i + 1
                .InsertLines i, "           On Error Resume Next": i = i + 1
                .InsertLines i, "           ShTest.Range(""A" & j & Chr(34) & ")=CDbl(" & "TextBox" & j & ".Text)": i = i + 1
                .InsertLines i, "           Err.Clear": i = i + 1
                .InsertLines i, "   End Select": i = i + 1
                .InsertLines i, "End Sub": i = i + 1
     
                .InsertLines i, "": i = i + 1
                .InsertLines i, "Private Sub TextBox" & j & "_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)": i = i + 1
                .InsertLines i, "   Select Case TextBox" & j & ".Tag": i = i + 1
                .InsertLines i, "       Case 1, 5": i = i + 1
                .InsertLines i, "           If InStr(entrees_alpha_permises, Chr(KeyAscii)) = 0 Then KeyAscii = 0": i = i + 1
                .InsertLines i, "       Case Else": i = i + 1
                .InsertLines i, "           If KeyAscii = Asc(Point) Then": i = i + 1
                .InsertLines i, "               If InStr(TextBox" & j & ".Text, Virgule) = 0 Then": i = i + 1
                .InsertLines i, "                   KeyAscii = Asc(Virgule)": i = i + 1
                .InsertLines i, "               Else": i = i + 1
                .InsertLines i, "                   KeyAscii = 0": i = i + 1
                .InsertLines i, "               End If": i = i + 1
                .InsertLines i, "           ElseIf InStr(entrees_decimales_permises, Chr(KeyAscii)) = 0 Then": i = i + 1
                .InsertLines i, "               KeyAscii = 0": i = i + 1
                .InsertLines i, "           ElseIf InStr(TextBox" & j & ".Text, Virgule) > 0 And KeyAscii = Asc(Virgule) Then": i = i + 1
                .InsertLines i, "               KeyAscii = 0": i = i + 1
                .InsertLines i, "           End If": i = i + 1
                .InsertLines i, "   End Select": i = i + 1
                .InsertLines i, "End Sub": i = i + 1
            Next j
     
            .InsertLines i, "": i = i + 1
            .InsertLines i, "Private Sub UserForm_Initialize()": i = i + 1
            .InsertLines i, "   TextBox1.setfocus": i = i + 1
            .InsertLines i, "End Sub": i = i + 1
        End With
     
        VBA.UserForms.Add(UsfName).Show
        ThisWorkbook.VBProject.VBComponents.Remove VBComponent:=UsfForm
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 12
    Par défaut
    J'ai regarder le tout et je me sens perdu completement.
    mon userform est déjà "créer" et j'essaie de transféré les informations qui sont saisie dans le formulaire dans des cellules sur une feuille.

    Je ne vois pas comment faire cette partie de mon opération, pourrais tu m'aider?



    Merci Didier,
    il s'agit en effet plus de la deuxième option dont tu as parler, soit de transféré les données du formulaire vers des cellules.
    Par contre j'ai penser dynamique car le contenu d'un choix, est une liste déroulante avec les options qui se trouvent dans une autre feuille.

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    pas sur d'avoir tout compris, mais par exemple le code pour ton bouton OK :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CommandButton1_Click()
      ThisWorkbook.Sheets("Feuil1").Range("A1") = ListBox1
      Me.Hide
    End Sub

  5. #5
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805

  6. #6
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Citation Envoyé par frank1365 Voir le message
    Bonjour!!
    .. créer un userform dynamique( je veux dire par la, que les informations inscrites dans le userform seraient ensuite transférées dans une feuille afin d'etre par la suite traitée).
    Bonjour,

    attention à la terminologie ... kiki29 a bien répondu à ta question, mais quand on parle de Userform Dynamique ( ou d'objet) cela signifie que sa structure va évoluer via un code spécifique en fonction des évènements induits par l'utilisateur...

    Si ta volonté est juste de transférer les données entrées dans un USF statique auparavant créé, c'est différent..

    à toi de dire.

    cordialement,

    Didier

Discussions similaires

  1. Comment rendre la taille d'un userform dynamique
    Par bmeda72 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/10/2008, 16h03
  2. SUppression Control UserForm dynamique
    Par Mr_JF dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/02/2008, 12h49
  3. Gestion d'évènement pour un Userform dynamique
    Par RemiT dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 18/12/2007, 15h34
  4. [VBA] userform dynamique
    Par kepi dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/09/2007, 19h25
  5. Userform dynamique et simple
    Par amazigh_man dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/06/2007, 10h39

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