Nombre d'arguments incorrects ou affectation de propriété incorr

Résolu/Fermé
ElHamanecer Messages postés 16 Date d'inscription mardi 11 avril 2017 Statut Membre Dernière intervention 26 avril 2017 - 14 avril 2017 à 02:02
 ElHamanecer - 19 avril 2017 à 14:50
Bonjour,

Je me lance dans la création d'un petit logiciel pour mon entreprise.

Le concept :

Créer une page d'accueil avec 4 boutons :

- Nouveau Client ( Qui me dirige vers un formulaire)
- Rendez-vous
- Planning
- Facturation

Aujourd'hui, j'attaque la première parti, le formulaire (Nouveau Client). Celui ci est déjà terminé. Cependant, je rencontre un problème lors de la validation de l'inscription dans la base de donné, j'ai un message d'erreur " Nombre d'arguments incorrects ou affectation de propriété incorrecte " et le Client n'est malheureusement pas enregistré.

étant très novice dans ce domaine, je ne serais résoudre le problème à moi seul dans les plus bref délai c'est pour cela que j'ai besoin de votre aide.

LE CODE


'Pour Le Formulaire
Dim Ws As Worksheet



'Civilité
'***********************************************************************************************

Private Sub userform_initialize()

    ComboBox1.ColumnCount = 1
    ComboBox1.List() = Array("", "M.", "Mme.", "Mlle.")
    Set Ws = Sheets("Clients") 'Correspond au nom de l'onglet excel


End Sub

'***********************************************************************************************



'Pour le Bouton Nouveau client

Private Sub CommandButton1_Click()

    Dim L As Integer
    If MsgBox("Confirmez-vous l'inscription de ce nouveau client ?", vbYesNo, "Demande de confimation d'ajout") = vbYes Then
    L = Sheets("Clients").Range("A" & Rows.Count).End(xlUp).Row + 1 'Pour enregistrer les informations clients sur la dernière ligne
    Range("A" & L).Value = ComboBox1
    Range("B" & L).Value = txtnom
    Range("C" & L).Value = txtprenom
    Range("D" & L).Value = txtrace
    Range("E" & L).Value = txtcp
    Range("F" & L).Value = txtmail
    
    Dim J As Long
    Dim I As Integer
    
    ComboBox1.Clear
    Set Ws = Sheets("Clients")
    With Me.ComboBox1
    
    For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
    .AddItem Ws.Range("A" & J)
    Next J
    
    For I = 1 To 8 'on lance une boucle de valeur mini 1 et maxi 8
    Me.Controls("txtnom", "txtprenom", "txtmail", "txttel", "txtcp", "txtrace" & I).Visible = True 'affiche les données dans les textbox
    Next I
    End With
    
    Else
    'Rien
    
    End If


End Sub


'Pour Quitter

Private Sub CommandButton2_Click()

    Unload Me
    

End Sub





IMAGE








MERCI D'AVANCE ! :D

3 réponses

Utilisateur anonyme
14 avril 2017 à 07:22
Bonjour

Me.Controls("txtnom", "txtprenom", "txtmail", "txttel", "txtcp", "txtrace" & I) est incorrect. Cela ne signifie rien en VBA. Je suppose que tu veux manipuler plusieurs controles à la fois, mais ce n'est pas possible en vba, il faut les traiter un par un :
Me.Controls("txtnom")
Me.Controls("txtprenom")
...
Donc dans ton cas :
Me.Controls("txtnom").Visible=true
Me.Controls("txtprenom").Visible=true
...
For I = 1 To 8 'on lance une boucle de valeur mini 1 et maxi 8
    Me.Controls("txtrace" & I).Visible = True 'affiche les données dans les textbox
    Next I

ou

For I = 1 To 8 'on lance une boucle de valeur mini 1 et maxi 8
Me.Controls("txtnom" & I).Visible=true
Me.Controls("txtprenom" & I).Visible=true
...
    Me.Controls("txtrace" & I).Visible = True 'affiche les données dans les textbox
    Next I

selon ce que tu cherches vraiment à faire
1
Merci de ta réponse, malheureusement en essayant les modifications que tu ma conseillé, mais ça n'a pas fonctionné.


Private Sub CommandButton1_Click()

Dim L As Integer
If MsgBox("Confirmez-vous l'inscription de ce nouveau client ?", vbYesNo, "Demande de confimation d'ajout") = vbYes Then
L = Sheets("Clients").Range("A" & Rows.Count).End(xlUp).Row + 1 'Pour enregistrer les informations clients sur la dernière ligne
Range("A" & L).Value = ComboBox1
Range("B" & L).Value = txtnom
Range("C" & L).Value = txtprenom
Range("D" & L).Value = txtrace
Range("E" & L).Value = txtcp
Range("F" & L).Value = txtmail

Dim J As Long
Dim I As Integer

ComboBox1.Clear
Set Ws = Sheets("Clients")
With Me.ComboBox1

For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J

For I = 1 To 8 'on lance une boucle de valeur mini 1 et maxi 8
Me.Controls("txtnom" & I).Visible = True
Me.Controls("txtprenom" & I).Visible = True
Me.Controls("txtrace" & I).Visible = True
Me.Controls("txtcp" & I).Visible = True
Me.Controls("txtmail" & I).Visible = True
Next I
End With

Else
'Rien

End If


End Sub
0