USF date en module de classe

MJ13

XLDnaute Barbatruc
Bonjour,

j'aimerai bien me mettre au module de classes pour bien comprendre son utilisation.

Voici un fichier ou j'aimerai créer un USF avec des dates reprises sur une feuille.
Voici le fichier pour plus d'explications.

Merci d'avance pour ceux qui ont déjà fait ce genre de programmation.
 

Pièces jointes

  • USF date module de classe.zip
    22 KB · Affichages: 102

Staple1600

XLDnaute Barbatruc
Re : USF date en module de classe

Re



Autrement un code pour créer un USerform à la volée
Code:
Si problème à l'éxécution
cocher au préalable Microsoft Visual Basic for Application Extensiblity 5.3   (pour XL200)

'code à mettre dans un module standard
Sub MakeUserForm()
'[URL="http://www.tek-tips.com/faqs.cfm?fid=5757"]source[/URL]
    Dim TempForm As Object
    Dim NewButton As MSForms.CommandButton
    Dim NewLabel As MSForms.Label
    Dim NewTextBox As MSForms.TextBox
    Dim NewOptionButton As MSForms.OptionButton
    Dim NewCheckBox As MSForms.CheckBox
    Dim X As Integer
    Dim Line As Integer
    Dim MyScript(4) As String

    'This is to stop screen flashing while creating form
    Application.VBE.MainWindow.Visible = False

    Set TempForm = ThisWorkbook.VBProject.VBComponents.Add(3)

    'Create the User Form
    With TempForm
        .Properties("Caption") = "My User Form"
        .Properties("Width") = 450
        .Properties("Height") = 300
    End With

    'Create 10 Labels
    For X = 0 To 9
        Set NewLabel = TempForm.designer.Controls.Add("Forms.label.1")
        With NewLabel
            .Name = "FieldLabel" & X + 1
            .Caption = "My Label " & X + 1
            .Top = 20 + (12 * X)
            .Left = 6
            .Width = 90
            .Height = 12
            .Font.Size = 7
            .Font.Name = "Tahoma"
            .BackColor = &H80FFFF
        End With
    Next

    'Create 10 Text Boxes
    For X = 0 To 9
        Set NewTextBox = TempForm.designer.Controls.Add("Forms.textbox.1")
        With NewTextBox
            .Name = "MyTextBox" & X + 1
            .Top = 20 + (12 * X)
            .Left = 100
            .Width = 150
            .Height = 12
            .Font.Size = 7
            .Font.Name = "Tahoma"
            .BorderStyle = fmBorderStyleSingle
            .SpecialEffect = fmSpecialEffectFlat
        End With
    Next

    'Create 10 Check Boxes
    For X = 0 To 9
        Set NewCheckBox = TempForm.designer.Controls.Add("Forms.checkbox.1")
        With NewCheckBox
            .Name = "MyCheck" & X + 1
            .Caption = ""
            .Top = 20 + (12 * X)
            .Left = 260
            .Width = 12
            .Height = 12
            .Font.Size = 7
            .Font.Name = "Tahoma"
            .BackColor = &HFF00&
        End With
    Next

    'Create 10 Labels -> result of Check Box
    For X = 0 To 9
        Set NewLabel = TempForm.designer.Controls.Add("Forms.label.1")
        With NewLabel
            .Name = "Result_Text" & X + 1
            .Caption = ""
            .Top = 20 + (12 * X)
            .Left = 280
            .Width = 150
            .Height = 12
            .Font.Size = 7
            .Font.Name = "Tahoma"
            .BackColor = &H80FFFF
        End With
    Next

    'Create Event Handler Code For Each Check Box
    '(True -> Upper Case of Text Box Value;False -> Lower Case of Text Box Value)
    For X = 0 To 9
        With TempForm.codemodule
            Line = .countoflines
            MyScript(0) = "Sub MyCheck" & X + 1 & "_Click()"
            MyScript(1) = "If .MyCheck" & X + 1 & " = true then"
            MyScript(2) = ".result_Text" & X + 1 & ".caption = ucase(.mytextbox" & X + 1 & ".value)"
            MyScript(3) = ".result_Text" & X + 1 & ".caption = lcase(.mytextbox" & X + 1 & ".value)"
            .insertlines Line + 3, MyScript(0)
            .insertlines Line + 2, "With Me"
            .insertlines Line + 3, MyScript(1)
            .insertlines Line + 4, MyScript(2)
            .insertlines Line + 5, "Else"
            .insertlines Line + 6, MyScript(3)
            .insertlines Line + 7, "End if"
            .insertlines Line + 8, "End With"
            .insertlines Line + 9, "End Sub"
        End With
    Next

    'Show the form
    VBA.UserForms.Add(TempForm.Name).Show

    'Delete the form (Optional)
    'ThisWorkbook.VBProject.VBComponents.Remove TempForm

End Sub
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : USF date en module de classe

Bonjour staple

Oui c'est à peu près cela, mais cela a l'air assez complexe. Bonjour pour l'adapter à mon cas! et comme j'aime bien comprendre ce que je fais, je préférerai partir de mon cas même si il y a que le début "comme mettre les textbox" dans un premier temps. De plus je préfère avoir mon USF de défini au départ.

J'aurais préférer avoir un vrai module de classe comme dans mon fichier (si cela existe, c'est que cela doit servir à quelque chose).

Bon je viens de voir ton post de 15h32, je verrai cela plus tard, cela à lair plus ce que je recherche mais bon si c'était un vrai module de classe, ce serait super!
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : USF date en module de classe

Bonsoir



Ayant eu du mal avec les modules de classe

Une ébauche (sans module de classe) qui répond presque à ta question

(je coince sur la couleur ...)


(merci pour la question , ca fait cogiter)
 

MJ13

XLDnaute Barbatruc
Re : USF date en module de classe

Bonjour à tous

Merci beaucoup Staple. Pour un bon début, c'est un bon début.

Je vais regarder dans la journée ta démo.

j'essaierai aussi de voir des tutos sur les modules de classes (je sais je suis ch....), mais n'est ce pas une des meilleure façon d'apprendre?

Je vous tiens au courant.
 

MJ13

XLDnaute Barbatruc
Re : USF date en module de classe

Re Bonjour staple, le forum

Merci, la on commence a avoir matière pour tarvailler.

Pour ton fichier, j'ai modifié les true en false et j'ai modifié la ligne Object.BackColor
Code:
'colonne C
With Me.Controls.Add("Forms.TextBox.1", "CTextBox" & j)
    '.Object.BackColor = &HFF00&
    .Object.BackColor = ActiveSheet.Range("c" & j).Interior.Color
    .Left = 150: .Top = 10 + ((j - 1) * 20)
    .Width = 30: .Height = 20
End With
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : USF date en module de classe

Bonjour à tous,

Voici une petite adaptation du code de MichelXLD avec le fichier fait par staple.

Ca commence à me plaire les modules de classe même si je suis au niveau -8 de l'iceberg.
 

Pièces jointes

  • USFClassM(1) modif MJ.zip
    30.7 KB · Affichages: 127

Discussions similaires

  • Résolu(e)
Microsoft 365 planning
Réponses
17
Affichages
885

Statistiques des forums

Discussions
312 679
Messages
2 090 860
Membres
104 677
dernier inscrit
soufiane12