Dans un formulaire de saisie d'articles j'ai une combobox qui remplit 3
textbox. Le problème est quand l'utilsateur saisi un article qui ne se
trouve pas dans la liste, un message d'erreur apparaît : (erreur d'éxécution
"13" incompatibilité de type) et le userform se ferme et l'utilisateur
hurle car il a perdu ses saisies. Est ce possible de permettre la saisie
d'un article inconnu et que les textsbox ne se remplissent pas ou sinon de
prévenir que la saisie n'est pas bonne et de permettre à l'utilisateur de
modifier sa saisie?
Ci-joint mon code:
Private Sub cbodesign_Change() 'remplit automatiquement les txt suivants par
rapport à la selection dans cbodesign
Txttarif.Text = Application.Index(Range("fichierarticles!tarifs"),
Cbodesign.ListIndex + 1)
Txttarif1.Text = Application.Index(Range("fichierarticles!cdt"),
Cbodesign.ListIndex + 1)
Txttarif2.Text = Application.Index(Range("fichierarticles!articles"),
Cbodesign.ListIndex + 1)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pierre Fauconnier
Bonjour
Dans les propriétés du combobox, tu as la propriété Match Required qui, mise à True, empêche la saisie d'une donnée ne se trouvant pas dans le combo. Mais le message indiqué n'est guère attrayant.
Tu peux dès lors utiliser l'évènement Exit du combobox de deux manières, selon l'organisation de tes données.
1. Les donnés du combobox et des textbox sont dans la même feuille, sur la même ligne. PAr exemple, l'ID de l'article en A, le prix 1 en B et le prix 2 en C. Dès lors, remplis ton combobox multicolonne (3 colonnes) avec les données de A, B et C, même si tu n'affiches que la seule colonne A(ColumnWidths avec les valeurs appropriées, par exemple 200;0;0 pour n'afficher que la première colonne). Attention que la première colonne est la colonne d'index 0. Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) TextBox1 = ComboBox1.Column(1) TextBox2 = ComboBox1.Column(2) End Sub
2. Si les données ne sont pas ordonnées de cette façon-là, tu peux rechercher la donnée dans la zone voulue et gérer des décalages de cellule Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim Cellule As Range
Set Cellule = Range("A1:A10").Find(what:=ComboBox1, LookIn:=xlValues, lookat:=xlWhole) If Cellule Is Nothing Then ' Valeur non trouvée Cancel = True ' Annulation de la saisie MsgBox "Valeur non trouvée, veuillez saisir une valeur existante", bvokonly + vbExclamation, "Erreur de saisie" Else TextBox1 = Cellule(1, 2) TextBox2 = Cellule(1, 3) End If
End Sub
Ok?
-- Pierre Fauconnier () "Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe zen ) Remplacez nospam.nospam par pfi.be pour répondre. Merci
"Pierre" a écrit dans le message de news: %23ttn%
Bonjour
Dans un formulaire de saisie d'articles j'ai une combobox qui remplit 3 textbox. Le problème est quand l'utilsateur saisi un article qui ne se trouve pas dans la liste, un message d'erreur apparaît : (erreur d'éxécution "13" incompatibilité de type) et le userform se ferme et l'utilisateur hurle car il a perdu ses saisies. Est ce possible de permettre la saisie d'un article inconnu et que les textsbox ne se remplissent pas ou sinon de prévenir que la saisie n'est pas bonne et de permettre à l'utilisateur de modifier sa saisie?
Ci-joint mon code: Private Sub cbodesign_Change() 'remplit automatiquement les txt suivants par rapport à la selection dans cbodesign Txttarif.Text = Application.Index(Range("fichierarticles!tarifs"), Cbodesign.ListIndex + 1) Txttarif1.Text = Application.Index(Range("fichierarticles!cdt"), Cbodesign.ListIndex + 1) Txttarif2.Text = Application.Index(Range("fichierarticles!articles"), Cbodesign.ListIndex + 1)
Merci à tous Pierre
Bonjour
Dans les propriétés du combobox, tu as la propriété Match Required qui, mise
à True, empêche la saisie d'une donnée ne se trouvant pas dans le combo.
Mais le message indiqué n'est guère attrayant.
Tu peux dès lors utiliser l'évènement Exit du combobox de deux manières,
selon l'organisation de tes données.
1.
Les donnés du combobox et des textbox sont dans la même feuille, sur la même
ligne. PAr exemple, l'ID de l'article en A, le prix 1 en B et le prix 2 en
C.
Dès lors, remplis ton combobox multicolonne (3 colonnes) avec les données de
A, B et C, même si tu n'affiches que la seule colonne A(ColumnWidths avec
les valeurs appropriées, par exemple 200;0;0 pour n'afficher que la première
colonne). Attention que la première colonne est la colonne d'index 0.
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1 = ComboBox1.Column(1)
TextBox2 = ComboBox1.Column(2)
End Sub
2.
Si les données ne sont pas ordonnées de cette façon-là, tu peux rechercher
la donnée dans la zone voulue et gérer des décalages de cellule
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim Cellule As Range
Set Cellule = Range("A1:A10").Find(what:=ComboBox1, LookIn:=xlValues,
lookat:=xlWhole)
If Cellule Is Nothing Then
' Valeur non trouvée
Cancel = True ' Annulation de la saisie
MsgBox "Valeur non trouvée, veuillez saisir une valeur existante",
bvokonly + vbExclamation, "Erreur de saisie"
Else
TextBox1 = Cellule(1, 2)
TextBox2 = Cellule(1, 3)
End If
End Sub
Ok?
--
Pierre Fauconnier (pierre.fauconnier@nospam.nospam)
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci
"Pierre" <pierremat@free.fr> a écrit dans le message de news:
%23ttn%23nbRFHA.2736@TK2MSFTNGP09.phx.gbl...
Bonjour
Dans un formulaire de saisie d'articles j'ai une combobox qui remplit 3
textbox. Le problème est quand l'utilsateur saisi un article qui ne se
trouve pas dans la liste, un message d'erreur apparaît : (erreur
d'éxécution "13" incompatibilité de type) et le userform se ferme et
l'utilisateur hurle car il a perdu ses saisies. Est ce possible de
permettre la saisie d'un article inconnu et que les textsbox ne se
remplissent pas ou sinon de prévenir que la saisie n'est pas bonne et de
permettre à l'utilisateur de modifier sa saisie?
Ci-joint mon code:
Private Sub cbodesign_Change() 'remplit automatiquement les txt suivants
par rapport à la selection dans cbodesign
Txttarif.Text = Application.Index(Range("fichierarticles!tarifs"),
Cbodesign.ListIndex + 1)
Txttarif1.Text = Application.Index(Range("fichierarticles!cdt"),
Cbodesign.ListIndex + 1)
Txttarif2.Text = Application.Index(Range("fichierarticles!articles"),
Cbodesign.ListIndex + 1)
Dans les propriétés du combobox, tu as la propriété Match Required qui, mise à True, empêche la saisie d'une donnée ne se trouvant pas dans le combo. Mais le message indiqué n'est guère attrayant.
Tu peux dès lors utiliser l'évènement Exit du combobox de deux manières, selon l'organisation de tes données.
1. Les donnés du combobox et des textbox sont dans la même feuille, sur la même ligne. PAr exemple, l'ID de l'article en A, le prix 1 en B et le prix 2 en C. Dès lors, remplis ton combobox multicolonne (3 colonnes) avec les données de A, B et C, même si tu n'affiches que la seule colonne A(ColumnWidths avec les valeurs appropriées, par exemple 200;0;0 pour n'afficher que la première colonne). Attention que la première colonne est la colonne d'index 0. Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) TextBox1 = ComboBox1.Column(1) TextBox2 = ComboBox1.Column(2) End Sub
2. Si les données ne sont pas ordonnées de cette façon-là, tu peux rechercher la donnée dans la zone voulue et gérer des décalages de cellule Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim Cellule As Range
Set Cellule = Range("A1:A10").Find(what:=ComboBox1, LookIn:=xlValues, lookat:=xlWhole) If Cellule Is Nothing Then ' Valeur non trouvée Cancel = True ' Annulation de la saisie MsgBox "Valeur non trouvée, veuillez saisir une valeur existante", bvokonly + vbExclamation, "Erreur de saisie" Else TextBox1 = Cellule(1, 2) TextBox2 = Cellule(1, 3) End If
End Sub
Ok?
-- Pierre Fauconnier () "Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe zen ) Remplacez nospam.nospam par pfi.be pour répondre. Merci
"Pierre" a écrit dans le message de news: %23ttn%
Bonjour
Dans un formulaire de saisie d'articles j'ai une combobox qui remplit 3 textbox. Le problème est quand l'utilsateur saisi un article qui ne se trouve pas dans la liste, un message d'erreur apparaît : (erreur d'éxécution "13" incompatibilité de type) et le userform se ferme et l'utilisateur hurle car il a perdu ses saisies. Est ce possible de permettre la saisie d'un article inconnu et que les textsbox ne se remplissent pas ou sinon de prévenir que la saisie n'est pas bonne et de permettre à l'utilisateur de modifier sa saisie?
Ci-joint mon code: Private Sub cbodesign_Change() 'remplit automatiquement les txt suivants par rapport à la selection dans cbodesign Txttarif.Text = Application.Index(Range("fichierarticles!tarifs"), Cbodesign.ListIndex + 1) Txttarif1.Text = Application.Index(Range("fichierarticles!cdt"), Cbodesign.ListIndex + 1) Txttarif2.Text = Application.Index(Range("fichierarticles!articles"), Cbodesign.ListIndex + 1)
Merci à tous Pierre
anonymousA
bonjour,
autre possibilité, mettre la propriété Style de ton combobox à 2-fmstyledropdownlist auquel cas, on ne peut rien saisir d'autre que ce qu'il y a dans le combobox. Sous la condition précédente, tu peux même si tu souhaites accelerer la saisie en jouant sur la propriété MatchEntry de ce même combobox.
A+
Bonjour
Dans un formulaire de saisie d'articles j'ai une combobox qui remplit 3 textbox. Le problème est quand l'utilsateur saisi un article qui ne se trouve pas dans la liste, un message d'erreur apparaît : (erreur d'éxécution "13" incompatibilité de type) et le userform se ferme et l'utilisateur hurle car il a perdu ses saisies. Est ce possible de permettre la saisie d'un article inconnu et que les textsbox ne se remplissent pas ou sinon de prévenir que la saisie n'est pas bonne et de permettre à l'utilisateur de modifier sa saisie?
Ci-joint mon code: Private Sub cbodesign_Change() 'remplit automatiquement les txt suivants par rapport à la selection dans cbodesign Txttarif.Text = Application.Index(Range("fichierarticles!tarifs"), Cbodesign.ListIndex + 1) Txttarif1.Text = Application.Index(Range("fichierarticles!cdt"), Cbodesign.ListIndex + 1) Txttarif2.Text = Application.Index(Range("fichierarticles!articles"), Cbodesign.ListIndex + 1)
Merci à tous Pierre
bonjour,
autre possibilité, mettre la propriété Style de ton combobox à
2-fmstyledropdownlist auquel cas, on ne peut rien saisir d'autre que ce qu'il
y a dans le combobox.
Sous la condition précédente, tu peux même si tu souhaites accelerer la
saisie en jouant sur la propriété MatchEntry de ce même combobox.
A+
Bonjour
Dans un formulaire de saisie d'articles j'ai une combobox qui remplit 3
textbox. Le problème est quand l'utilsateur saisi un article qui ne se
trouve pas dans la liste, un message d'erreur apparaît : (erreur d'éxécution
"13" incompatibilité de type) et le userform se ferme et l'utilisateur
hurle car il a perdu ses saisies. Est ce possible de permettre la saisie
d'un article inconnu et que les textsbox ne se remplissent pas ou sinon de
prévenir que la saisie n'est pas bonne et de permettre à l'utilisateur de
modifier sa saisie?
Ci-joint mon code:
Private Sub cbodesign_Change() 'remplit automatiquement les txt suivants par
rapport à la selection dans cbodesign
Txttarif.Text = Application.Index(Range("fichierarticles!tarifs"),
Cbodesign.ListIndex + 1)
Txttarif1.Text = Application.Index(Range("fichierarticles!cdt"),
Cbodesign.ListIndex + 1)
Txttarif2.Text = Application.Index(Range("fichierarticles!articles"),
Cbodesign.ListIndex + 1)
autre possibilité, mettre la propriété Style de ton combobox à 2-fmstyledropdownlist auquel cas, on ne peut rien saisir d'autre que ce qu'il y a dans le combobox. Sous la condition précédente, tu peux même si tu souhaites accelerer la saisie en jouant sur la propriété MatchEntry de ce même combobox.
A+
Bonjour
Dans un formulaire de saisie d'articles j'ai une combobox qui remplit 3 textbox. Le problème est quand l'utilsateur saisi un article qui ne se trouve pas dans la liste, un message d'erreur apparaît : (erreur d'éxécution "13" incompatibilité de type) et le userform se ferme et l'utilisateur hurle car il a perdu ses saisies. Est ce possible de permettre la saisie d'un article inconnu et que les textsbox ne se remplissent pas ou sinon de prévenir que la saisie n'est pas bonne et de permettre à l'utilisateur de modifier sa saisie?
Ci-joint mon code: Private Sub cbodesign_Change() 'remplit automatiquement les txt suivants par rapport à la selection dans cbodesign Txttarif.Text = Application.Index(Range("fichierarticles!tarifs"), Cbodesign.ListIndex + 1) Txttarif1.Text = Application.Index(Range("fichierarticles!cdt"), Cbodesign.ListIndex + 1) Txttarif2.Text = Application.Index(Range("fichierarticles!articles"), Cbodesign.ListIndex + 1)
Merci à tous Pierre
Pierre
Bonsoir,
Je vous remercie Pierre et Anonymous, j'ai testé les 2 solutions et c'est ok. Je vais avoir des utilisateurs contents (si c'est possible d'avoir un jour un utilisateur content...!)
Bonne soirée Pierre
"Pierre" a écrit dans le message de news: %23ttn%
Bonjour
Dans un formulaire de saisie d'articles j'ai une combobox qui remplit 3 textbox. Le problème est quand l'utilsateur saisi un article qui ne se trouve pas dans la liste, un message d'erreur apparaît : (erreur d'éxécution "13" incompatibilité de type) et le userform se ferme et l'utilisateur hurle car il a perdu ses saisies. Est ce possible de permettre la saisie d'un article inconnu et que les textsbox ne se remplissent pas ou sinon de prévenir que la saisie n'est pas bonne et de permettre à l'utilisateur de modifier sa saisie?
Ci-joint mon code: Private Sub cbodesign_Change() 'remplit automatiquement les txt suivants par rapport à la selection dans cbodesign Txttarif.Text = Application.Index(Range("fichierarticles!tarifs"), Cbodesign.ListIndex + 1) Txttarif1.Text = Application.Index(Range("fichierarticles!cdt"), Cbodesign.ListIndex + 1) Txttarif2.Text = Application.Index(Range("fichierarticles!articles"), Cbodesign.ListIndex + 1)
Merci à tous Pierre
Bonsoir,
Je vous remercie Pierre et Anonymous, j'ai testé les 2 solutions et c'est
ok. Je vais avoir des utilisateurs contents (si c'est possible d'avoir un
jour un utilisateur content...!)
Bonne soirée
Pierre
"Pierre" <pierremat@free.fr> a écrit dans le message de news:
%23ttn%23nbRFHA.2736@TK2MSFTNGP09.phx.gbl...
Bonjour
Dans un formulaire de saisie d'articles j'ai une combobox qui remplit 3
textbox. Le problème est quand l'utilsateur saisi un article qui ne se
trouve pas dans la liste, un message d'erreur apparaît : (erreur
d'éxécution "13" incompatibilité de type) et le userform se ferme et
l'utilisateur hurle car il a perdu ses saisies. Est ce possible de
permettre la saisie d'un article inconnu et que les textsbox ne se
remplissent pas ou sinon de prévenir que la saisie n'est pas bonne et de
permettre à l'utilisateur de modifier sa saisie?
Ci-joint mon code:
Private Sub cbodesign_Change() 'remplit automatiquement les txt suivants
par rapport à la selection dans cbodesign
Txttarif.Text = Application.Index(Range("fichierarticles!tarifs"),
Cbodesign.ListIndex + 1)
Txttarif1.Text = Application.Index(Range("fichierarticles!cdt"),
Cbodesign.ListIndex + 1)
Txttarif2.Text = Application.Index(Range("fichierarticles!articles"),
Cbodesign.ListIndex + 1)
Je vous remercie Pierre et Anonymous, j'ai testé les 2 solutions et c'est ok. Je vais avoir des utilisateurs contents (si c'est possible d'avoir un jour un utilisateur content...!)
Bonne soirée Pierre
"Pierre" a écrit dans le message de news: %23ttn%
Bonjour
Dans un formulaire de saisie d'articles j'ai une combobox qui remplit 3 textbox. Le problème est quand l'utilsateur saisi un article qui ne se trouve pas dans la liste, un message d'erreur apparaît : (erreur d'éxécution "13" incompatibilité de type) et le userform se ferme et l'utilisateur hurle car il a perdu ses saisies. Est ce possible de permettre la saisie d'un article inconnu et que les textsbox ne se remplissent pas ou sinon de prévenir que la saisie n'est pas bonne et de permettre à l'utilisateur de modifier sa saisie?
Ci-joint mon code: Private Sub cbodesign_Change() 'remplit automatiquement les txt suivants par rapport à la selection dans cbodesign Txttarif.Text = Application.Index(Range("fichierarticles!tarifs"), Cbodesign.ListIndex + 1) Txttarif1.Text = Application.Index(Range("fichierarticles!cdt"), Cbodesign.ListIndex + 1) Txttarif2.Text = Application.Index(Range("fichierarticles!articles"), Cbodesign.ListIndex + 1)