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 :

Problèmes UserForm [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2016
    Messages : 7
    Par défaut Problèmes UserForm
    Bonjour à toutes et à tous,

    Je suis tout nouveau sur ce forum, et débutant sur VBA.
    Je cherche aujourd'hui de l'aide sur un formulaire UserForm pour lequel je rencontres plusieurs difficultés.
    Ce formulaire sert à compléter un tableau Excel sur plusieurs onglets et est (censé être) construit de la manière suivante :

    Un bouton pour lancer le formulaire (contrôle ActiveX), qui insert une ligne afin d'y effectuer la saisie.

    - Une zone de liste modifiable (ComboBox) permettant de rentrer une information selon le choix sélectionné (dans une cellule particulière).
    - Une zone de saisie afin de rentrer des informations (appliquée sur une cellule particulière).
    - Deux OptionButton afin de rentrer des informations (appliquée sur une cellule particulière).
    - Encore deux OptionButton afin de rentrer des informations (appliquée sur une cellule particulière).
    - Une zone de liste modifiable (ComboBox) permettant de rentrer une information selon le choix sélectionné (dans une cellule particulière également).
    - Une CheckBox afin de déverrouiller le bouton valider (permet de bien vérifier la saisie de ses informations).
    - Un bouton "valider" (CommandButton) qui va tout simplement valider l'entrée et lui appliquer une mise en forme (bouton accessible sous condition d'avoir valider la CheckBox précédente).
    - Un bouton "annuler" (CommandButton) qui va effacer les informations saisie en supprimant la ligne insérée et en remettant à zéro le formulaire.

    Voilà à quoi il ressemble :

    Nom : Untitled.jpg
Affichages : 242
Taille : 49,3 Ko

    Pour infos, les sources pour les liste déroulantes se situent dans un onglet spécifique.

    Je rencontre plusieurs problèmes sur les point suivants :

    - Lorsque je lance le UserForm via le bouton sur la feuille Excel (ActiveX), le checkbox "Données vérifiées" permettant d'accéder au bouton valider est bien décoché, mais le bouton validé est accessible. Comment régler ce problème ?
    - Lorsque je sélectionne une option sur mes OptionButton, la première ligne insérée (lors de la première utilisation du userform lorsqu'on ouvre le fichier) ne les prends pas en compte, mais celle d'après oui. Je vous laisse regarder le code et éventuellement trouver mon erreur mais là je bloque.
    - Comment entrer les informations des listes déroulantes dans les macros ?



    Voilà mon code appliqué au bouton ActiveX :

    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
    Private Sub CommandButton1_Click()
    'Ouvrir le formulaire de saisie
     
     
    Worksheets("Tableau").Rows(6).Select
    Selection.Insert
    With UserForm1
        .Famille_Produit.Text = ""
        .Part_Number.Text = ""
        .SMT.Value = False
        .TMT.Value = False
        .RA.Value = False
        .V.Value = False
        .Plating.Text = ""
     
    End With
    Range("C6") = False
    Range("D6") = False
    UserForm1.Show
     
    End Sub
    Le code me permettant d'avoir la checkbox décoché tout le temps :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Workbook_Open()
     
    UserForm1.CommandButton1.Enabled = False
     
    End Sub


    Voilà mon code UserForm :
    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
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    Private Sub CheckBox1_Click()
     
    'Permet d'activer le bouton "Valider"
     
    If Me.CheckBox1.Value = True Then
            Me.CommandButton1.Enabled = True
        Else
            Me.CommandButton1.Enabled = False
        End If
    End Sub
     
     
    Private Sub CommandButton1_Click()
     
    'Conditions appliquées sur le bouton "valider" (Mise en forme, fermeture userform etc.)
     
    UserForm1.Hide
     
    If Range("C6") = True Then
    Range("C6") = "SMT"
    Else
    Range("C6") = "TMT"
    End If
     
    If Range("D6") = True Then
    Range("D6") = "Right Angle"
    Else
    Range("D6") = "Vertical"
    End If
     
        Range("A6:N31").Select
        Range("N31").Activate
        Selection.Borders(xlDiagonalDown).LineStyle = xlNone
        Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        With Selection.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With Selection.Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With Selection.Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With Selection.Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With Selection.Borders(xlInsideVertical)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With Selection.Borders(xlInsideHorizontal)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        Range("A4:N5").Select
        Range("N4").Activate
        Selection.Borders(xlDiagonalDown).LineStyle = xlNone
        Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        With Selection.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlMedium
        End With
        With Selection.Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlMedium
        End With
        With Selection.Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlMedium
        End With
        With Selection.Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlMedium
        End With
     
    UserForm1.CommandButton1.Enabled = False
    CheckBox1.Value = False
     
    End Sub
     
    Private Sub CommandButton2_Click()
     
    'Conditions appliquées sur le bouton "Annuler".
     
    UserForm1.Hide
    Worksheets("Tableau").Rows(6).Select
    Selection.Delete
     
    End Sub
     
     
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
     
    'Bouton croix = bouton annuler
     
    If CloseMode = 0 Then Cancel = False
     
    UserForm1.CommandButton1.Enabled = False
    CheckBox1.Value = False
    Worksheets("Tableau").Rows(6).Select
    Selection.Delete
     
     
    End Sub

    J'espère trouver de l'aide, et que vous aurez le courage de lire ce (long) message. J'espère ne pas être trop exigent pour un premier message haha.

    Merci par avance,
    Cordialement.

    JulienFBR

  2. #2
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Par défaut
    2 petites choses avant de directement te donner du code :

    1) Ton code n'est vraiment pas clair à cause des CommandButton1, CheckBox1, UserForm1, .... Appelles tes controls par des noms explicites qu'on sache ce à quoi ils font référence exactement, parce que là, on ne sait pas ce qui correspond à quoi.

    2) En ce qui concerne tes CheckBox et autres éléments à initialiser à l'ouverture du UserForm, il te manque le plus important :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Public Sub UserForm_Initialize()
    '''''''''''''''''''''''''C'est ici que tu dois initialiser tout ton UserForm, remplir ou non, cocher ou non, tous tes paramètres par défaut doivent être rédigés ici
    End Sub
    J'espère que tu as compris la base

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2016
    Messages : 7
    Par défaut Merci
    Merci Jeanmidudu,

    J'essaye de remettre le tout au propre et je reviendrais avec la version "correcte".

    Cordialement.

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2016
    Messages : 7
    Par défaut Résolu !
    J'ai finalement réussi à me débrouiller tant bien que mal, merci !

    Cordialement,

    JFa

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

Discussions similaires

  1. Problème Userform ComboBox
    Par jalseth dans le forum Général VBA
    Réponses: 1
    Dernier message: 03/07/2008, 15h51
  2. vba[Excel 2003]Problème userform
    Par stargates dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/07/2007, 15h15
  3. problème utf8 .... help !
    Par lefakir dans le forum Langage
    Réponses: 6
    Dernier message: 27/12/2005, 20h34
  4. Problème réseaux help
    Par LhIaScZkTer dans le forum Hardware
    Réponses: 1
    Dernier message: 24/09/2005, 14h49

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