Signaler

Nombre d'arguments incorrects ou affectation de propriété incorr [Résolu]

Posez votre question ElHamanecer 16Messages postés mardi 11 avril 2017Date d'inscription 26 avril 2017 Dernière intervention - Dernière réponse le 19 avril 2017 à 14:50 par ElHamanecer
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
Afficher la suite 
Utile
+1
plus moins
Donc tu n'as plus l'erreur pour laquelle tu avais posé une question.
Donc la réponse que je t'ai donnée corrigeait bien l'erreur. Alors pourquoi dis-tu qu'elle n'a pas fonctionné ? C'est extrêmement désagréable de se voir répondre "ça n'a pas marché" quand on a donné une réponse correcte.

S'il y a d'autres erreurs dans ton application, c'est un autre problème.
ElHamanecer- 19 avril 2017 à 14:50
C'est vrais que je ne l'avais pas vue sous cet angle.
Merci de ton aide ! Déjà un problème de résolu. Je vais ouvrir un nouveau topique pour savoir ce qu'il manque dans le codage pour avoir les informations dans mon dossier Excel.

Merci encore !
Répondre
Donnez votre avis
Utile
+0
plus moins
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
ElHamanecer- 15 avril 2017 à 03:05
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
Répondre
Donnez votre avis
Utile
+0
plus moins
As-tu toujours l'erreur : "Nombre d'arguments incorrects ou affectation de propriété incorrecte" sur la même ligne ?
ElHamanecer- 18 avril 2017 à 16:25
Désoler pour le temps de réponse, j'étais en déplacement tout le Week-End de Pâque et je n'ais pas eu 5 minutes pour me connecter au site.

Alors quand je lance l'application ( Je vais "PLAY" ) sur Visual Basic Je rentre les informations dans mon Formulaire, je valide et rien ne se passe.. Pas d'erreur ni d'enregistrement des informations sur mon dossier clients de excel.
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !