OVH Cloud OVH Cloud

Debogage d'un combobox

5 réponses
Avatar
michir
Bonjour,
Tout d'abord merci à michdenis pour sa réponse.
Mon problème aujourd'hui est un débogage que je ne comprends pas.
Voici ma procédure pour dérouler une liste de régions dans un combobox.
Elle bloque sur la 3ème sub sur : "ChoixRegion = Region.List(Index)"
----------------------------------------
Private Sub Region_Click()
End Sub
----------------------------------------------
Private Sub UserForm_Activate()
Dim DerniereRegion As String
DerniereRegion = Range("AS7").End(xlDown).Address
' Plage de données pour afficher dans liste déroulante
Region.RowSource = "AS7:" & DerniereRegion
' Afficher la première Region de la liste (0)
Region.ListIndex = 0
End Sub
-----------------------------------------------
Private Sub Valider_Click()
ListeDeroulante.Hide
Index = Region.ListIndex
ChoixRegion = Region.List(Index)
' Stockage du résultat dans la cellule Q4 et V1
Range("Q4").Value = ChoixRegion
'Range("V1").Value = ChoixRegion
End Sub
--------------------------------------------------------
Private Sub Annuler_Click()
ListeDeroulante.Hide
End Sub

Merci
Michel,

5 réponses

Avatar
papou
Bonjour
Je n'ai pas suivi tout le fil mais s'il s'agit de récupérer la valeur
présente dans le liste déroulante ChoixRegion, il suffit d'utiliser :
ChoixRegion = Region.Value
Et donc telles quelles ces deux lignes son inutiles :
Index = Region.ListIndex
ChoixRegion = Region.List(Index)
Non ?

De plus je précise que Index est un mot réservé dans VBA.

Cordialement
Pascal

"michir" a écrit dans le message de news:
41835281$0$31232$
Bonjour,
Tout d'abord merci à michdenis pour sa réponse.
Mon problème aujourd'hui est un débogage que je ne comprends pas.
Voici ma procédure pour dérouler une liste de régions dans un combobox.
Elle bloque sur la 3ème sub sur : "ChoixRegion = Region.List(Index)"
----------------------------------------
Private Sub Region_Click()
End Sub
----------------------------------------------
Private Sub UserForm_Activate()
Dim DerniereRegion As String
DerniereRegion = Range("AS7").End(xlDown).Address
' Plage de données pour afficher dans liste déroulante
Region.RowSource = "AS7:" & DerniereRegion
' Afficher la première Region de la liste (0)
Region.ListIndex = 0
End Sub
-----------------------------------------------
Private Sub Valider_Click()
ListeDeroulante.Hide
Index = Region.ListIndex
ChoixRegion = Region.List(Index)
' Stockage du résultat dans la cellule Q4 et V1
Range("Q4").Value = ChoixRegion
'Range("V1").Value = ChoixRegion
End Sub
--------------------------------------------------------
Private Sub Annuler_Click()
ListeDeroulante.Hide
End Sub

Merci
Michel,




Avatar
michir
Merci à papou
J'ai modifié comme ceci, cela ne bogue plus, mais la valeur récupérée ne
s'affiche pas en Q4
Vois-tu pourquoi ?
Merci
Michel


Private Sub UserForm_Activate()
Dim DerniereRegion As String
DerniereRegion = Range("AS7").End(xlDown).Address
' Plage de données pour afficher dans liste déroulante
Region.RowSource = "AS7:" & DerniereRegion
' Afficher la première Region de la liste (0)
Region.ListIndex = 0
End Sub

Private Sub Valider_Click()
ListeDeroulante.Hide
choixregion = Region.Value
' Stockage du résultat dans la cellule Q4
Range("Q4").Value = choixregion
End Sub

"papou" <cestpasbon@çanonplus44.fr> a écrit dans le message de news:

Bonjour
Je n'ai pas suivi tout le fil mais s'il s'agit de récupérer la valeur
présente dans le liste déroulante ChoixRegion, il suffit d'utiliser :
ChoixRegion = Region.Value
Et donc telles quelles ces deux lignes son inutiles :
Index = Region.ListIndex
ChoixRegion = Region.List(Index)
Non ?

De plus je précise que Index est un mot réservé dans VBA.

Cordialement
Pascal

"michir" a écrit dans le message de news:
41835281$0$31232$
Bonjour,
Tout d'abord merci à michdenis pour sa réponse.
Mon problème aujourd'hui est un débogage que je ne comprends pas.
Voici ma procédure pour dérouler une liste de régions dans un combobox.
Elle bloque sur la 3ème sub sur : "ChoixRegion = Region.List(Index)"
----------------------------------------
Private Sub Region_Click()
End Sub
----------------------------------------------
Private Sub UserForm_Activate()
Dim DerniereRegion As String
DerniereRegion = Range("AS7").End(xlDown).Address
' Plage de données pour afficher dans liste déroulante
Region.RowSource = "AS7:" & DerniereRegion
' Afficher la première Region de la liste (0)
Region.ListIndex = 0
End Sub
-----------------------------------------------
Private Sub Valider_Click()
ListeDeroulante.Hide
Index = Region.ListIndex
ChoixRegion = Region.List(Index)
' Stockage du résultat dans la cellule Q4 et V1
Range("Q4").Value = ChoixRegion
'Range("V1").Value = ChoixRegion
End Sub
--------------------------------------------------------
Private Sub Annuler_Click()
ListeDeroulante.Hide
End Sub

Merci
Michel,








Avatar
papou
Re
Ton code fonctionne parfaitement chez moi (Testé sur Excel 2003), si
ListeDeroulante correspond bien au nom de ton Userform.
Peut-être que tu as dans une procédure précédente une ligne
Application.ScreenUpdating = False ?
La feuille devant recevoir la valeur est-elle celle actuellement affichée ?
La cellule Q4 est-elle visible ?
Sinon ?
Ceci étant, si je peux me permettre, dans ton code de l'objet Valider_Click,
tu peux réduire comme ceci :
Private Sub Valider_Click()
ListeDeroulante.Hide
' Stockage du résultat dans la cellule Q4
Range("Q4").Value = Region.Value
End Sub

Cordialement
Pascal

"michir" a écrit dans le message de news:
41835a25$0$24987$
Merci à papou
J'ai modifié comme ceci, cela ne bogue plus, mais la valeur récupérée ne
s'affiche pas en Q4
Vois-tu pourquoi ?
Merci
Michel


Private Sub UserForm_Activate()
Dim DerniereRegion As String
DerniereRegion = Range("AS7").End(xlDown).Address
' Plage de données pour afficher dans liste déroulante
Region.RowSource = "AS7:" & DerniereRegion
' Afficher la première Region de la liste (0)
Region.ListIndex = 0
End Sub

Private Sub Valider_Click()
ListeDeroulante.Hide
choixregion = Region.Value
' Stockage du résultat dans la cellule Q4
Range("Q4").Value = choixregion
End Sub

"papou" <cestpasbon@çanonplus44.fr> a écrit dans le message de news:

Bonjour
Je n'ai pas suivi tout le fil mais s'il s'agit de récupérer la valeur
présente dans le liste déroulante ChoixRegion, il suffit d'utiliser :
ChoixRegion = Region.Value
Et donc telles quelles ces deux lignes son inutiles :
Index = Region.ListIndex
ChoixRegion = Region.List(Index)
Non ?

De plus je précise que Index est un mot réservé dans VBA.

Cordialement
Pascal

"michir" a écrit dans le message de news:
41835281$0$31232$
Bonjour,
Tout d'abord merci à michdenis pour sa réponse.
Mon problème aujourd'hui est un débogage que je ne comprends pas.
Voici ma procédure pour dérouler une liste de régions dans un combobox.
Elle bloque sur la 3ème sub sur : "ChoixRegion = Region.List(Index)"
----------------------------------------
Private Sub Region_Click()
End Sub
----------------------------------------------
Private Sub UserForm_Activate()
Dim DerniereRegion As String
DerniereRegion = Range("AS7").End(xlDown).Address
' Plage de données pour afficher dans liste déroulante
Region.RowSource = "AS7:" & DerniereRegion
' Afficher la première Region de la liste (0)
Region.ListIndex = 0
End Sub
-----------------------------------------------
Private Sub Valider_Click()
ListeDeroulante.Hide
Index = Region.ListIndex
ChoixRegion = Region.List(Index)
' Stockage du résultat dans la cellule Q4 et V1
Range("Q4").Value = ChoixRegion
'Range("V1").Value = ChoixRegion
End Sub
--------------------------------------------------------
Private Sub Annuler_Click()
ListeDeroulante.Hide
End Sub

Merci
Michel,












Avatar
michdenis
Bonjour Michir,

Ce code a le défaut suivant :

Qu'est-ce qui se passe si ton formulaire ouvre et que la feuille active n'est pas celle où sont affichés tes données
avec des lignes de code comme celle-là ? Et bien ton combobox va être vide et cela va foutre le bordel dans tes
procédures générant toute sorte d'erreur !

DerniereRegion = Range("AS7").End(xlDown).Address

ou

Region.RowSource = "AS7:" & DerniereRegion

Pourquoi ne pas spécifier dans ton code la feuille d'où origine tes données !

With worksheets("LaFeuille")
DerniereRegion = .Range("AS7").End(xlDown).Address
End With

Region.RowSource = "LaFeuille!AS7:" & DerniereRegion


Salutations!





"michir" a écrit dans le message de news:41835281$0$31232$
Bonjour,
Tout d'abord merci à michdenis pour sa réponse.
Mon problème aujourd'hui est un débogage que je ne comprends pas.
Voici ma procédure pour dérouler une liste de régions dans un combobox.
Elle bloque sur la 3ème sub sur : "ChoixRegion = Region.List(Index)"
----------------------------------------
Private Sub Region_Click()
End Sub
----------------------------------------------
Private Sub UserForm_Activate()
Dim DerniereRegion As String
DerniereRegion = Range("AS7").End(xlDown).Address
' Plage de données pour afficher dans liste déroulante
Region.RowSource = "AS7:" & DerniereRegion
' Afficher la première Region de la liste (0)
Region.ListIndex = 0
End Sub
-----------------------------------------------
Private Sub Valider_Click()
ListeDeroulante.Hide
Index = Region.ListIndex
ChoixRegion = Region.List(Index)
' Stockage du résultat dans la cellule Q4 et V1
Range("Q4").Value = ChoixRegion
'Range("V1").Value = ChoixRegion
End Sub
--------------------------------------------------------
Private Sub Annuler_Click()
ListeDeroulante.Hide
End Sub

Merci
Michel,
Avatar
michir
Bonsoir Papou et michdenis,
Merci à vous deux, j'ai pris en compte vos conseils et cela fonctionne
parfaitement.
La suite au prochain épisode...
Michel,

"michdenis" a écrit dans le message de news:

Bonjour Michir,

Ce code a le défaut suivant :

Qu'est-ce qui se passe si ton formulaire ouvre et que la feuille active
n'est pas celle où sont affichés tes données

avec des lignes de code comme celle-là ? Et bien ton combobox va être vide
et cela va foutre le bordel dans tes

procédures générant toute sorte d'erreur !

DerniereRegion = Range("AS7").End(xlDown).Address

ou

Region.RowSource = "AS7:" & DerniereRegion

Pourquoi ne pas spécifier dans ton code la feuille d'où origine tes
données !


With worksheets("LaFeuille")
DerniereRegion = .Range("AS7").End(xlDown).Address
End With

Region.RowSource = "LaFeuille!AS7:" & DerniereRegion


Salutations!





"michir" a écrit dans le message de
news:41835281$0$31232$

Bonjour,
Tout d'abord merci à michdenis pour sa réponse.
Mon problème aujourd'hui est un débogage que je ne comprends pas.
Voici ma procédure pour dérouler une liste de régions dans un combobox.
Elle bloque sur la 3ème sub sur : "ChoixRegion = Region.List(Index)"
----------------------------------------
Private Sub Region_Click()
End Sub
----------------------------------------------
Private Sub UserForm_Activate()
Dim DerniereRegion As String
DerniereRegion = Range("AS7").End(xlDown).Address
' Plage de données pour afficher dans liste déroulante
Region.RowSource = "AS7:" & DerniereRegion
' Afficher la première Region de la liste (0)
Region.ListIndex = 0
End Sub
-----------------------------------------------
Private Sub Valider_Click()
ListeDeroulante.Hide
Index = Region.ListIndex
ChoixRegion = Region.List(Index)
' Stockage du résultat dans la cellule Q4 et V1
Range("Q4").Value = ChoixRegion
'Range("V1").Value = ChoixRegion
End Sub
--------------------------------------------------------
Private Sub Annuler_Click()
ListeDeroulante.Hide
End Sub

Merci
Michel,