Problèmme = erreur de complitation : Sub ou function non définie
Bonjour,
Je suis novice en programmation et je commence à m'intéresser à la programmation en VBA. Je rencontre actuellement un problème dont je n'arrive à pas comprendre la cause. J'ai créé un formulaire avec un useform afin de me remplir une feuille automatiquement. Dans mon useform j'arrive à faire afficher les informations désirer mais lorsque je lance la commande d'ajout automatique pour envoyer les informations à la feuille excel j'ai un message d'erreur "problème de compliation : sub ou fonction non définie".
Je voudrais donc savoir quelle erreur ai-je commise s'il vous plâit.
Merci,
St quantique.
code
'Boutton commande envoi la liste au tableau bon de commande
Private Sub Cmd_commander_Click()
'Déclaration des variables
Dim nombre_ligne As Integer
Dim ligne As Integer
Dim y As Integer
'Ajout des lignes du tableau dans la base de donnée
If Me.List_order.ListCount > 0 And Me.Cbx_fournisseur > 0 Then
If msbox("Voulez-vous passer la commande?", vbYesNo) = vbYes Then
nombre_ligne = Me.List_order.ListCount - 1
For ligne = 0 To nombre_ligne
Sheets(3).listojects(1).ListRow.Add
dl = Sheets(3).Range("b9999").End(xlUp).Row
Sheets(3).Range("b" & y) = Me.Label_info.Caption
Sheets(3).Range("c" & y) = CDate(Now())
Sheets(3).Range("d" & y) = Me.List_order.List(ligne, 0)
Sheets(3).Range("e" & y) = Me.List_order.List(ligne, 1)
Sheets(3).Range("g" & y) = CCur(Me.List_order.List(ligne, 2))
Sheets(3).Range("f" & y) = CInt(Me.List_order.List(ligne, 3))
Sheets(3).Range("i" & y) = Me.Cbx_fournisseur
Next ligne
Sheets(8).Range("d20") = Sheets(8).Range("d20") + 1
Unload Add_order
End If
Else
MsgBox "Aucune commande possible"
End If
End Sub
bonjour,
1) merci de mettre ton code entre balise </>
2) sur quelle instruction as-tu le message d'erreur ?
3) mettre un fichier dans lequel on peut reproduire l'erreur aide grandement pour obtenir de l'aide.
Rebonjour,
Merci de ta réponse voici je ne sais pas de quel instruction viens le problème car c'est le private sub cmd_commander_click () qui est surlingé en jaune. Est qu'il faut je transmette mon fichier ?
Je met le code entre balise ci-dessus
<'Boutton commande envoi la liste au tableau bon de commande
Private Sub Cmd_commander_Click()
'Déclaration des variables
Dim nombre_ligne As Integer
Dim ligne As Integer
Dim y As Integer
'Ajout des lignes du tableau dans la base de donnée
If Me.List_order.ListCount > 0 And Me.Cbx_fournisseur > 0 Then
If msbox("Voulez-vous passer la commande?", vbYesNo) = vbYes Then
nombre_ligne = Me.List_order.ListCount - 1
For ligne = 0 To nombre_ligne
Sheets(3).listojects(1).ListRow.Add
dl = Sheets(3).Range("b9999").End(xlUp).Row
Sheets(3).Range("b" & y) = Me.Label_info.Caption
Sheets(3).Range("c" & y) = CDate(Now())
Sheets(3).Range("d" & y) = Me.List_order.List(ligne, 0)
Sheets(3).Range("e" & y) = Me.List_order.List(ligne, 1)
Sheets(3).Range("g" & y) = CCur(Me.List_order.List(ligne, 2))
Sheets(3).Range("f" & y) = CInt(Me.List_order.List(ligne, 3))
Sheets(3).Range("i" & y) = Me.Cbx_fournisseur
Next ligne
Sheets(8).Range("d20") = Sheets(8).Range("d20") + 1
Unload Add_order
End If
Else
MsgBox "Aucune commande possible"
End If
End Sub>
'Boutton commande envoi la liste au tableau bon de commande
Private Sub Cmd_commander_Click()
'Déclaration des variables
Dim nombre_ligne As Integer
Dim ligne As Integer
Dim y As Integer
'Ajout des lignes du tableau dans la base de donnée
If Me.List_order.ListCount > 0 And Me.Cbx_fournisseur > 0 Then
If msbox("Voulez-vous passer la commande?", vbYesNo) = vbYes Then
nombre_ligne = Me.List_order.ListCount - 1
For ligne = 0 To nombre_ligne
Sheets(3).listojects(1).ListRow.Add
dl = Sheets(3).Range("b9999").End(xlUp).Row
Sheets(3).Range("b" & y) = Me.Label_info.Caption
Sheets(3).Range("c" & y) = CDate(Now())
Sheets(3).Range("d" & y) = Me.List_order.List(ligne, 0)
Sheets(3).Range("e" & y) = Me.List_order.List(ligne, 1)
Sheets(3).Range("g" & y) = CCur(Me.List_order.List(ligne, 2))
Sheets(3).Range("f" & y) = CInt(Me.List_order.List(ligne, 3))
Sheets(3).Range("i" & y) = Me.Cbx_fournisseur
Next ligne
Sheets(8).Range("d20") = Sheets(8).Range("d20") + 1
Unload Add_order
End If
Else
MsgBox "Aucune commande possible"
End If
End SubJ'ai fais un mauvais copier coller du code voici le bon
'boutton commande commander
Private Sub Cmd_commander_Click()
Dim nombre_ligne As Integer
Dim ligne As Integer
Dim DL As Integer
If Me.List_order.ListCount > 0 And Me.Cbx_fournisseur.ListIndex >= 0 Then
'Demander une confirmation de la commande
If MsgBox("Voluez-vous passer la commande?", vbYesNo) = vbYes Then
nombre_ligne = Me.List_order.ListCount - 1
For ligne = 0 To nombre_ligne
Sheets(3).ListObjects(1).ListRows.Add
DL = Sheets(3).Range("b9999").End(xlUp).Row
'Afficher les information dans la base de donnée bon de commande
sheeets(3).Range("B" & DL) = Me.Label_info.Caption
sheeets(3).Range("C" & DL) = CDate(Now())
sheeets(3).Range("D" & DL) = Me.List_order.List(ligne, 0)
sheeets(3).Range("E" & DL) = Me.List_order.List(ligne, 1)
sheeets(3).Range("G" & DL) = CCur(Me.List_order.List(ligne, 2))
sheeets(3).Range("F" & DL) = CInt(Me.List_order.List(ligne, 3))
Sheets(3).Range("I" & DL) = Me.Cbx_fournisseur
Next ligne
Sheets(8).Range("d20") = Sheets(8).Range("d20") + 1
Unload Add_order
End If
Else
MsgBox "pas de commande disponible"
End If
End Subbonjour,
je suppose que l'erreur vient de e en trop dans ces instructions sheeets utilise sheets à la place
sheeets(3).Range("B" & DL) = Me.Label_info.Caption
sheeets(3).Range("C" & DL) = CDate(Now())
sheeets(3).Range("D" & DL) = Me.List_order.List(ligne, 0)
sheeets(3).Range("E" & DL) = Me.List_order.List(ligne, 1)
sheeets(3).Range("G" & DL) = CCur(Me.List_order.List(ligne, 2))
sheeets(3).Range("F" & DL) = CInt(Me.List_order.List(ligne, 3))
Sheets(3).Range("I" & DL) = Me.Cbx_fournisseurMerci beaucoup le code fonctionne maintenant