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 :

remplir obligatoirement le champ dans userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 241
    Par défaut remplir obligatoirement le champ dans userform
    Bonjour,

    J'ai 2 questions concernant mon formulaire d'ajout :
    - lorsque je clique sur le bouton nouveau client, j'ai une erreur d'exécution '1004' pourquoi et que doit-je modifier ?
    - Quel code vba doit on utiliser pour remplir obligatoirement dans userform le champ CA sinon un messbox s'affiche disant que le champ montant n'est pas rempli de même pour le champ filleul si dans le champ connaissance, "client" est sélectionné ?

    Je vous joint ci-dessous le fichier, un exemple est beaucoup plus clair

    Cordialement

    Steph

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    1: La sélection d'une plage de cellule sans avoir au préalable sélectionnée la feuille génère cette erreur(Événement Change de Combobox1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Worksheets("Base").Select
    Worksheets("Base").Cells(ComboBox1.ListIndex + 1, 1).Select
    2: Il te faut tester si TextBox_CA est alimentée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If TextBox_CA.Text="" then
         Msgbox "Bla bLa bla"
         Exit sub
    end if

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 241
    Par défaut
    Bonjour et en particulier jFontaine,

    Merci de m'avoir répondu et apporter des réponses, ceci dit je ne parvient pas à corriger mes erreurs.

    Lorsque je clique sur le bouton "ajout client", il y a déjà une nouvelle erreur de code, comment rectifier ? Je me demande ci je n'oublie quelque chose à l'initialisation de l'userform du genre sélection de la feuille (base) et le positionnement sur la dernière ligne vide !

    Avant d'apporter la modification de ligne précédemment cité dans le message de jFontaine, je cliquais sur valider pour ajouter un nouveau client, il y avait déjà une erreur à la ligne "Private Sub CmdValider_Click()", que se passe-t-il et pourquoi ?

    L'autre question, quand je clic sur checkbox achat cela devrait renvoyer sur la nouvelle ligne et dans la colonne D de la feuille base le chiffre 1 sinon rien, j'ai commencer à ecrire un code mais j'avoue que je suis dans le floue.

    Ci-joint le fichier qui peux-etre modifier c'est plus facile pour les débutants.

    Vous remerciant à vous de votre soutient

    Steph

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    De nombreux membres du forum ne peuvent ou ne veulent télécharger de fichiers, donc tu fermes la porte à de nombreuses réponses possibles.

    Il serait bon que tu mettes ton code sur le forum et que tu indiques à quel niveau ce produit l'erreur.

    Fichiers joints dans les discussions

    Philippe

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 241
    Par défaut
    Bonjour,

    Résumé de mes différents problèmes :

    Comment signaler que les données de l'userform seront copier vers la feuille nommé base et sur la prmière ligne vide en se referrant à la colonne A (Clef) et comment incrémenté cette au fur et a mesure de ses enregistrements ?

    Avant d'apporter la modification de ligne précédemment cité dans le message de jFontaine, je cliquais sur valider pour ajouter un nouveau client, il y avait déjà une erreur à la ligne "Private Sub CmdValider_Click()", que se passe-t-il et pourquoi ?

    L'autre question, quand je clic sur checkbox achat cela devrait renvoyer sur la nouvelle ligne et dans la colonne D de la feuille base le chiffre 1 sinon rien, j'ai commencer à ecrire un code mais j'avoue que je suis dans le floue.

    Voici le code (pas au top mais je suis débutant)


    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
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    Private Sub CmdAjouter_Click()
      ligne = Sheets("base").[A65000].End(xlUp).Row + 1
      Me.ComboBox_nom = ""
      Me.TextBox_pro = ""
      Me.CheckBox_Achat = False
      Me.ComboBox_annee = ""
      Me.ComboBox_mois = ""
      Me.TextBox_CA = ""
      Me.ComboBox_connais = ""
      Me.ComboBox_parrainage = ""
      Me.ComboBox_ville = ""
      Me.ComboBox_FAI = ""
      Me.ComboBox_antivirus = ""
    End Sub
     
    Private Sub CmdAnnuler_Click()
    Unload Me
    End Sub
     
    Private Sub CmdValider_Click()
       Sheets("Base").Cells(ligne, 2) = Application.Proper(Me!ComboBox_nom)
       Sheets("Base").Cells(ligne, 3) = Application.Proper(Me.TextBox_pro)
       Sheets("Base").Cells(ligne, 4) = Me.CheckBox_Achat  'OuiNon(Me.Achat)
       Sheets("Base").Cells(ligne, 5) = Me.ComboBox_annee
       Sheets("Base").Cells(ligne, 6) = Me.ComboBox_mois
       Sheets("Base").Cells(ligne, 7) = Me.TextBox_CA
       If TextBox_CA.Text = "" Then
         MsgBox "Le C.A. n'est pas indiqué"
         Exit Sub
    End If
       Sheets("Base").Cells(ligne, 8) = Application.Proper(Me.ComboBox_connais)
       Sheets("Base").Cells(ligne, 9) = Me.ComboBox_parrainage
       Sheets("Base").Cells(ligne, 10) = Application.Proper(Me.ComboBox_ville)
       Sheets("Base").Cells(ligne, 11) = Application.Proper(Me.ComboBox_FAI)
       Sheets("Base").Cells(ligne, 12) = Application.Proper(Me.ComboBox_antivirus)
    End Sub
     
    Private Sub ComboBox_nom_Exit(ByVal Cancel As MSForms.ReturnBoolean)
       If IsError(Application.Match(Me.ComboBox_nom, Range("Listes_clients"), 0)) And Me.ComboBox_nom <> "" Then
         If MsgBox("Etes vous sûr?", vbYesNo) = vbYes Then
           Range("Listes_clients").End(xlDown).Offset(1, 0) = Me.ComboBox_nom
           Range("Listes_clients").Sort Key1:=Range("Listes_clients")(1)
         End If
        End If
    End Sub
    Private Sub ComboBox_annee_Exit(ByVal Cancel As MSForms.ReturnBoolean)
       If IsError(Application.Match(Me.ComboBox_annee, Range("Listes_annee"), 0)) And Me.ComboBox_annee <> "" Then
         If MsgBox("Etes vous sûr?", vbYesNo) = vbYes Then
           Range("Listes_annee").End(xlDown).Offset(1, 0) = Me.ComboBox_annee
           Range("Listes_annee").Sort Key1:=Range("Listes_annee")(1)
         End If
        End If
    End Sub
    Private Sub ComboBox_connais_Exit(ByVal Cancel As MSForms.ReturnBoolean)
       If IsError(Application.Match(Me.ComboBox_connais, Range("Listes_connaissances"), 0)) And Me.ComboBox_connais <> "" Then
         If MsgBox("Etes vous sûr?", vbYesNo) = vbYes Then
           Range("Listes_connaissances").End(xlDown).Offset(1, 0) = Me.ComboBox_connais
           Range("Listes_connaissances").Sort Key1:=Range("Listes_connaissances")(1)
         End If
        End If
    End Sub
     
    Private Sub ComboBox_ville_Exit(ByVal Cancel As MSForms.ReturnBoolean)
       If IsError(Application.Match(Me.ComboBox_ville, Range("Listes_villes"), 0)) And Me.ComboBox_ville <> "" Then
         If MsgBox("Etes vous sûr?", vbYesNo) = vbYes Then
           Range("Listes_villes").End(xlDown).Offset(1, 0) = Me.ComboBox_ville
           Range("Listes_villes").Sort Key1:=Range("Listes_villes")(1)
         End If
        End If
    End Sub
     
    Private Sub ComboBox_FAI_Exit(ByVal Cancel As MSForms.ReturnBoolean)
       If IsError(Application.Match(Me.ComboBox_FAI, Range("Listes_FAI"), 0)) And Me.ComboBox_FAI <> "" Then
         If MsgBox("Etes vous sûr?", vbYesNo) = vbYes Then
           Range("Listes_FAI").End(xlDown).Offset(1, 0) = Me.ComboBox_FAI
           Range("Listes_FAI").Sort Key1:=Range("Listes_FAI")(1)
         End If
        End If
    End Sub
     
    Private Sub ComboBox_antivirus_Exit(ByVal Cancel As MSForms.ReturnBoolean)
       If IsError(Application.Match(Me.ComboBox_antivirus, Range("Listes_antivirus"), 0)) And Me.ComboBox_antivirus <> "" Then
         If MsgBox("Etes vous sûr?", vbYesNo) = vbYes Then
           Range("Listes_antivirus").End(xlDown).Offset(1, 0) = Me.ComboBox_antivirus
           Range("Listes_antivirus").Sort Key1:=Range("Listes_antivirus")(1)
         End If
        End If
    End Sub
     
    Private Sub CheckBox_Achat_Click()
     'Si casse cocher, la valeur 1 sera renvoyer sur la ligne active dans la colonne D de la feuille Base
     If CheckBox_Achat.Value Then
     Range("D").Value = 1
     Else
     Colunms("D").Value = ""
     End If
     End Sub
     
    Private Sub UserForm_Activate()
     If Range("E3").Value Then
     Me.CheckBox_Achat.Value = True
     Else: Me.CheckBox_Achat.Value = False
     End If
     End Sub
     
    Private Sub CmdPremier_Click()
        ComboBox1.ListIndex = 0
    End Sub
     
    Private Sub ComboBox1_Change()
     
        If ComboBox1.ListIndex = -1 Then Exit Sub
     
        Me.CmdPremier.Enabled = True
        Me.CmdPrecedent.Enabled = True
        Me.CmdSuivant.Enabled = True
        Me.CmdDernier.Enabled = True
     
        Select Case ComboBox1.ListIndex
        Case -1
            Me.CmdPremier.Enabled = False
        Case 0
            Me.CmdPrecedent.Enabled = False
            Me.CmdPremier.Enabled = False
        Case ComboBox1.ListCount - 1
            Me.CmdSuivant.Enabled = False
            Me.CmdDernier.Enabled = False
        End Select
     
     Worksheets("Base").Cells(ComboBox1.ListIndex + 1, 1).Select
        Navigue ActiveCell.Row
     
    End Sub
     
    Private Sub CmdPrecedent_Click()
    ComboBox1.ListIndex = ComboBox1.ListIndex - 1
    End Sub
     
    Private Sub CmdSuivant_Click()
    ComboBox1.ListIndex = ComboBox1.ListIndex + 1
    End Sub
     
    Private Sub CmdDernier_Click()
    ComboBox1.ListIndex = ComboBox1.ListCount - 1
    End Sub
    Private Sub Navigue(L As Long)
    Dim i As Byte
     
    With Worksheets("Base")
    For i = 2 To 10
    Me("TextBox" & i) = .Cells(L, i)
    Next
    End With
     
    End Sub
     
    Private Sub UserForm_Initialize()
    ComboBox_mois.ListIndex = Month(Now()) - 1
    ComboBox_annee = Year(Now)
     
    With Worksheets("Base")
    Me.ComboBox1.List = .Range("b2:B" & .Range("A65536").End(xlUp).Row).Value
    Me.ComboBox1.ListIndex = ActiveCell.Row - 1
    End With
    'Range(Sheets("Base").[a2], Sheets("Base").[a65000].End(xlUp))
     
     
    End Sub
    J'ai joint des imprime ecran c'est plus parlant

    Vous remerciant à vous de votre soutient

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Avant d'apporter la modification de ligne précédemment cité dans le message de jFontaine, je cliquais sur valider pour ajouter un nouveau client, il y avait déjà une erreur à la ligne "Private Sub CmdValider_Click()", que se passe-t-il et pourquoi ?
    Vraisemblablement ton erreur se situe dès l'entrée dans la procédure événementielle parce-que tu n'as pas donné de valeur à la variable ligne
    Déplace la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ligne = Sheets("base").[A65000].End(xlUp).Row + 1
    Qui se trouve dans la procédure événementielle CmdAjouter_Click()

    En plaçant en début de module Option Explicit tu détecterais tout de suite ce type d'erreur.
    Tu peux faire en sorte que ce soit automatique pour tout nouveau module inséré en cochant Déclaration des variables obligatoire dans Outils/Options...
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/01/2013, 14h41
  2. [XL-2003] choix du champs dans userform
    Par beta007 dans le forum Excel
    Réponses: 3
    Dernier message: 16/11/2011, 06h59
  3. [AC-97] Remplir "vite" un champ dans tout les records.
    Par Jazz_ dans le forum Modélisation
    Réponses: 3
    Dernier message: 30/07/2010, 11h37
  4. Remplir une liste déroulante à partir d'un champ dans une pop up
    Par wiam26 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/08/2006, 16h42
  5. Remplir automatiquement un champ dans une table
    Par en_stage dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 03/08/2006, 20h57

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