Merci Beaucoup,
Voilà de la saine lecture !!!
Bien Cordialement
Jacques
"JB" a écrit dans le message de news:
Bonjour,
http://boisgontierjacques.free.fr/pages_site/formulairecascade.htm
JB
On 9 sep, 17:17, "Jacques Gronier" wrote:Bonjour,
Dans le cadre d'un suivi de stock, j'ai fait un petit fichier permettant
de
créer des entrées et des sorties, à l'aide d'un Userform.
Le premier combobox, permet grâce à une liste déroulante, dont la source
est
une plage dite "Catalogue", de lire, référence et libellé, j'en
enregistre
la Référence, je souhaiterai pourvoir mettre à disposition sur le
Userform,
le stock correspondant à la référence choisie ( la cellule se trouve en
colonne C du " Catalogue".
Soit en affichant les colonnes 1 et 3 dans le Combobox1, ou par tout
autre
moyen.
Merci d'avance
Bien cordialement
Jacques
Merci Beaucoup,
Voilà de la saine lecture !!!
Bien Cordialement
Jacques
"JB" <boisgontier@hotmail.com> a écrit dans le message de news:
8fbff4b5-009b-49d1-990c-4315a3ed4b41@c37g2000yqi.googlegroups.com...
Bonjour,
http://boisgontierjacques.free.fr/pages_site/formulairecascade.htm
JB
On 9 sep, 17:17, "Jacques Gronier" <nob...@nowhere.com> wrote:
Bonjour,
Dans le cadre d'un suivi de stock, j'ai fait un petit fichier permettant
de
créer des entrées et des sorties, à l'aide d'un Userform.
Le premier combobox, permet grâce à une liste déroulante, dont la source
est
une plage dite "Catalogue", de lire, référence et libellé, j'en
enregistre
la Référence, je souhaiterai pourvoir mettre à disposition sur le
Userform,
le stock correspondant à la référence choisie ( la cellule se trouve en
colonne C du " Catalogue".
Soit en affichant les colonnes 1 et 3 dans le Combobox1, ou par tout
autre
moyen.
Merci d'avance
Bien cordialement
Jacques
Merci Beaucoup,
Voilà de la saine lecture !!!
Bien Cordialement
Jacques
"JB" a écrit dans le message de news:
Bonjour,
http://boisgontierjacques.free.fr/pages_site/formulairecascade.htm
JB
On 9 sep, 17:17, "Jacques Gronier" wrote:Bonjour,
Dans le cadre d'un suivi de stock, j'ai fait un petit fichier permettant
de
créer des entrées et des sorties, à l'aide d'un Userform.
Le premier combobox, permet grâce à une liste déroulante, dont la source
est
une plage dite "Catalogue", de lire, référence et libellé, j'en
enregistre
la Référence, je souhaiterai pourvoir mettre à disposition sur le
Userform,
le stock correspondant à la référence choisie ( la cellule se trouve en
colonne C du " Catalogue".
Soit en affichant les colonnes 1 et 3 dans le Combobox1, ou par tout
autre
moyen.
Merci d'avance
Bien cordialement
Jacques
Bonjour Jacques,
Publie ton application en utilisant une de ces adresses :
cjoint.com ou cijoint.fr et transmets-nous ici l'adresse que
tu auras obtenue ici. Fais disparaître l'information sensible ou
tout ce qui n'est pas pertinent à ton problème.
Assure-toi que la définition de ton problème est bien cernée.
"Jacques" a écrit dans le message de groupe de
discussion :
4abb3a84$0$12651$
Bonjour,
J'avais fait appel à vous concernant des combobox en cascades, lesréponses
reçues, dont je remercie les auteurs, m'ont permis de constater que ma
demande n'était pas bien formulée.
J'ai fait desrecherches et ai trouvé sur EXCELABO ( Merci Misange!), une
methode décrite par Alain Vallon qui correspondait appremment parfaitement
à
ma demande
Le combobox fait apparaitre une liste qui est en colonne A et on y adjoint
deux textBox qui font apparaitre les colonnes B et C correspondant à la
même
ligne.
Dans le formulaire, je permets à l'opérateur de faire des saisie au
"kilomètre" ... et là j'ai un souci cela "bugue" au niveau de la sub
Cbo_change et je suis coincé.
La routine fonctionnait sans les textbox, je vous joins le code, je suis
sûr
que le Bug est gros comme une maison !!!, mais je ne le vois pas...
Je vous joins le bout de code correspondant
Private Sub CboComptes_Change()
TextBoxlibelle.Text = Application.Index(Range("Libellé"),
cboComptes.ListIndex + 1)
TextBoxqtestock.Text = Application.Index(Range("STOCK"),
cboComptes.ListIndex + 1)
End Sub
Private Sub cmdEnregistrerEtFin_Click()
TextBoxlibelle.Text = ""
TextBoxqtestock.Text = ""
If (cboComptes.Value = "" Or IsNull(cboComptes.Value)) Then
MsgBox ("Erreur vous devez choisir une Référence.")
cboComptes.SetFocus
ElseIf (cboMouvements.Value = "" Or IsNull(cboMouvements.Value)) Then
MsgBox ("Erreur vous devez choisir un mouvement.")
cboMouvements.SetFocus
ElseIf (TextLot.Value = "" Or IsNull(TextLot.Value)) Then
MsgBox ("Erreur vous devez choisir un Numéro de LOT.")
txtLot.SelStart = 0
txtLot.SelLength = Len(txtMontant.Text)
txtLot.SetFocus
ElseIf (cboCategories.Value = "" Or IsNull(cboCategories.Value)) Then
MsgBox ("Erreur vous devez choisir une catégorie.")
cboCategories.SetFocus
ElseIf (txtMontant.Text = "" Or IsNull(txtMontant.Text)) Then
MsgBox ("Erreur vous devez entrer une Quantité.")
txtMontant.SetFocus
ElseIf Not (IsNumeric(txtMontant.Text)) Then
MsgBox ("Erreur le montant doit être numérique.")
txtMontant.SelStart = 0
txtMontant.SelLength = Len(txtMontant.Text)
txtMontant.SetFocus
Else
Call Enregistrer
ActiveWorkbook.Worksheets("Journal").Activate
End
End If
End Sub
Private Sub cmdEnregistrerEtSuite_Click()
TextBoxlibelle.Text = ""
TextBoxqtestock.Text = ""
If (cboComptes.Value = "" Or IsNull(cboComptes.Value)) Then
MsgBox ("Erreur vous devez choisir une Référence.")
cboComptes.SetFocus
ElseIf (cboMouvements.Value = "" Or IsNull(cboMouvements.Value)) Then
MsgBox ("Erreur vous devez choisir un mouvement.")
cboMouvements.SetFocus
ElseIf (TextLot.Value = "" Or IsNull(TextLot.Value)) Then
MsgBox ("Erreur vous devez choisir un Numéro de LOT.")
txtLot.SelStart = 0
txtLot.SelLength = Len(txtMontant.Text)
txtLot.SetFocus
ElseIf (cboCategories.Value = "" Or IsNull(cboCategories.Value)) Then
MsgBox ("Erreur vous devez choisir une catégorie.")
cboCategories.SetFocus
ElseIf (txtMontant.Text = "" Or IsNull(txtMontant.Text)) Then
MsgBox ("Erreur vous devez entrer une Quantité.")
txtMontant.SetFocus
ElseIf Not (IsNumeric(txtMontant.Text)) Then
MsgBox ("Erreur le montant doit être numérique.")
txtMontant.SelStart = 0
txtMontant.SelLength = Len(txtMontant.Text)
txtMontant.SetFocus
Else
Call Enregistrer
cboComptes.Value = ""
cboCompetitions.Value = ""
cboMouvements.Value = ""
cboCategories.Value = ""
txtMontant.Text = ""
End If
End Sub
D'avance, je vous remercie du coup de main
Bien Cordialement
Jacques Gronier
"Jacques Gronier" a écrit dans le message de news:
4aa7cb09$0$12630$
Merci Beaucoup,
Voilà de la saine lecture !!!
Bien Cordialement
Jacques
"JB" a écrit dans le message de news:
Bonjour,
http://boisgontierjacques.free.fr/pages_site/formulairecascade.htm
JB
On 9 sep, 17:17, "Jacques Gronier" wrote:Bonjour,
Dans le cadre d'un suivi de stock, j'ai fait un petit fichier permettant
de
créer des entrées et des sorties, à l'aide d'un Userform.
Le premier combobox, permet grâce à une liste déroulante, dont la source
est
une plage dite "Catalogue", de lire, référence et libellé, j'en
enregistre
la Référence, je souhaiterai pourvoir mettre à disposition sur le
Userform,
le stock correspondant à la référence choisie ( la cellule se trouve en
colonne C du " Catalogue".
Soit en affichant les colonnes 1 et 3 dans le Combobox1, ou par tout
autre
moyen.
Merci d'avance
Bien cordialement
Jacques
Bonjour Jacques,
Publie ton application en utilisant une de ces adresses :
cjoint.com ou cijoint.fr et transmets-nous ici l'adresse que
tu auras obtenue ici. Fais disparaître l'information sensible ou
tout ce qui n'est pas pertinent à ton problème.
Assure-toi que la définition de ton problème est bien cernée.
"Jacques" <nobody@nowhere.com> a écrit dans le message de groupe de
discussion :
4abb3a84$0$12651$ba4acef3@news.orange.fr...
Bonjour,
J'avais fait appel à vous concernant des combobox en cascades, lesréponses
reçues, dont je remercie les auteurs, m'ont permis de constater que ma
demande n'était pas bien formulée.
J'ai fait desrecherches et ai trouvé sur EXCELABO ( Merci Misange!), une
methode décrite par Alain Vallon qui correspondait appremment parfaitement
à
ma demande
Le combobox fait apparaitre une liste qui est en colonne A et on y adjoint
deux textBox qui font apparaitre les colonnes B et C correspondant à la
même
ligne.
Dans le formulaire, je permets à l'opérateur de faire des saisie au
"kilomètre" ... et là j'ai un souci cela "bugue" au niveau de la sub
Cbo_change et je suis coincé.
La routine fonctionnait sans les textbox, je vous joins le code, je suis
sûr
que le Bug est gros comme une maison !!!, mais je ne le vois pas...
Je vous joins le bout de code correspondant
Private Sub CboComptes_Change()
TextBoxlibelle.Text = Application.Index(Range("Libellé"),
cboComptes.ListIndex + 1)
TextBoxqtestock.Text = Application.Index(Range("STOCK"),
cboComptes.ListIndex + 1)
End Sub
Private Sub cmdEnregistrerEtFin_Click()
TextBoxlibelle.Text = ""
TextBoxqtestock.Text = ""
If (cboComptes.Value = "" Or IsNull(cboComptes.Value)) Then
MsgBox ("Erreur vous devez choisir une Référence.")
cboComptes.SetFocus
ElseIf (cboMouvements.Value = "" Or IsNull(cboMouvements.Value)) Then
MsgBox ("Erreur vous devez choisir un mouvement.")
cboMouvements.SetFocus
ElseIf (TextLot.Value = "" Or IsNull(TextLot.Value)) Then
MsgBox ("Erreur vous devez choisir un Numéro de LOT.")
txtLot.SelStart = 0
txtLot.SelLength = Len(txtMontant.Text)
txtLot.SetFocus
ElseIf (cboCategories.Value = "" Or IsNull(cboCategories.Value)) Then
MsgBox ("Erreur vous devez choisir une catégorie.")
cboCategories.SetFocus
ElseIf (txtMontant.Text = "" Or IsNull(txtMontant.Text)) Then
MsgBox ("Erreur vous devez entrer une Quantité.")
txtMontant.SetFocus
ElseIf Not (IsNumeric(txtMontant.Text)) Then
MsgBox ("Erreur le montant doit être numérique.")
txtMontant.SelStart = 0
txtMontant.SelLength = Len(txtMontant.Text)
txtMontant.SetFocus
Else
Call Enregistrer
ActiveWorkbook.Worksheets("Journal").Activate
End
End If
End Sub
Private Sub cmdEnregistrerEtSuite_Click()
TextBoxlibelle.Text = ""
TextBoxqtestock.Text = ""
If (cboComptes.Value = "" Or IsNull(cboComptes.Value)) Then
MsgBox ("Erreur vous devez choisir une Référence.")
cboComptes.SetFocus
ElseIf (cboMouvements.Value = "" Or IsNull(cboMouvements.Value)) Then
MsgBox ("Erreur vous devez choisir un mouvement.")
cboMouvements.SetFocus
ElseIf (TextLot.Value = "" Or IsNull(TextLot.Value)) Then
MsgBox ("Erreur vous devez choisir un Numéro de LOT.")
txtLot.SelStart = 0
txtLot.SelLength = Len(txtMontant.Text)
txtLot.SetFocus
ElseIf (cboCategories.Value = "" Or IsNull(cboCategories.Value)) Then
MsgBox ("Erreur vous devez choisir une catégorie.")
cboCategories.SetFocus
ElseIf (txtMontant.Text = "" Or IsNull(txtMontant.Text)) Then
MsgBox ("Erreur vous devez entrer une Quantité.")
txtMontant.SetFocus
ElseIf Not (IsNumeric(txtMontant.Text)) Then
MsgBox ("Erreur le montant doit être numérique.")
txtMontant.SelStart = 0
txtMontant.SelLength = Len(txtMontant.Text)
txtMontant.SetFocus
Else
Call Enregistrer
cboComptes.Value = ""
cboCompetitions.Value = ""
cboMouvements.Value = ""
cboCategories.Value = ""
txtMontant.Text = ""
End If
End Sub
D'avance, je vous remercie du coup de main
Bien Cordialement
Jacques Gronier
"Jacques Gronier" <nobody@nowhere.com> a écrit dans le message de news:
4aa7cb09$0$12630$ba4acef3@news.orange.fr...
Merci Beaucoup,
Voilà de la saine lecture !!!
Bien Cordialement
Jacques
"JB" <boisgontier@hotmail.com> a écrit dans le message de news:
8fbff4b5-009b-49d1-990c-4315a3ed4b41@c37g2000yqi.googlegroups.com...
Bonjour,
http://boisgontierjacques.free.fr/pages_site/formulairecascade.htm
JB
On 9 sep, 17:17, "Jacques Gronier" <nob...@nowhere.com> wrote:
Bonjour,
Dans le cadre d'un suivi de stock, j'ai fait un petit fichier permettant
de
créer des entrées et des sorties, à l'aide d'un Userform.
Le premier combobox, permet grâce à une liste déroulante, dont la source
est
une plage dite "Catalogue", de lire, référence et libellé, j'en
enregistre
la Référence, je souhaiterai pourvoir mettre à disposition sur le
Userform,
le stock correspondant à la référence choisie ( la cellule se trouve en
colonne C du " Catalogue".
Soit en affichant les colonnes 1 et 3 dans le Combobox1, ou par tout
autre
moyen.
Merci d'avance
Bien cordialement
Jacques
Bonjour Jacques,
Publie ton application en utilisant une de ces adresses :
cjoint.com ou cijoint.fr et transmets-nous ici l'adresse que
tu auras obtenue ici. Fais disparaître l'information sensible ou
tout ce qui n'est pas pertinent à ton problème.
Assure-toi que la définition de ton problème est bien cernée.
"Jacques" a écrit dans le message de groupe de
discussion :
4abb3a84$0$12651$
Bonjour,
J'avais fait appel à vous concernant des combobox en cascades, lesréponses
reçues, dont je remercie les auteurs, m'ont permis de constater que ma
demande n'était pas bien formulée.
J'ai fait desrecherches et ai trouvé sur EXCELABO ( Merci Misange!), une
methode décrite par Alain Vallon qui correspondait appremment parfaitement
à
ma demande
Le combobox fait apparaitre une liste qui est en colonne A et on y adjoint
deux textBox qui font apparaitre les colonnes B et C correspondant à la
même
ligne.
Dans le formulaire, je permets à l'opérateur de faire des saisie au
"kilomètre" ... et là j'ai un souci cela "bugue" au niveau de la sub
Cbo_change et je suis coincé.
La routine fonctionnait sans les textbox, je vous joins le code, je suis
sûr
que le Bug est gros comme une maison !!!, mais je ne le vois pas...
Je vous joins le bout de code correspondant
Private Sub CboComptes_Change()
TextBoxlibelle.Text = Application.Index(Range("Libellé"),
cboComptes.ListIndex + 1)
TextBoxqtestock.Text = Application.Index(Range("STOCK"),
cboComptes.ListIndex + 1)
End Sub
Private Sub cmdEnregistrerEtFin_Click()
TextBoxlibelle.Text = ""
TextBoxqtestock.Text = ""
If (cboComptes.Value = "" Or IsNull(cboComptes.Value)) Then
MsgBox ("Erreur vous devez choisir une Référence.")
cboComptes.SetFocus
ElseIf (cboMouvements.Value = "" Or IsNull(cboMouvements.Value)) Then
MsgBox ("Erreur vous devez choisir un mouvement.")
cboMouvements.SetFocus
ElseIf (TextLot.Value = "" Or IsNull(TextLot.Value)) Then
MsgBox ("Erreur vous devez choisir un Numéro de LOT.")
txtLot.SelStart = 0
txtLot.SelLength = Len(txtMontant.Text)
txtLot.SetFocus
ElseIf (cboCategories.Value = "" Or IsNull(cboCategories.Value)) Then
MsgBox ("Erreur vous devez choisir une catégorie.")
cboCategories.SetFocus
ElseIf (txtMontant.Text = "" Or IsNull(txtMontant.Text)) Then
MsgBox ("Erreur vous devez entrer une Quantité.")
txtMontant.SetFocus
ElseIf Not (IsNumeric(txtMontant.Text)) Then
MsgBox ("Erreur le montant doit être numérique.")
txtMontant.SelStart = 0
txtMontant.SelLength = Len(txtMontant.Text)
txtMontant.SetFocus
Else
Call Enregistrer
ActiveWorkbook.Worksheets("Journal").Activate
End
End If
End Sub
Private Sub cmdEnregistrerEtSuite_Click()
TextBoxlibelle.Text = ""
TextBoxqtestock.Text = ""
If (cboComptes.Value = "" Or IsNull(cboComptes.Value)) Then
MsgBox ("Erreur vous devez choisir une Référence.")
cboComptes.SetFocus
ElseIf (cboMouvements.Value = "" Or IsNull(cboMouvements.Value)) Then
MsgBox ("Erreur vous devez choisir un mouvement.")
cboMouvements.SetFocus
ElseIf (TextLot.Value = "" Or IsNull(TextLot.Value)) Then
MsgBox ("Erreur vous devez choisir un Numéro de LOT.")
txtLot.SelStart = 0
txtLot.SelLength = Len(txtMontant.Text)
txtLot.SetFocus
ElseIf (cboCategories.Value = "" Or IsNull(cboCategories.Value)) Then
MsgBox ("Erreur vous devez choisir une catégorie.")
cboCategories.SetFocus
ElseIf (txtMontant.Text = "" Or IsNull(txtMontant.Text)) Then
MsgBox ("Erreur vous devez entrer une Quantité.")
txtMontant.SetFocus
ElseIf Not (IsNumeric(txtMontant.Text)) Then
MsgBox ("Erreur le montant doit être numérique.")
txtMontant.SelStart = 0
txtMontant.SelLength = Len(txtMontant.Text)
txtMontant.SetFocus
Else
Call Enregistrer
cboComptes.Value = ""
cboCompetitions.Value = ""
cboMouvements.Value = ""
cboCategories.Value = ""
txtMontant.Text = ""
End If
End Sub
D'avance, je vous remercie du coup de main
Bien Cordialement
Jacques Gronier
"Jacques Gronier" a écrit dans le message de news:
4aa7cb09$0$12630$
Merci Beaucoup,
Voilà de la saine lecture !!!
Bien Cordialement
Jacques
"JB" a écrit dans le message de news:
Bonjour,
http://boisgontierjacques.free.fr/pages_site/formulairecascade.htm
JB
On 9 sep, 17:17, "Jacques Gronier" wrote:Bonjour,
Dans le cadre d'un suivi de stock, j'ai fait un petit fichier permettant
de
créer des entrées et des sorties, à l'aide d'un Userform.
Le premier combobox, permet grâce à une liste déroulante, dont la source
est
une plage dite "Catalogue", de lire, référence et libellé, j'en
enregistre
la Référence, je souhaiterai pourvoir mettre à disposition sur le
Userform,
le stock correspondant à la référence choisie ( la cellule se trouve en
colonne C du " Catalogue".
Soit en affichant les colonnes 1 et 3 dans le Combobox1, ou par tout
autre
moyen.
Merci d'avance
Bien cordialement
Jacques
Bonjour Jacques,
Pour ton code :
A ) dans le haut de ton formulaire, déclare une variable booléenne Ok
B ) Cette variable va empêcher à la procédure
Private Sub CboComptes_Change()
de s'exécuter lorsque la procédure suivante :
Private Sub cmdEnregistrerEtSuite_Click()
s'exécute et que tu "vides" les contrôles de ton application.
En voulant modifier ce qu'affiche le contrôle "CboComptes"
cela appelle la procédure : Private Sub CboComptes_Change()
et comme celui-là est vide, ta formule cause problème.
C ) ton code contient une référence à un contrôle
cboCompetitions.Value = ""
qui n'existe pas dans ton formulaire.
Le code de ton formulaire :
'-----------------------------------------------------------------------
Dim Ok As Boolean
Private Sub Enregistrer()
Dim classeur As Workbook
Dim dataSheet As Worksheet
Dim uneLigne As Range
Set classeur = ActiveWorkbook
Set dataSheet = classeur.Worksheets("Data")
If Not IsNull(dataSheet) Then
Set uneLigne =
dataSheet.Range("A65536").End(xlUp).EntireRow.Offset(1, 0)
If Not IsNull(uneLigne) Then
dataSheet.Unprotect
uneLigne.Cells(1, 1).Value = cboComptes.Value
uneLigne.Cells(1, 2).Value = TextLot.Text
uneLigne.Cells(1, 3).Value = cboMouvements.Value
uneLigne.Cells(1, 4).Value = cboCategories.Value
uneLigne.Cells(1, 5).Value = txtMontant.Text
dataSheet.Protect
Set classeur = Nothing
Set dataSheet = Nothing
Set uneLigne = Nothing
End If
End If
Set classeur = Nothing
Set dataSheet = Nothing
Set uneLigne = Nothing
End Sub
Private Sub CboComptes_Change()
If Ok = False Then Exit Sub
TextBoxlibelle.Text = Application.Index(Range("Libellé"),
cboComptes.ListIndex + 1)
TextBoxqtestock.Text = Application.Index(Range("STOCK"),
cboComptes.ListIndex + 1)
End Sub
Private Sub cmdEnregistrerEtFin_Click()
If (cboComptes.Value = "" Or IsNull(cboComptes.Value)) Then
MsgBox ("Erreur vous devez choisir une Référence.")
cboComptes.SetFocus
ElseIf (cboMouvements.Value = "" Or IsNull(cboMouvements.Value)) Then
MsgBox ("Erreur vous devez choisir un mouvement.")
cboMouvements.SetFocus
ElseIf (TextLot.Value = "" Or IsNull(TextLot.Value)) Then
MsgBox ("Erreur vous devez choisir un Numéro de LOT.")
txtLot.SelStart = 0
txtLot.SelLength = Len(txtMontant.Text)
txtLot.SetFocus
ElseIf (cboCategories.Value = "" Or IsNull(cboCategories.Value)) Then
MsgBox ("Erreur vous devez choisir une catégorie.")
cboCategories.SetFocus
ElseIf (txtMontant.Text = "" Or IsNull(txtMontant.Text)) Then
MsgBox ("Erreur vous devez entrer une Quantité.")
txtMontant.SetFocus
ElseIf Not (IsNumeric(txtMontant.Text)) Then
MsgBox ("Erreur le montant doit être numérique.")
txtMontant.SelStart = 0
txtMontant.SelLength = Len(txtMontant.Text)
txtMontant.SetFocus
Else
Call Enregistrer
ActiveWorkbook.Worksheets("Journal").Activate
End
End If
End Sub
Private Sub cmdEnregistrerEtSuite_Click()
If (cboComptes.Value = "" Or IsNull(cboComptes.Value)) Then
MsgBox ("Erreur vous devez choisir un compte.")
cboComptes.SetFocus
ElseIf (cboMouvements.Value = "" Or IsNull(cboMouvements.Value)) Then
MsgBox ("Erreur vous devez choisir un mouvement.")
cboMouvements.SetFocus
ElseIf (TextLot.Value = "" Or IsNull(TextLot.Value)) Then
MsgBox ("Erreur vous devez choisir un Numéro de LOT.")
txtLot.SelStart = 0
txtLot.SelLength = Len(txtMontant.Text)
txtLot.SetFocus
'Ce contrôle n'existe pas dans ton formulaire
'cboCompetitions.SetFocus
ElseIf (cboCategories.Value = "" Or IsNull(cboCategories.Value)) Then
MsgBox ("Erreur vous devez choisir une catégorie.")
cboCategories.SetFocus
ElseIf (txtMontant.Text = "" Or IsNull(txtMontant.Text)) Then
MsgBox ("Erreur vous devez entrer un montant.")
txtMontant.SetFocus
ElseIf Not (IsNumeric(txtMontant.Text)) Then
MsgBox ("Erreur le montant doit être numérique.")
txtMontant.SelStart = 0
txtMontant.SelLength = Len(txtMontant.Text)
txtMontant.SetFocus
Else
Ok = False
Call Enregistrer
cboComptes.Value = ""
'Ce contrôle n'existe pas dans ton formulaire
' cboCompetitions.Value = ""
cboMouvements.Value = ""
cboCategories.Value = ""
txtMontant.Text = ""
Ok = True
End If
End Sub
'-----------------------------------------------------------------------
Bonjour Jacques,
Pour ton code :
A ) dans le haut de ton formulaire, déclare une variable booléenne Ok
B ) Cette variable va empêcher à la procédure
Private Sub CboComptes_Change()
de s'exécuter lorsque la procédure suivante :
Private Sub cmdEnregistrerEtSuite_Click()
s'exécute et que tu "vides" les contrôles de ton application.
En voulant modifier ce qu'affiche le contrôle "CboComptes"
cela appelle la procédure : Private Sub CboComptes_Change()
et comme celui-là est vide, ta formule cause problème.
C ) ton code contient une référence à un contrôle
cboCompetitions.Value = ""
qui n'existe pas dans ton formulaire.
Le code de ton formulaire :
'-----------------------------------------------------------------------
Dim Ok As Boolean
Private Sub Enregistrer()
Dim classeur As Workbook
Dim dataSheet As Worksheet
Dim uneLigne As Range
Set classeur = ActiveWorkbook
Set dataSheet = classeur.Worksheets("Data")
If Not IsNull(dataSheet) Then
Set uneLigne =
dataSheet.Range("A65536").End(xlUp).EntireRow.Offset(1, 0)
If Not IsNull(uneLigne) Then
dataSheet.Unprotect
uneLigne.Cells(1, 1).Value = cboComptes.Value
uneLigne.Cells(1, 2).Value = TextLot.Text
uneLigne.Cells(1, 3).Value = cboMouvements.Value
uneLigne.Cells(1, 4).Value = cboCategories.Value
uneLigne.Cells(1, 5).Value = txtMontant.Text
dataSheet.Protect
Set classeur = Nothing
Set dataSheet = Nothing
Set uneLigne = Nothing
End If
End If
Set classeur = Nothing
Set dataSheet = Nothing
Set uneLigne = Nothing
End Sub
Private Sub CboComptes_Change()
If Ok = False Then Exit Sub
TextBoxlibelle.Text = Application.Index(Range("Libellé"),
cboComptes.ListIndex + 1)
TextBoxqtestock.Text = Application.Index(Range("STOCK"),
cboComptes.ListIndex + 1)
End Sub
Private Sub cmdEnregistrerEtFin_Click()
If (cboComptes.Value = "" Or IsNull(cboComptes.Value)) Then
MsgBox ("Erreur vous devez choisir une Référence.")
cboComptes.SetFocus
ElseIf (cboMouvements.Value = "" Or IsNull(cboMouvements.Value)) Then
MsgBox ("Erreur vous devez choisir un mouvement.")
cboMouvements.SetFocus
ElseIf (TextLot.Value = "" Or IsNull(TextLot.Value)) Then
MsgBox ("Erreur vous devez choisir un Numéro de LOT.")
txtLot.SelStart = 0
txtLot.SelLength = Len(txtMontant.Text)
txtLot.SetFocus
ElseIf (cboCategories.Value = "" Or IsNull(cboCategories.Value)) Then
MsgBox ("Erreur vous devez choisir une catégorie.")
cboCategories.SetFocus
ElseIf (txtMontant.Text = "" Or IsNull(txtMontant.Text)) Then
MsgBox ("Erreur vous devez entrer une Quantité.")
txtMontant.SetFocus
ElseIf Not (IsNumeric(txtMontant.Text)) Then
MsgBox ("Erreur le montant doit être numérique.")
txtMontant.SelStart = 0
txtMontant.SelLength = Len(txtMontant.Text)
txtMontant.SetFocus
Else
Call Enregistrer
ActiveWorkbook.Worksheets("Journal").Activate
End
End If
End Sub
Private Sub cmdEnregistrerEtSuite_Click()
If (cboComptes.Value = "" Or IsNull(cboComptes.Value)) Then
MsgBox ("Erreur vous devez choisir un compte.")
cboComptes.SetFocus
ElseIf (cboMouvements.Value = "" Or IsNull(cboMouvements.Value)) Then
MsgBox ("Erreur vous devez choisir un mouvement.")
cboMouvements.SetFocus
ElseIf (TextLot.Value = "" Or IsNull(TextLot.Value)) Then
MsgBox ("Erreur vous devez choisir un Numéro de LOT.")
txtLot.SelStart = 0
txtLot.SelLength = Len(txtMontant.Text)
txtLot.SetFocus
'Ce contrôle n'existe pas dans ton formulaire
'cboCompetitions.SetFocus
ElseIf (cboCategories.Value = "" Or IsNull(cboCategories.Value)) Then
MsgBox ("Erreur vous devez choisir une catégorie.")
cboCategories.SetFocus
ElseIf (txtMontant.Text = "" Or IsNull(txtMontant.Text)) Then
MsgBox ("Erreur vous devez entrer un montant.")
txtMontant.SetFocus
ElseIf Not (IsNumeric(txtMontant.Text)) Then
MsgBox ("Erreur le montant doit être numérique.")
txtMontant.SelStart = 0
txtMontant.SelLength = Len(txtMontant.Text)
txtMontant.SetFocus
Else
Ok = False
Call Enregistrer
cboComptes.Value = ""
'Ce contrôle n'existe pas dans ton formulaire
' cboCompetitions.Value = ""
cboMouvements.Value = ""
cboCategories.Value = ""
txtMontant.Text = ""
Ok = True
End If
End Sub
'-----------------------------------------------------------------------
Bonjour Jacques,
Pour ton code :
A ) dans le haut de ton formulaire, déclare une variable booléenne Ok
B ) Cette variable va empêcher à la procédure
Private Sub CboComptes_Change()
de s'exécuter lorsque la procédure suivante :
Private Sub cmdEnregistrerEtSuite_Click()
s'exécute et que tu "vides" les contrôles de ton application.
En voulant modifier ce qu'affiche le contrôle "CboComptes"
cela appelle la procédure : Private Sub CboComptes_Change()
et comme celui-là est vide, ta formule cause problème.
C ) ton code contient une référence à un contrôle
cboCompetitions.Value = ""
qui n'existe pas dans ton formulaire.
Le code de ton formulaire :
'-----------------------------------------------------------------------
Dim Ok As Boolean
Private Sub Enregistrer()
Dim classeur As Workbook
Dim dataSheet As Worksheet
Dim uneLigne As Range
Set classeur = ActiveWorkbook
Set dataSheet = classeur.Worksheets("Data")
If Not IsNull(dataSheet) Then
Set uneLigne =
dataSheet.Range("A65536").End(xlUp).EntireRow.Offset(1, 0)
If Not IsNull(uneLigne) Then
dataSheet.Unprotect
uneLigne.Cells(1, 1).Value = cboComptes.Value
uneLigne.Cells(1, 2).Value = TextLot.Text
uneLigne.Cells(1, 3).Value = cboMouvements.Value
uneLigne.Cells(1, 4).Value = cboCategories.Value
uneLigne.Cells(1, 5).Value = txtMontant.Text
dataSheet.Protect
Set classeur = Nothing
Set dataSheet = Nothing
Set uneLigne = Nothing
End If
End If
Set classeur = Nothing
Set dataSheet = Nothing
Set uneLigne = Nothing
End Sub
Private Sub CboComptes_Change()
If Ok = False Then Exit Sub
TextBoxlibelle.Text = Application.Index(Range("Libellé"),
cboComptes.ListIndex + 1)
TextBoxqtestock.Text = Application.Index(Range("STOCK"),
cboComptes.ListIndex + 1)
End Sub
Private Sub cmdEnregistrerEtFin_Click()
If (cboComptes.Value = "" Or IsNull(cboComptes.Value)) Then
MsgBox ("Erreur vous devez choisir une Référence.")
cboComptes.SetFocus
ElseIf (cboMouvements.Value = "" Or IsNull(cboMouvements.Value)) Then
MsgBox ("Erreur vous devez choisir un mouvement.")
cboMouvements.SetFocus
ElseIf (TextLot.Value = "" Or IsNull(TextLot.Value)) Then
MsgBox ("Erreur vous devez choisir un Numéro de LOT.")
txtLot.SelStart = 0
txtLot.SelLength = Len(txtMontant.Text)
txtLot.SetFocus
ElseIf (cboCategories.Value = "" Or IsNull(cboCategories.Value)) Then
MsgBox ("Erreur vous devez choisir une catégorie.")
cboCategories.SetFocus
ElseIf (txtMontant.Text = "" Or IsNull(txtMontant.Text)) Then
MsgBox ("Erreur vous devez entrer une Quantité.")
txtMontant.SetFocus
ElseIf Not (IsNumeric(txtMontant.Text)) Then
MsgBox ("Erreur le montant doit être numérique.")
txtMontant.SelStart = 0
txtMontant.SelLength = Len(txtMontant.Text)
txtMontant.SetFocus
Else
Call Enregistrer
ActiveWorkbook.Worksheets("Journal").Activate
End
End If
End Sub
Private Sub cmdEnregistrerEtSuite_Click()
If (cboComptes.Value = "" Or IsNull(cboComptes.Value)) Then
MsgBox ("Erreur vous devez choisir un compte.")
cboComptes.SetFocus
ElseIf (cboMouvements.Value = "" Or IsNull(cboMouvements.Value)) Then
MsgBox ("Erreur vous devez choisir un mouvement.")
cboMouvements.SetFocus
ElseIf (TextLot.Value = "" Or IsNull(TextLot.Value)) Then
MsgBox ("Erreur vous devez choisir un Numéro de LOT.")
txtLot.SelStart = 0
txtLot.SelLength = Len(txtMontant.Text)
txtLot.SetFocus
'Ce contrôle n'existe pas dans ton formulaire
'cboCompetitions.SetFocus
ElseIf (cboCategories.Value = "" Or IsNull(cboCategories.Value)) Then
MsgBox ("Erreur vous devez choisir une catégorie.")
cboCategories.SetFocus
ElseIf (txtMontant.Text = "" Or IsNull(txtMontant.Text)) Then
MsgBox ("Erreur vous devez entrer un montant.")
txtMontant.SetFocus
ElseIf Not (IsNumeric(txtMontant.Text)) Then
MsgBox ("Erreur le montant doit être numérique.")
txtMontant.SelStart = 0
txtMontant.SelLength = Len(txtMontant.Text)
txtMontant.SetFocus
Else
Ok = False
Call Enregistrer
cboComptes.Value = ""
'Ce contrôle n'existe pas dans ton formulaire
' cboCompetitions.Value = ""
cboMouvements.Value = ""
cboCategories.Value = ""
txtMontant.Text = ""
Ok = True
End If
End Sub
'-----------------------------------------------------------------------
| Juste une dernière question, j'abuse:
| cboComptes.Value = ""
| 'Ce contrôle n'existe pas dans ton formulaire
Il me semble avoir indiqué que c'était ce contrôle qui
n'existait pas. Ce que cela veut dire, c'est que tout simplement
que dans ton formulaire, tu n'as pas un contrôle (combobox ou textbox..)
qui porte ce nom (Propriété Name) des objets de ton formulaire.
cboCompetitions.Value = ""
Quoi faire ? si tu n'ajoutes pas de contrôle parce que tu n'en as
pas besoin, tu fais disparaître la ligne de code.
Et si tu désires que ton combobox n'affiche aucune valeur,
En mode création, tu ouvres ton formulaire, tu sélectionnes ton combobox
et dans la fenêtre des propriétés de ce combobox, tu effaces la valeur
de la propriété "Value". Cela devrait être suffisant.
| Juste une dernière question, j'abuse:
| cboComptes.Value = ""
| 'Ce contrôle n'existe pas dans ton formulaire
Il me semble avoir indiqué que c'était ce contrôle qui
n'existait pas. Ce que cela veut dire, c'est que tout simplement
que dans ton formulaire, tu n'as pas un contrôle (combobox ou textbox..)
qui porte ce nom (Propriété Name) des objets de ton formulaire.
cboCompetitions.Value = ""
Quoi faire ? si tu n'ajoutes pas de contrôle parce que tu n'en as
pas besoin, tu fais disparaître la ligne de code.
Et si tu désires que ton combobox n'affiche aucune valeur,
En mode création, tu ouvres ton formulaire, tu sélectionnes ton combobox
et dans la fenêtre des propriétés de ce combobox, tu effaces la valeur
de la propriété "Value". Cela devrait être suffisant.
| Juste une dernière question, j'abuse:
| cboComptes.Value = ""
| 'Ce contrôle n'existe pas dans ton formulaire
Il me semble avoir indiqué que c'était ce contrôle qui
n'existait pas. Ce que cela veut dire, c'est que tout simplement
que dans ton formulaire, tu n'as pas un contrôle (combobox ou textbox..)
qui porte ce nom (Propriété Name) des objets de ton formulaire.
cboCompetitions.Value = ""
Quoi faire ? si tu n'ajoutes pas de contrôle parce que tu n'en as
pas besoin, tu fais disparaître la ligne de code.
Et si tu désires que ton combobox n'affiche aucune valeur,
En mode création, tu ouvres ton formulaire, tu sélectionnes ton combobox
et dans la fenêtre des propriétés de ce combobox, tu effaces la valeur
de la propriété "Value". Cela devrait être suffisant.