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 :

UseForm : Utiliser un CommandButton créé Dynamiquement


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
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 34
    Par défaut UseForm : Utiliser un CommandButton créé Dynamiquement
    Bonjour,
    J’ai créer un UserForm (UserForm1)
    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
     Private Sub CommandButton1_Click()
    Dim a As Integer
    nb = TextBox1.Value
     
    Dim dist As Integer
      dist = 20
     
    Dim Compt As Integer
     
    For Compt = 1 To nb
        With UserForm2.Controls.Add("Forms.textbox.1", "Textbox" & Compt, True)
            .Top = dist
            .Left = 10
            .Width = 100
            .Height = 15
            UserForm2.Width = .Width + .Left * 2.5
        End With
        dist = dist + 15
    Next
    UserForm2.Height = dist + 100
    UserForm2.Show
    End Sub
     
    Private Sub UserForm_AddControl(ByVal Control As MSForms.Control)
    MsgBox TypeName(Control) & ": " & Control.Name
    End Sub
    Qui me permet de lancer un autre UserForm (UserForm2)
    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
     Private Sub UserForm_Activate()
    With UserForm2.Controls.Add("Forms.Label.1", "Label1", True)
        .Caption = "Entrer les mots :"
        .Top = 5
        .Left = 10
        .Width = 100
        .Height = 15
    End With
     
    With UserForm2.Controls.Add("Forms.Label.1", "Label2", True)
        .Caption = "Feuille où copier :"
        .Top = UserForm2.Height - 90
        .Left = 10
        .Width = 100
        .Height = 15
    End With
     
    With UserForm2.Controls.Add("Forms.textbox.1", "TextboxFeuille", True)
        .Top = UserForm2.Height - 75
        .Left = 10
        .Width = 100
        .Height = 15
    End With
     
    Dim obj As Control
    Set obj = UserForm2.Controls.Add("Forms.CommandButton.1", "CommandButton1", True)
    With obj
        .Top = UserForm2.Height - 50
        .Width = 50
        .Left = (UserForm2.Width / 2) - (.Width / 2)
        .Height = 25
        .Caption = "Chercher"
    End With
     
    MsgBox UserForm2.Controls("TextboxFeuille").Name
    With UserForm2.CodeModule
        j = .CountOfLines
        .InsertLines j + 1, "Sub " & CommandButton1 & "_Click()"
        .InsertLines j + 2, "call (Button_chercher)"
        .InsertLines j + 3, "End Sub"
    End With
     
     
    End Sub
    Private Sub UserForm_AddControl(ByVal Control As MSForms.Control)
    MsgBox TypeName(Control) & ": " & Control.Name
    End Sub
    Private Sub Button_chercher()
     
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
     
    For i = UserForm1.TextBox2 To UserForm1.TextBox3
        For j = UserForm1.TextBox4 To UserForm1.TextBox5
            For k = 1 To UserForm1.TextBox1
                If Cells(i, j) = UserForm2.Controls("Textbox" & k).Caption Then
                    Cells(i, j).EntireRow.Select
                                Selection.Copy
                                Sheets(UserForm2.Controls("TextboxFeuille").Caption).Activate
                                Cells(cpt + 1, 1).Activate
                                ActiveSheet.Paste
                                cpt = cpt + 1
                End If
            Next
        Next
    Next
    End Sub
    Et mon problème est que je n’arrive pas à utiliser la macro évènementielle du CommandButton1, j’ai essayé plusieurs solutions en cherchant sur internet mais pas moyen...
    Ce bouton permet de lancer la recherche dans la feuille excel des cellules contenant les mots indiqué dans les textbox créer dans le userform2 par le userform1.
    Merci pour vos futures réponses,
    Amicalement 

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu....
    Bonjour
    peut etre a cause de ce qui est en vert qui est absent dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .InsertLines j + 1, "Private Sub" & CommandButton1 & "_Click()"
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 34
    Par défaut
    Bonjour,
    Le problème là c’est que mes .CodeModule et .CountOfLines ne fonctionnent pas, mon programme ne veut pas les lire. DU coup j’ai décidé de passer à plus simple et de placer mon bouton directement ^^
    Voici mon code maintenant :
    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
     Private Sub CommandButton1_Click()
     
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim cpt As Integer
     
    For i = UserForm1.TextBox2.Value To UserForm1.TextBox3.Value
        For j = UserForm1.TextBox4.Value To UserForm1.TextBox5.Value
            For k = 1 To UserForm1.TextBox1.Value
                Sheets("Sheet1").Activate
                If Cells(i, j) = UserForm2.Controls("Textbox" & k).Value Then
                    Cells(i, j).EntireRow.Select
                                Selection.Copy
                                Sheets(UserForm2.Controls("TextboxFeuille").Value).Activate
                                Cells(cpt + 1, 1).Activate
                                ActiveSheet.Paste
                                cpt = cpt + 1
                End If
            Next
        Next
    Next
     
    End Sub
     
    Private Sub UserForm_Activate()
    With UserForm2.Controls.Add("Forms.Label.1", "Label1", True)
        .Caption = "Entrer les mots :"
        .Top = 35
        .Left = 10
        .Width = 100
        .Height = 15
    End With
     
    With UserForm2.Controls.Add("Forms.Label.1", "Label2", True)
        .Caption = "Feuille où copier :"
        .Top = UserForm2.Height - 60
        .Left = 10
        .Width = 100
        .Height = 15
    End With
     
    With UserForm2.Controls.Add("Forms.textbox.1", "TextboxFeuille", True)
        .Top = UserForm2.Height - 45
        .Left = 10
        .Width = 100
        .Height = 15
    End With
     
    End Sub
    Mon problème maintenant c’est dans le code de mon CommandButton1_Click(), la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If Cells(i, j) = UserForm2.Controls("Textbox" & k).Value Then
    J’aimerai qu’il cherche les cellules contenant la valeur de ma textbox mais aussi s’il y a du texte devant et/ou derrière cette valeur dans la cellule.. j’espère m’être fait comprendre :S
    Merci d’avance

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 34
    Par défaut
    Re,
    Problème résolu !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If Cells(i, j).Value Like "**" & UserForm2.Controls("Textbox" & k).Value & "**" Then

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/01/2007, 10h26
  2. [RegEx] utiliser une variable variable (dynamique) dans preg_replace
    Par thibs44 dans le forum Langage
    Réponses: 1
    Dernier message: 18/01/2007, 11h29
  3. Réponses: 2
    Dernier message: 09/06/2006, 13h33
  4. Réponses: 10
    Dernier message: 03/05/2006, 11h34
  5. Utilisation de la mémoire dynamique
    Par Stany dans le forum Windows
    Réponses: 17
    Dernier message: 27/04/2006, 11h39

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