Bonjour à tous
Je veux lorsque OptionButton2 = True utiliser ces Combobox pour faire des
CHOIX dans ma BD et alimenter mes 3 Lisbox ( choixnom ; ChoixOeuvre ;
ChoixDisque )
Mon Userform est initialisé avec :
Private Sub UserForm_Initialize()
….
CHOIX = Général
End Sub
Mes Combobox sont nommés ( Compositeurs ; Types ; …)
La partie Else de cette Macro avec le combo Compositeurs fonctionne ainsi
que la suite :
Private Sub Compositeurs_Change()
If Formulaire.OptionButton2.Value = False Then
...
Else
'Mettre à jour la listeBox choixnom et y mettre le choix fait avec le
Combobox Compositeurs
CHOIX = CompositeurChoisi
If Me.Compositeurs.Value <> "" Then
Me.choixnom.Clear
Me.choixnom.List = Array(Compositeurs.Value)
Formulaire.choixnom.ListIndex = 0
Else
'ne rien faire
End If
End If
End Sub
Alors que celle avec le combo Types commence bien car elle liste bien toutes
les oeuvres (si je choisi sonate j’obtiens toutes les sonates ) avec :
Private Sub Types_Change()
...
Else 'cas où je veux une aide au choix dans la BD
CHOIX = TypeChoisi
If Me.Types.Value <> "" Then
Set f = Sheets("BD")
Me.choixnom.Clear
Me.ChoixOeuvre.Clear
Me.ChoixDisque.Clear
Set MonDico = CreateObject("Scripting.Dictionary")
For Each C In f.Range("C2", f.[C65000].End(xlUp))
If Left(C.Value, Len(Types.Value)) = Types.Value And Not
MonDico.Exists(C.Value) Then MonDico.Add C.Value, C.Value
Next C
Formulaire.ChoixOeuvre.List = MonDico.items
If Formulaire.ChoixOeuvre.ListCount > 0 Then
If Formulaire.ChoixOeuvre.ListIndex = -1 Then
Formulaire.ChoixOeuvre.ListIndex = 0 ‘ ceci déclanche la macro
ChoixOeuvre_Clik
End If
End If
Range("essai").Value = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex)
'ne marche pas ?
Else
'ne rien faire
End If
End If
End Sub
Mais elle se plante ensuite bizarrement sur : A =
Me.choixnom.List(Me.choixnom.ListIndex) de la macro suivante
Du Case Général alors que nous devrions être dans Case TypeChoisi ???
Private Sub ChoixOeuvre_Click()
...
Select Case CHOIX
Case Général
T = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex)
T = Replace(T, "'", "''")
A = Me.choixnom.List(Me.choixnom.ListIndex) 'ce plante bizarrement ici
dans le cas TypeChoisi ???
Me.ChoixDisque.Clear
Requete = "SELECT Image From [" & NomFeuille & "$] Where Auteur like "
& "'" & A & "' And Œuvre like " & "'" & T & "' Group By Image"
Controle = "ChoixDisque"
MaRequêteAvecADO Controle, Requete
If Me.ChoixDisque.ListCount > 0 Then
If Me.ChoixDisque.ListIndex = -1 Then
Me.ChoixDisque.ListIndex = 0
End If
Else
ChoixDisque_Click
End If
Case TypeChoisi
Me.choixnom.Clear 'déjà fait mais utile si chgt choix oeuvre
T = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex)
T = Replace(T, "'", "''")
Controle = "choixnom"
Requete = "SELECT Auteur From [" & NomFeuille & "$] Where Œuvre like " & _
"'" & T & "' Group By Auteur"
MaRequêteAvecADO Controle, Requete
If Me.choixnom.ListCount > 0 Then
If Me.choixnom.ListIndex = -1 Then
Me.choixnom.ListIndex = 0
End If
Else
ChoixDisque_Click
' choixnom_Click
End If
Range("essai2").Value = Me.choixnom.List(Me.ChoixOeuvre.ListIndex)
Case CompositeurChoisi
T = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex)
T = Replace(T, "'", "''")
A = Me.choixnom.List(Me.choixnom.ListIndex)
Me.ChoixDisque.Clear
Requete = "SELECT Image From [" & NomFeuille & "$] Where Auteur like "
& "'" & A & "' And Œuvre like " & "'" & T & "' Group By Image"
Controle = "ChoixDisque"
MaRequêteAvecADO Controle, Requete
If Me.ChoixDisque.ListCount > 0 Then
If Me.ChoixDisque.ListIndex = -1 Then
Me.ChoixDisque.ListIndex = 0
End If
Else
ChoixDisque_Click
End If
....
Case Else
ChoixDisque_Click
End Select
End Sub
Qui peut m’expliquer ce mystère ?
http://cjoint.com/?jiqxMvLJnL
à + j’espère
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
Xavier
j'ai pas eu le temps de bien regarder mais il est normal que ça plante puisque Me.choixnom est préalablement clear et donc que Me.choixnom est vide et Me.choixnom.ListIndex=-1 donc Me.choixnom.List(Me.choixnom.ListIndex) n'existe pas et ne peut être égal à A
Xavier
Jean-Paul V a écrit :
Bonjour à tous Je veux lorsque OptionButton2 = True utiliser ces Combobox pour faire des CHOIX dans ma BD et alimenter mes 3 Lisbox ( choixnom ; ChoixOeuvre ; ChoixDisque ) Mon Userform est initialisé avec : Private Sub UserForm_Initialize() …. CHOIX = Général End Sub
Mes Combobox sont nommés ( Compositeurs ; Types ; …) La partie Else de cette Macro avec le combo Compositeurs fonctionne ainsi que la suite : Private Sub Compositeurs_Change() If Formulaire.OptionButton2.Value = False Then ... Else 'Mettre à jour la listeBox choixnom et y mettre le choix fait avec le Combobox Compositeurs CHOIX = CompositeurChoisi If Me.Compositeurs.Value <> "" Then Me.choixnom.Clear Me.choixnom.List = Array(Compositeurs.Value) Formulaire.choixnom.ListIndex = 0 Else 'ne rien faire End If End If End Sub Alors que celle avec le combo Types commence bien car elle liste bien toutes les oeuvres (si je choisi sonate j’obtiens toutes les sonates ) avec : Private Sub Types_Change() ... Else 'cas où je veux une aide au choix dans la BD CHOIX = TypeChoisi If Me.Types.Value <> "" Then Set f = Sheets("BD") Me.choixnom.Clear Me.ChoixOeuvre.Clear Me.ChoixDisque.Clear Set MonDico = CreateObject("Scripting.Dictionary") For Each C In f.Range("C2", f.[C65000].End(xlUp)) If Left(C.Value, Len(Types.Value)) = Types.Value And Not MonDico.Exists(C.Value) Then MonDico.Add C.Value, C.Value Next C Formulaire.ChoixOeuvre.List = MonDico.items If Formulaire.ChoixOeuvre.ListCount > 0 Then If Formulaire.ChoixOeuvre.ListIndex = -1 Then Formulaire.ChoixOeuvre.ListIndex = 0 ‘ ceci déclanche la macro ChoixOeuvre_Clik End If End If Range("essai").Value = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex) 'ne marche pas ? Else 'ne rien faire End If End If End Sub Mais elle se plante ensuite bizarrement sur : A = Me.choixnom.List(Me.choixnom.ListIndex) de la macro suivante Du Case Général alors que nous devrions être dans Case TypeChoisi ??? Private Sub ChoixOeuvre_Click() ... Select Case CHOIX Case Général T = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex) T = Replace(T, "'", "''") A = Me.choixnom.List(Me.choixnom.ListIndex) 'ce plante bizarrement ici dans le cas TypeChoisi ??? Me.ChoixDisque.Clear Requete = "SELECT Image From [" & NomFeuille & "$] Where Auteur like " & "'" & A & "' And Œuvre like " & "'" & T & "' Group By Image" Controle = "ChoixDisque" MaRequêteAvecADO Controle, Requete If Me.ChoixDisque.ListCount > 0 Then If Me.ChoixDisque.ListIndex = -1 Then Me.ChoixDisque.ListIndex = 0 End If Else ChoixDisque_Click End If
Case TypeChoisi Me.choixnom.Clear 'déjà fait mais utile si chgt choix oeuvre T = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex) T = Replace(T, "'", "''") Controle = "choixnom" Requete = "SELECT Auteur From [" & NomFeuille & "$] Where Œuvre like " & _ "'" & T & "' Group By Auteur" MaRequêteAvecADO Controle, Requete If Me.choixnom.ListCount > 0 Then If Me.choixnom.ListIndex = -1 Then Me.choixnom.ListIndex = 0 End If Else ChoixDisque_Click ' choixnom_Click End If Range("essai2").Value = Me.choixnom.List(Me.ChoixOeuvre.ListIndex)
Case CompositeurChoisi T = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex) T = Replace(T, "'", "''") A = Me.choixnom.List(Me.choixnom.ListIndex) Me.ChoixDisque.Clear Requete = "SELECT Image From [" & NomFeuille & "$] Where Auteur like " & "'" & A & "' And Œuvre like " & "'" & T & "' Group By Image" Controle = "ChoixDisque" MaRequêteAvecADO Controle, Requete If Me.ChoixDisque.ListCount > 0 Then If Me.ChoixDisque.ListIndex = -1 Then Me.ChoixDisque.ListIndex = 0 End If Else ChoixDisque_Click End If
.... Case Else ChoixDisque_Click End Select End Sub Qui peut m’expliquer ce mystère ? http://cjoint.com/?jiqxMvLJnL à + j’espère
j'ai pas eu le temps de bien regarder mais il est normal que ça plante
puisque Me.choixnom est préalablement clear et donc que Me.choixnom est
vide et Me.choixnom.ListIndex=-1
donc Me.choixnom.List(Me.choixnom.ListIndex) n'existe pas et ne peut
être égal à A
Xavier
Jean-Paul V a écrit :
Bonjour à tous
Je veux lorsque OptionButton2 = True utiliser ces Combobox pour faire des
CHOIX dans ma BD et alimenter mes 3 Lisbox ( choixnom ; ChoixOeuvre ;
ChoixDisque )
Mon Userform est initialisé avec :
Private Sub UserForm_Initialize()
….
CHOIX = Général
End Sub
Mes Combobox sont nommés ( Compositeurs ; Types ; …)
La partie Else de cette Macro avec le combo Compositeurs fonctionne ainsi
que la suite :
Private Sub Compositeurs_Change()
If Formulaire.OptionButton2.Value = False Then
...
Else
'Mettre à jour la listeBox choixnom et y mettre le choix fait avec le
Combobox Compositeurs
CHOIX = CompositeurChoisi
If Me.Compositeurs.Value <> "" Then
Me.choixnom.Clear
Me.choixnom.List = Array(Compositeurs.Value)
Formulaire.choixnom.ListIndex = 0
Else
'ne rien faire
End If
End If
End Sub
Alors que celle avec le combo Types commence bien car elle liste bien toutes
les oeuvres (si je choisi sonate j’obtiens toutes les sonates ) avec :
Private Sub Types_Change()
...
Else 'cas où je veux une aide au choix dans la BD
CHOIX = TypeChoisi
If Me.Types.Value <> "" Then
Set f = Sheets("BD")
Me.choixnom.Clear
Me.ChoixOeuvre.Clear
Me.ChoixDisque.Clear
Set MonDico = CreateObject("Scripting.Dictionary")
For Each C In f.Range("C2", f.[C65000].End(xlUp))
If Left(C.Value, Len(Types.Value)) = Types.Value And Not
MonDico.Exists(C.Value) Then MonDico.Add C.Value, C.Value
Next C
Formulaire.ChoixOeuvre.List = MonDico.items
If Formulaire.ChoixOeuvre.ListCount > 0 Then
If Formulaire.ChoixOeuvre.ListIndex = -1 Then
Formulaire.ChoixOeuvre.ListIndex = 0 ‘ ceci déclanche la macro
ChoixOeuvre_Clik
End If
End If
Range("essai").Value = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex)
'ne marche pas ?
Else
'ne rien faire
End If
End If
End Sub
Mais elle se plante ensuite bizarrement sur : A =
Me.choixnom.List(Me.choixnom.ListIndex) de la macro suivante
Du Case Général alors que nous devrions être dans Case TypeChoisi ???
Private Sub ChoixOeuvre_Click()
...
Select Case CHOIX
Case Général
T = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex)
T = Replace(T, "'", "''")
A = Me.choixnom.List(Me.choixnom.ListIndex) 'ce plante bizarrement ici
dans le cas TypeChoisi ???
Me.ChoixDisque.Clear
Requete = "SELECT Image From [" & NomFeuille & "$] Where Auteur like "
& "'" & A & "' And Œuvre like " & "'" & T & "' Group By Image"
Controle = "ChoixDisque"
MaRequêteAvecADO Controle, Requete
If Me.ChoixDisque.ListCount > 0 Then
If Me.ChoixDisque.ListIndex = -1 Then
Me.ChoixDisque.ListIndex = 0
End If
Else
ChoixDisque_Click
End If
Case TypeChoisi
Me.choixnom.Clear 'déjà fait mais utile si chgt choix oeuvre
T = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex)
T = Replace(T, "'", "''")
Controle = "choixnom"
Requete = "SELECT Auteur From [" & NomFeuille & "$] Where Œuvre like " & _
"'" & T & "' Group By Auteur"
MaRequêteAvecADO Controle, Requete
If Me.choixnom.ListCount > 0 Then
If Me.choixnom.ListIndex = -1 Then
Me.choixnom.ListIndex = 0
End If
Else
ChoixDisque_Click
' choixnom_Click
End If
Range("essai2").Value = Me.choixnom.List(Me.ChoixOeuvre.ListIndex)
Case CompositeurChoisi
T = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex)
T = Replace(T, "'", "''")
A = Me.choixnom.List(Me.choixnom.ListIndex)
Me.ChoixDisque.Clear
Requete = "SELECT Image From [" & NomFeuille & "$] Where Auteur like "
& "'" & A & "' And Œuvre like " & "'" & T & "' Group By Image"
Controle = "ChoixDisque"
MaRequêteAvecADO Controle, Requete
If Me.ChoixDisque.ListCount > 0 Then
If Me.ChoixDisque.ListIndex = -1 Then
Me.ChoixDisque.ListIndex = 0
End If
Else
ChoixDisque_Click
End If
....
Case Else
ChoixDisque_Click
End Select
End Sub
Qui peut m’expliquer ce mystère ?
http://cjoint.com/?jiqxMvLJnL
à + j’espère
j'ai pas eu le temps de bien regarder mais il est normal que ça plante puisque Me.choixnom est préalablement clear et donc que Me.choixnom est vide et Me.choixnom.ListIndex=-1 donc Me.choixnom.List(Me.choixnom.ListIndex) n'existe pas et ne peut être égal à A
Xavier
Jean-Paul V a écrit :
Bonjour à tous Je veux lorsque OptionButton2 = True utiliser ces Combobox pour faire des CHOIX dans ma BD et alimenter mes 3 Lisbox ( choixnom ; ChoixOeuvre ; ChoixDisque ) Mon Userform est initialisé avec : Private Sub UserForm_Initialize() …. CHOIX = Général End Sub
Mes Combobox sont nommés ( Compositeurs ; Types ; …) La partie Else de cette Macro avec le combo Compositeurs fonctionne ainsi que la suite : Private Sub Compositeurs_Change() If Formulaire.OptionButton2.Value = False Then ... Else 'Mettre à jour la listeBox choixnom et y mettre le choix fait avec le Combobox Compositeurs CHOIX = CompositeurChoisi If Me.Compositeurs.Value <> "" Then Me.choixnom.Clear Me.choixnom.List = Array(Compositeurs.Value) Formulaire.choixnom.ListIndex = 0 Else 'ne rien faire End If End If End Sub Alors que celle avec le combo Types commence bien car elle liste bien toutes les oeuvres (si je choisi sonate j’obtiens toutes les sonates ) avec : Private Sub Types_Change() ... Else 'cas où je veux une aide au choix dans la BD CHOIX = TypeChoisi If Me.Types.Value <> "" Then Set f = Sheets("BD") Me.choixnom.Clear Me.ChoixOeuvre.Clear Me.ChoixDisque.Clear Set MonDico = CreateObject("Scripting.Dictionary") For Each C In f.Range("C2", f.[C65000].End(xlUp)) If Left(C.Value, Len(Types.Value)) = Types.Value And Not MonDico.Exists(C.Value) Then MonDico.Add C.Value, C.Value Next C Formulaire.ChoixOeuvre.List = MonDico.items If Formulaire.ChoixOeuvre.ListCount > 0 Then If Formulaire.ChoixOeuvre.ListIndex = -1 Then Formulaire.ChoixOeuvre.ListIndex = 0 ‘ ceci déclanche la macro ChoixOeuvre_Clik End If End If Range("essai").Value = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex) 'ne marche pas ? Else 'ne rien faire End If End If End Sub Mais elle se plante ensuite bizarrement sur : A = Me.choixnom.List(Me.choixnom.ListIndex) de la macro suivante Du Case Général alors que nous devrions être dans Case TypeChoisi ??? Private Sub ChoixOeuvre_Click() ... Select Case CHOIX Case Général T = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex) T = Replace(T, "'", "''") A = Me.choixnom.List(Me.choixnom.ListIndex) 'ce plante bizarrement ici dans le cas TypeChoisi ??? Me.ChoixDisque.Clear Requete = "SELECT Image From [" & NomFeuille & "$] Where Auteur like " & "'" & A & "' And Œuvre like " & "'" & T & "' Group By Image" Controle = "ChoixDisque" MaRequêteAvecADO Controle, Requete If Me.ChoixDisque.ListCount > 0 Then If Me.ChoixDisque.ListIndex = -1 Then Me.ChoixDisque.ListIndex = 0 End If Else ChoixDisque_Click End If
Case TypeChoisi Me.choixnom.Clear 'déjà fait mais utile si chgt choix oeuvre T = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex) T = Replace(T, "'", "''") Controle = "choixnom" Requete = "SELECT Auteur From [" & NomFeuille & "$] Where Œuvre like " & _ "'" & T & "' Group By Auteur" MaRequêteAvecADO Controle, Requete If Me.choixnom.ListCount > 0 Then If Me.choixnom.ListIndex = -1 Then Me.choixnom.ListIndex = 0 End If Else ChoixDisque_Click ' choixnom_Click End If Range("essai2").Value = Me.choixnom.List(Me.ChoixOeuvre.ListIndex)
Case CompositeurChoisi T = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex) T = Replace(T, "'", "''") A = Me.choixnom.List(Me.choixnom.ListIndex) Me.ChoixDisque.Clear Requete = "SELECT Image From [" & NomFeuille & "$] Where Auteur like " & "'" & A & "' And Œuvre like " & "'" & T & "' Group By Image" Controle = "ChoixDisque" MaRequêteAvecADO Controle, Requete If Me.ChoixDisque.ListCount > 0 Then If Me.ChoixDisque.ListIndex = -1 Then Me.ChoixDisque.ListIndex = 0 End If Else ChoixDisque_Click End If
.... Case Else ChoixDisque_Click End Select End Sub Qui peut m’expliquer ce mystère ? http://cjoint.com/?jiqxMvLJnL à + j’espère
Jean-Paul V
Bonjour Xavier
Si vous regardez à nouveau dans le Case TypeChoisi il n'y a pas de : A = Me.choixnom.List(Me.choixnom.ListIndex) la question est pourquoi la macro s'obstine à exécuter Case Général dans ChoixOeuvre Dans Private Sub Types_Change() après les : Me.choixnom.Clear Me.ChoixOeuvre.Clear Me.ChoixDisque.Clear j'ai essayé d'ajouter un CHOIX = TypeChoisi au cas où un des 3 clear m'aurait changé mon CHOIX rien à faire il s'obstine à éxécuter Case Général dans ChoixOeuvre_Click Bonne journée
-- Jean-Paul V
"Xavier" wrote:
j'ai pas eu le temps de bien regarder mais il est normal que ça plante puisque Me.choixnom est préalablement clear et donc que Me.choixnom est vide et Me.choixnom.ListIndex=-1 donc Me.choixnom.List(Me.choixnom.ListIndex) n'existe pas et ne peut être égal à A
Xavier
Jean-Paul V a écrit : > Bonjour à tous > Je veux lorsque OptionButton2 = True utiliser ces Combobox pour faire des > CHOIX dans ma BD et alimenter mes 3 Lisbox ( choixnom ; ChoixOeuvre ; > ChoixDisque ) > Mon Userform est initialisé avec : > Private Sub UserForm_Initialize() > …. > CHOIX = Général > End Sub > > Mes Combobox sont nommés ( Compositeurs ; Types ; …) > La partie Else de cette Macro avec le combo Compositeurs fonctionne ainsi > que la suite : > Private Sub Compositeurs_Change() > If Formulaire.OptionButton2.Value = False Then > ... > Else > 'Mettre à jour la listeBox choixnom et y mettre le choix fait avec le > Combobox Compositeurs > CHOIX = CompositeurChoisi > If Me.Compositeurs.Value <> "" Then > Me.choixnom.Clear > Me.choixnom.List = Array(Compositeurs.Value) > Formulaire.choixnom.ListIndex = 0 > Else > 'ne rien faire > End If > End If > End Sub > Alors que celle avec le combo Types commence bien car elle liste bien toutes > les oeuvres (si je choisi sonate j’obtiens toutes les sonates ) avec : > Private Sub Types_Change() > ... > Else 'cas où je veux une aide au choix dans la BD > CHOIX = TypeChoisi > If Me.Types.Value <> "" Then > Set f = Sheets("BD") > Me.choixnom.Clear > Me.ChoixOeuvre.Clear > Me.ChoixDisque.Clear > Set MonDico = CreateObject("Scripting.Dictionary") > For Each C In f.Range("C2", f.[C65000].End(xlUp)) > If Left(C.Value, Len(Types.Value)) = Types.Value And Not > MonDico.Exists(C.Value) Then MonDico.Add C.Value, C.Value > Next C > Formulaire.ChoixOeuvre.List = MonDico.items > If Formulaire.ChoixOeuvre.ListCount > 0 Then > If Formulaire.ChoixOeuvre.ListIndex = -1 Then > Formulaire.ChoixOeuvre.ListIndex = 0 ‘ ceci déclanche la macro > ChoixOeuvre_Clik > End If > End If > Range("essai").Value = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex) > 'ne marche pas ? > Else > 'ne rien faire > End If > End If > End Sub > Mais elle se plante ensuite bizarrement sur : A = > Me.choixnom.List(Me.choixnom.ListIndex) de la macro suivante > Du Case Général alors que nous devrions être dans Case TypeChoisi ??? > Private Sub ChoixOeuvre_Click() > ... > Select Case CHOIX > Case Général > T = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex) > T = Replace(T, "'", "''") > A = Me.choixnom.List(Me.choixnom.ListIndex) 'ce plante bizarrement ici > dans le cas TypeChoisi ??? > Me.ChoixDisque.Clear > Requete = "SELECT Image From [" & NomFeuille & "$] Where Auteur like " > & "'" & A & "' And Œuvre like " & "'" & T & "' Group By Image" > Controle = "ChoixDisque" > MaRequêteAvecADO Controle, Requete > If Me.ChoixDisque.ListCount > 0 Then > If Me.ChoixDisque.ListIndex = -1 Then > Me.ChoixDisque.ListIndex = 0 > End If > Else > ChoixDisque_Click > End If > > Case TypeChoisi > Me.choixnom.Clear 'déjà fait mais utile si chgt choix oeuvre > T = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex) > T = Replace(T, "'", "''") > Controle = "choixnom" > Requete = "SELECT Auteur From [" & NomFeuille & "$] Where Œuvre like " & _ > "'" & T & "' Group By Auteur" > MaRequêteAvecADO Controle, Requete > If Me.choixnom.ListCount > 0 Then > If Me.choixnom.ListIndex = -1 Then > Me.choixnom.ListIndex = 0 > End If > Else > ChoixDisque_Click > ' choixnom_Click > End If > Range("essai2").Value = Me.choixnom.List(Me.ChoixOeuvre.ListIndex) > > Case CompositeurChoisi > T = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex) > T = Replace(T, "'", "''") > A = Me.choixnom.List(Me.choixnom.ListIndex) > Me.ChoixDisque.Clear > Requete = "SELECT Image From [" & NomFeuille & "$] Where Auteur like " > & "'" & A & "' And Œuvre like " & "'" & T & "' Group By Image" > Controle = "ChoixDisque" > MaRequêteAvecADO Controle, Requete > If Me.ChoixDisque.ListCount > 0 Then > If Me.ChoixDisque.ListIndex = -1 Then > Me.ChoixDisque.ListIndex = 0 > End If > Else > ChoixDisque_Click > End If > > .... > Case Else > ChoixDisque_Click > End Select > End Sub > Qui peut m’expliquer ce mystère ? > http://cjoint.com/?jiqxMvLJnL > à + j’espère >
Bonjour Xavier
Si vous regardez à nouveau dans le Case TypeChoisi il n'y a pas de :
A = Me.choixnom.List(Me.choixnom.ListIndex)
la question est pourquoi la macro s'obstine à exécuter Case Général dans
ChoixOeuvre
Dans Private Sub Types_Change()
après les :
Me.choixnom.Clear
Me.ChoixOeuvre.Clear
Me.ChoixDisque.Clear
j'ai essayé d'ajouter un CHOIX = TypeChoisi au cas où un des 3 clear
m'aurait changé mon CHOIX rien à faire il s'obstine à éxécuter Case Général
dans ChoixOeuvre_Click
Bonne journée
--
Jean-Paul V
"Xavier" wrote:
j'ai pas eu le temps de bien regarder mais il est normal que ça plante
puisque Me.choixnom est préalablement clear et donc que Me.choixnom est
vide et Me.choixnom.ListIndex=-1
donc Me.choixnom.List(Me.choixnom.ListIndex) n'existe pas et ne peut
être égal à A
Xavier
Jean-Paul V a écrit :
> Bonjour à tous
> Je veux lorsque OptionButton2 = True utiliser ces Combobox pour faire des
> CHOIX dans ma BD et alimenter mes 3 Lisbox ( choixnom ; ChoixOeuvre ;
> ChoixDisque )
> Mon Userform est initialisé avec :
> Private Sub UserForm_Initialize()
> ….
> CHOIX = Général
> End Sub
>
> Mes Combobox sont nommés ( Compositeurs ; Types ; …)
> La partie Else de cette Macro avec le combo Compositeurs fonctionne ainsi
> que la suite :
> Private Sub Compositeurs_Change()
> If Formulaire.OptionButton2.Value = False Then
> ...
> Else
> 'Mettre à jour la listeBox choixnom et y mettre le choix fait avec le
> Combobox Compositeurs
> CHOIX = CompositeurChoisi
> If Me.Compositeurs.Value <> "" Then
> Me.choixnom.Clear
> Me.choixnom.List = Array(Compositeurs.Value)
> Formulaire.choixnom.ListIndex = 0
> Else
> 'ne rien faire
> End If
> End If
> End Sub
> Alors que celle avec le combo Types commence bien car elle liste bien toutes
> les oeuvres (si je choisi sonate j’obtiens toutes les sonates ) avec :
> Private Sub Types_Change()
> ...
> Else 'cas où je veux une aide au choix dans la BD
> CHOIX = TypeChoisi
> If Me.Types.Value <> "" Then
> Set f = Sheets("BD")
> Me.choixnom.Clear
> Me.ChoixOeuvre.Clear
> Me.ChoixDisque.Clear
> Set MonDico = CreateObject("Scripting.Dictionary")
> For Each C In f.Range("C2", f.[C65000].End(xlUp))
> If Left(C.Value, Len(Types.Value)) = Types.Value And Not
> MonDico.Exists(C.Value) Then MonDico.Add C.Value, C.Value
> Next C
> Formulaire.ChoixOeuvre.List = MonDico.items
> If Formulaire.ChoixOeuvre.ListCount > 0 Then
> If Formulaire.ChoixOeuvre.ListIndex = -1 Then
> Formulaire.ChoixOeuvre.ListIndex = 0 ‘ ceci déclanche la macro
> ChoixOeuvre_Clik
> End If
> End If
> Range("essai").Value = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex)
> 'ne marche pas ?
> Else
> 'ne rien faire
> End If
> End If
> End Sub
> Mais elle se plante ensuite bizarrement sur : A =
> Me.choixnom.List(Me.choixnom.ListIndex) de la macro suivante
> Du Case Général alors que nous devrions être dans Case TypeChoisi ???
> Private Sub ChoixOeuvre_Click()
> ...
> Select Case CHOIX
> Case Général
> T = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex)
> T = Replace(T, "'", "''")
> A = Me.choixnom.List(Me.choixnom.ListIndex) 'ce plante bizarrement ici
> dans le cas TypeChoisi ???
> Me.ChoixDisque.Clear
> Requete = "SELECT Image From [" & NomFeuille & "$] Where Auteur like "
> & "'" & A & "' And Œuvre like " & "'" & T & "' Group By Image"
> Controle = "ChoixDisque"
> MaRequêteAvecADO Controle, Requete
> If Me.ChoixDisque.ListCount > 0 Then
> If Me.ChoixDisque.ListIndex = -1 Then
> Me.ChoixDisque.ListIndex = 0
> End If
> Else
> ChoixDisque_Click
> End If
>
> Case TypeChoisi
> Me.choixnom.Clear 'déjà fait mais utile si chgt choix oeuvre
> T = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex)
> T = Replace(T, "'", "''")
> Controle = "choixnom"
> Requete = "SELECT Auteur From [" & NomFeuille & "$] Where Œuvre like " & _
> "'" & T & "' Group By Auteur"
> MaRequêteAvecADO Controle, Requete
> If Me.choixnom.ListCount > 0 Then
> If Me.choixnom.ListIndex = -1 Then
> Me.choixnom.ListIndex = 0
> End If
> Else
> ChoixDisque_Click
> ' choixnom_Click
> End If
> Range("essai2").Value = Me.choixnom.List(Me.ChoixOeuvre.ListIndex)
>
> Case CompositeurChoisi
> T = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex)
> T = Replace(T, "'", "''")
> A = Me.choixnom.List(Me.choixnom.ListIndex)
> Me.ChoixDisque.Clear
> Requete = "SELECT Image From [" & NomFeuille & "$] Where Auteur like "
> & "'" & A & "' And Œuvre like " & "'" & T & "' Group By Image"
> Controle = "ChoixDisque"
> MaRequêteAvecADO Controle, Requete
> If Me.ChoixDisque.ListCount > 0 Then
> If Me.ChoixDisque.ListIndex = -1 Then
> Me.ChoixDisque.ListIndex = 0
> End If
> Else
> ChoixDisque_Click
> End If
>
> ....
> Case Else
> ChoixDisque_Click
> End Select
> End Sub
> Qui peut m’expliquer ce mystère ?
> http://cjoint.com/?jiqxMvLJnL
> à + j’espère
>
Si vous regardez à nouveau dans le Case TypeChoisi il n'y a pas de : A = Me.choixnom.List(Me.choixnom.ListIndex) la question est pourquoi la macro s'obstine à exécuter Case Général dans ChoixOeuvre Dans Private Sub Types_Change() après les : Me.choixnom.Clear Me.ChoixOeuvre.Clear Me.ChoixDisque.Clear j'ai essayé d'ajouter un CHOIX = TypeChoisi au cas où un des 3 clear m'aurait changé mon CHOIX rien à faire il s'obstine à éxécuter Case Général dans ChoixOeuvre_Click Bonne journée
-- Jean-Paul V
"Xavier" wrote:
j'ai pas eu le temps de bien regarder mais il est normal que ça plante puisque Me.choixnom est préalablement clear et donc que Me.choixnom est vide et Me.choixnom.ListIndex=-1 donc Me.choixnom.List(Me.choixnom.ListIndex) n'existe pas et ne peut être égal à A
Xavier
Jean-Paul V a écrit : > Bonjour à tous > Je veux lorsque OptionButton2 = True utiliser ces Combobox pour faire des > CHOIX dans ma BD et alimenter mes 3 Lisbox ( choixnom ; ChoixOeuvre ; > ChoixDisque ) > Mon Userform est initialisé avec : > Private Sub UserForm_Initialize() > …. > CHOIX = Général > End Sub > > Mes Combobox sont nommés ( Compositeurs ; Types ; …) > La partie Else de cette Macro avec le combo Compositeurs fonctionne ainsi > que la suite : > Private Sub Compositeurs_Change() > If Formulaire.OptionButton2.Value = False Then > ... > Else > 'Mettre à jour la listeBox choixnom et y mettre le choix fait avec le > Combobox Compositeurs > CHOIX = CompositeurChoisi > If Me.Compositeurs.Value <> "" Then > Me.choixnom.Clear > Me.choixnom.List = Array(Compositeurs.Value) > Formulaire.choixnom.ListIndex = 0 > Else > 'ne rien faire > End If > End If > End Sub > Alors que celle avec le combo Types commence bien car elle liste bien toutes > les oeuvres (si je choisi sonate j’obtiens toutes les sonates ) avec : > Private Sub Types_Change() > ... > Else 'cas où je veux une aide au choix dans la BD > CHOIX = TypeChoisi > If Me.Types.Value <> "" Then > Set f = Sheets("BD") > Me.choixnom.Clear > Me.ChoixOeuvre.Clear > Me.ChoixDisque.Clear > Set MonDico = CreateObject("Scripting.Dictionary") > For Each C In f.Range("C2", f.[C65000].End(xlUp)) > If Left(C.Value, Len(Types.Value)) = Types.Value And Not > MonDico.Exists(C.Value) Then MonDico.Add C.Value, C.Value > Next C > Formulaire.ChoixOeuvre.List = MonDico.items > If Formulaire.ChoixOeuvre.ListCount > 0 Then > If Formulaire.ChoixOeuvre.ListIndex = -1 Then > Formulaire.ChoixOeuvre.ListIndex = 0 ‘ ceci déclanche la macro > ChoixOeuvre_Clik > End If > End If > Range("essai").Value = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex) > 'ne marche pas ? > Else > 'ne rien faire > End If > End If > End Sub > Mais elle se plante ensuite bizarrement sur : A = > Me.choixnom.List(Me.choixnom.ListIndex) de la macro suivante > Du Case Général alors que nous devrions être dans Case TypeChoisi ??? > Private Sub ChoixOeuvre_Click() > ... > Select Case CHOIX > Case Général > T = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex) > T = Replace(T, "'", "''") > A = Me.choixnom.List(Me.choixnom.ListIndex) 'ce plante bizarrement ici > dans le cas TypeChoisi ??? > Me.ChoixDisque.Clear > Requete = "SELECT Image From [" & NomFeuille & "$] Where Auteur like " > & "'" & A & "' And Œuvre like " & "'" & T & "' Group By Image" > Controle = "ChoixDisque" > MaRequêteAvecADO Controle, Requete > If Me.ChoixDisque.ListCount > 0 Then > If Me.ChoixDisque.ListIndex = -1 Then > Me.ChoixDisque.ListIndex = 0 > End If > Else > ChoixDisque_Click > End If > > Case TypeChoisi > Me.choixnom.Clear 'déjà fait mais utile si chgt choix oeuvre > T = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex) > T = Replace(T, "'", "''") > Controle = "choixnom" > Requete = "SELECT Auteur From [" & NomFeuille & "$] Where Œuvre like " & _ > "'" & T & "' Group By Auteur" > MaRequêteAvecADO Controle, Requete > If Me.choixnom.ListCount > 0 Then > If Me.choixnom.ListIndex = -1 Then > Me.choixnom.ListIndex = 0 > End If > Else > ChoixDisque_Click > ' choixnom_Click > End If > Range("essai2").Value = Me.choixnom.List(Me.ChoixOeuvre.ListIndex) > > Case CompositeurChoisi > T = Me.ChoixOeuvre.List(Me.ChoixOeuvre.ListIndex) > T = Replace(T, "'", "''") > A = Me.choixnom.List(Me.choixnom.ListIndex) > Me.ChoixDisque.Clear > Requete = "SELECT Image From [" & NomFeuille & "$] Where Auteur like " > & "'" & A & "' And Œuvre like " & "'" & T & "' Group By Image" > Controle = "ChoixDisque" > MaRequêteAvecADO Controle, Requete > If Me.ChoixDisque.ListCount > 0 Then > If Me.ChoixDisque.ListIndex = -1 Then > Me.ChoixDisque.ListIndex = 0 > End If > Else > ChoixDisque_Click > End If > > .... > Case Else > ChoixDisque_Click > End Select > End Sub > Qui peut m’expliquer ce mystère ? > http://cjoint.com/?jiqxMvLJnL > à + j’espère >
Xavier
Effectivement j'avais pas compris la finesse du pb
Ton problème vient du fait que tu oublie de mettre les guillemets dans tes string Case "Général" au lieu de case Général
en effet si tu met pas les guillemets il prends général comme une variable vide et donc lorsque choix ="" et bien le case général s'active car général=""
de même tu dois marquer CHOIX = "Général" et non CHOIX = Général
Xavier
Jean-Paul V a écrit :
Bonjour Xavier
Si vous regardez à nouveau dans le Case TypeChoisi il n'y a pas de : A = Me.choixnom.List(Me.choixnom.ListIndex) la question est pourquoi la macro s'obstine à exécuter Case Général dans ChoixOeuvre Dans Private Sub Types_Change() après les : Me.choixnom.Clear Me.ChoixOeuvre.Clear Me.ChoixDisque.Clear j'ai essayé d'ajouter un CHOIX = TypeChoisi au cas où un des 3 clear m'aurait changé mon CHOIX rien à faire il s'obstine à éxécuter Case Général dans ChoixOeuvre_Click Bonne journée
Effectivement j'avais pas compris la finesse du pb
Ton problème vient du fait que tu oublie de mettre les guillemets dans
tes string
Case "Général" au lieu de case Général
en effet si tu met pas les guillemets il prends général comme une
variable vide et donc lorsque choix ="" et bien le case général s'active
car général=""
de même tu dois marquer CHOIX = "Général" et non CHOIX = Général
Xavier
Jean-Paul V a écrit :
Bonjour Xavier
Si vous regardez à nouveau dans le Case TypeChoisi il n'y a pas de :
A = Me.choixnom.List(Me.choixnom.ListIndex)
la question est pourquoi la macro s'obstine à exécuter Case Général dans
ChoixOeuvre
Dans Private Sub Types_Change()
après les :
Me.choixnom.Clear
Me.ChoixOeuvre.Clear
Me.ChoixDisque.Clear
j'ai essayé d'ajouter un CHOIX = TypeChoisi au cas où un des 3 clear
m'aurait changé mon CHOIX rien à faire il s'obstine à éxécuter Case Général
dans ChoixOeuvre_Click
Bonne journée
Effectivement j'avais pas compris la finesse du pb
Ton problème vient du fait que tu oublie de mettre les guillemets dans tes string Case "Général" au lieu de case Général
en effet si tu met pas les guillemets il prends général comme une variable vide et donc lorsque choix ="" et bien le case général s'active car général=""
de même tu dois marquer CHOIX = "Général" et non CHOIX = Général
Xavier
Jean-Paul V a écrit :
Bonjour Xavier
Si vous regardez à nouveau dans le Case TypeChoisi il n'y a pas de : A = Me.choixnom.List(Me.choixnom.ListIndex) la question est pourquoi la macro s'obstine à exécuter Case Général dans ChoixOeuvre Dans Private Sub Types_Change() après les : Me.choixnom.Clear Me.ChoixOeuvre.Clear Me.ChoixDisque.Clear j'ai essayé d'ajouter un CHOIX = TypeChoisi au cas où un des 3 clear m'aurait changé mon CHOIX rien à faire il s'obstine à éxécuter Case Général dans ChoixOeuvre_Click Bonne journée
Jean-Paul V
Bonjour Xavier
C'est bien ça, merci ça marche -- Jean-Paul V
"Xavier" wrote:
Effectivement j'avais pas compris la finesse du pb
Ton problème vient du fait que tu oublie de mettre les guillemets dans tes string Case "Général" au lieu de case Général
en effet si tu met pas les guillemets il prends général comme une variable vide et donc lorsque choix ="" et bien le case général s'active car général=""
de même tu dois marquer CHOIX = "Général" et non CHOIX = Général
Xavier
Jean-Paul V a écrit : > Bonjour Xavier > > Si vous regardez à nouveau dans le Case TypeChoisi il n'y a pas de : > A = Me.choixnom.List(Me.choixnom.ListIndex) > la question est pourquoi la macro s'obstine à exécuter Case Général dans > ChoixOeuvre > Dans Private Sub Types_Change() > après les : > Me.choixnom.Clear > Me.ChoixOeuvre.Clear > Me.ChoixDisque.Clear > j'ai essayé d'ajouter un CHOIX = TypeChoisi au cas où un des 3 clear > m'aurait changé mon CHOIX rien à faire il s'obstine à éxécuter Case Général > dans ChoixOeuvre_Click > Bonne journée > > > > >
Bonjour Xavier
C'est bien ça, merci ça marche
--
Jean-Paul V
"Xavier" wrote:
Effectivement j'avais pas compris la finesse du pb
Ton problème vient du fait que tu oublie de mettre les guillemets dans
tes string
Case "Général" au lieu de case Général
en effet si tu met pas les guillemets il prends général comme une
variable vide et donc lorsque choix ="" et bien le case général s'active
car général=""
de même tu dois marquer CHOIX = "Général" et non CHOIX = Général
Xavier
Jean-Paul V a écrit :
> Bonjour Xavier
>
> Si vous regardez à nouveau dans le Case TypeChoisi il n'y a pas de :
> A = Me.choixnom.List(Me.choixnom.ListIndex)
> la question est pourquoi la macro s'obstine à exécuter Case Général dans
> ChoixOeuvre
> Dans Private Sub Types_Change()
> après les :
> Me.choixnom.Clear
> Me.ChoixOeuvre.Clear
> Me.ChoixDisque.Clear
> j'ai essayé d'ajouter un CHOIX = TypeChoisi au cas où un des 3 clear
> m'aurait changé mon CHOIX rien à faire il s'obstine à éxécuter Case Général
> dans ChoixOeuvre_Click
> Bonne journée
>
>
>
>
>
Effectivement j'avais pas compris la finesse du pb
Ton problème vient du fait que tu oublie de mettre les guillemets dans tes string Case "Général" au lieu de case Général
en effet si tu met pas les guillemets il prends général comme une variable vide et donc lorsque choix ="" et bien le case général s'active car général=""
de même tu dois marquer CHOIX = "Général" et non CHOIX = Général
Xavier
Jean-Paul V a écrit : > Bonjour Xavier > > Si vous regardez à nouveau dans le Case TypeChoisi il n'y a pas de : > A = Me.choixnom.List(Me.choixnom.ListIndex) > la question est pourquoi la macro s'obstine à exécuter Case Général dans > ChoixOeuvre > Dans Private Sub Types_Change() > après les : > Me.choixnom.Clear > Me.ChoixOeuvre.Clear > Me.ChoixDisque.Clear > j'ai essayé d'ajouter un CHOIX = TypeChoisi au cas où un des 3 clear > m'aurait changé mon CHOIX rien à faire il s'obstine à éxécuter Case Général > dans ChoixOeuvre_Click > Bonne journée > > > > >