OVH Cloud OVH Cloud

combos sur worksheet interagissent bizarrement

2 réponses
Avatar
philippe
Bonjour,

J'ai 3 combos sur une feuille.
J'ai du code derrière chaque combo qui prompte l'utilisateur pour entrer une
nouvelle valeur quand il a cliqué "Autre"
évènement déclenchant le code : j'ai essayé change et click... mais avec le
même résultat.

Problème :
J'ai parfois l'input box qui se manifeste deux fois au lieu d'une.
Autre problème : mon code doit renvoyer le nouvel item de liste dans le
combo : ça ne marche presque jamais : et c'est le presque qui tue !

Voici le code :

' gérer les "Autres" pour les listes déroulantes bénéficiaires
Private Sub cmbSelectFoncBenef_Click()
DerLigne = Sheets("AutresSources").Range("Liste_Fonction").Rows.Count
If cmbSelectFoncBenef.Value = "Autre…" Then
valeurNouvelle = InputBox("Autre... précisez...", "Quelle autre FONCTION ?")
Sheets("AutresSources").Range("Liste_Fonction").Cells(DerLigne, 1).Value =
valeurNouvelle
cmbSelectFoncBenef.Value = valeurNouvelle
End If
End Sub

Private Sub cmbSelectServBenef_Click()
DerLigne = Sheets("AutresSources").Range("Liste_Service").Rows.Count
If cmbSelectServBenef.Value = "Autre…" Then
valeurNouvelle = InputBox("Autre... précisez...", "Quelle autre SERVICE ?")
Sheets("AutresSources").Range("Liste_Service").Cells(DerLigne, 1).Value =
valeurNouvelle
cmbSelectServBenef.Value = valeurNouvelle
End If
End Sub

Private Sub cmbSelectPoleBenef_Click()
DerLigne = Sheets("AutresSources").Range("Liste_Pole").Rows.Count
If cmbSelectPoleBenef.Value = "Autre…" Then
valeurNouvelle = InputBox("Autre... précisez...", "Quelle autre POLE ?")
Sheets("AutresSources").Range("Liste_Pole").Cells(DerLigne, 1).Value =
valeurNouvelle
cmbSelectPoleBenef.Value = valeurNouvelle
End If
End Sub

Merci à tous,
Phlippe

2 réponses

Avatar
Daniel
Bonjour.
Si ton classeur ne contient pas de données confidentielles, peux-tu le
mettre sur www.cjoint.com ?
Cordialement.
Daniel
"philippe" a écrit dans le message de
news:
Bonjour,

J'ai 3 combos sur une feuille.
J'ai du code derrière chaque combo qui prompte l'utilisateur pour entrer
une
nouvelle valeur quand il a cliqué "Autre"
évènement déclenchant le code : j'ai essayé change et click... mais avec
le
même résultat.

Problème :
J'ai parfois l'input box qui se manifeste deux fois au lieu d'une.
Autre problème : mon code doit renvoyer le nouvel item de liste dans le
combo : ça ne marche presque jamais : et c'est le presque qui tue !

Voici le code :

' gérer les "Autres" pour les listes déroulantes bénéficiaires
Private Sub cmbSelectFoncBenef_Click()
DerLigne = Sheets("AutresSources").Range("Liste_Fonction").Rows.Count
If cmbSelectFoncBenef.Value = "Autre." Then
valeurNouvelle = InputBox("Autre... précisez...", "Quelle autre FONCTION
?")
Sheets("AutresSources").Range("Liste_Fonction").Cells(DerLigne, 1).Value > valeurNouvelle
cmbSelectFoncBenef.Value = valeurNouvelle
End If
End Sub

Private Sub cmbSelectServBenef_Click()
DerLigne = Sheets("AutresSources").Range("Liste_Service").Rows.Count
If cmbSelectServBenef.Value = "Autre." Then
valeurNouvelle = InputBox("Autre... précisez...", "Quelle autre SERVICE
?")
Sheets("AutresSources").Range("Liste_Service").Cells(DerLigne, 1).Value > valeurNouvelle
cmbSelectServBenef.Value = valeurNouvelle
End If
End Sub

Private Sub cmbSelectPoleBenef_Click()
DerLigne = Sheets("AutresSources").Range("Liste_Pole").Rows.Count
If cmbSelectPoleBenef.Value = "Autre." Then
valeurNouvelle = InputBox("Autre... précisez...", "Quelle autre POLE ?")
Sheets("AutresSources").Range("Liste_Pole").Cells(DerLigne, 1).Value > valeurNouvelle
cmbSelectPoleBenef.Value = valeurNouvelle
End If
End Sub

Merci à tous,
Phlippe


Avatar
philippe
Merci Daniel.

J'ai "trouvé" la solution... mais je ne comprends pas pourquoi.
J'ai inversé l'ordre des propostions a) et b) et maintenant ça marche
(a) Sheets("AutresSources").Range("Liste_Service").Cells(DerLigne, 1).Value
= valeurNouvelle
(b) cmbSelectServBenef.Value = valeurNouvelle

Mais je ne comprends pas.
avec (a) : je rajoute la nouvelle valeur dans la source du combo : une range
de cellules
avec (b) : j'alloue au combo cette nouvelle valeur

On dirait que l'élément click ou change arrive une deuxième fois après
l'exécution de la ligne (a). Et comme dans mon ordre original, le combo a
toujours "autre" comme valeur, il me ressert l'input box.

Intéressant non ?


Bonjour.
Si ton classeur ne contient pas de données confidentielles, peux-tu le
mettre sur www.cjoint.com ?
Cordialement.
Daniel
"philippe" a écrit dans le message de
news:
Bonjour,

J'ai 3 combos sur une feuille.
J'ai du code derrière chaque combo qui prompte l'utilisateur pour entrer
une
nouvelle valeur quand il a cliqué "Autre"
évènement déclenchant le code : j'ai essayé change et click... mais avec
le
même résultat.

Problème :
J'ai parfois l'input box qui se manifeste deux fois au lieu d'une.
Autre problème : mon code doit renvoyer le nouvel item de liste dans le
combo : ça ne marche presque jamais : et c'est le presque qui tue !

Voici le code :

' gérer les "Autres" pour les listes déroulantes bénéficiaires
Private Sub cmbSelectFoncBenef_Click()
DerLigne = Sheets("AutresSources").Range("Liste_Fonction").Rows.Count
If cmbSelectFoncBenef.Value = "Autre." Then
valeurNouvelle = InputBox("Autre... précisez...", "Quelle autre FONCTION
?")
Sheets("AutresSources").Range("Liste_Fonction").Cells(DerLigne, 1).Value > > valeurNouvelle
cmbSelectFoncBenef.Value = valeurNouvelle
End If
End Sub

Private Sub cmbSelectServBenef_Click()
DerLigne = Sheets("AutresSources").Range("Liste_Service").Rows.Count
If cmbSelectServBenef.Value = "Autre." Then
valeurNouvelle = InputBox("Autre... précisez...", "Quelle autre SERVICE
?")
Sheets("AutresSources").Range("Liste_Service").Cells(DerLigne, 1).Value > > valeurNouvelle
cmbSelectServBenef.Value = valeurNouvelle
End If
End Sub

Private Sub cmbSelectPoleBenef_Click()
DerLigne = Sheets("AutresSources").Range("Liste_Pole").Rows.Count
If cmbSelectPoleBenef.Value = "Autre." Then
valeurNouvelle = InputBox("Autre... précisez...", "Quelle autre POLE ?")
Sheets("AutresSources").Range("Liste_Pole").Cells(DerLigne, 1).Value > > valeurNouvelle
cmbSelectPoleBenef.Value = valeurNouvelle
End If
End Sub

Merci à tous,
Phlippe