Bonjour à tous
Erreur 13
Je reprends mon problème en partant d’un fichier plus simple proposé par
MichDenis que j’ai modifié afin qu’il se rapproche plus de ce que je
souhaite
faire.
J’ai une base de données avec 3 colonnes.
1ère colonne des compositeurs
2 ème la liste des œuvres disponible
3 ème les photo nommée *.jpg
Pour un compositeur et une œuvre je peux avoir plusieurs interprétations
donc plusieurs*.jpg
J’ai un Userform qui à l’ouverture présente 3 listes en cascades qui se
mettent à jour à l’ouverture ( Compositeur ; Œuvres ; CD nommés*.jpg ) .A
l’ouverture le premier compositeur est sélectionné ; ce qui entraine la
1ère
œuvre dispo de ce compositeur est sélectionnée dans la liste 2 et le 1 er
disque disponible de cette œuvre .
Le Userform a une image, je souhaite que celle-ci se mette à jour à chaque
nouvelle sélection de liste .
A l’ouverture je cherche donc à mettre le 1er *.jpg de la première Œuvre
du
premier Compositeur
Pour ce faire j’ai dans Userform un TextBox nommé Photo censé se mettre à
jour à chaque changement d’une des 3 listes et montrer le fichier *.jpg à
mettre dans mon Image.
Pourquoi UserForm_Initialize se plante lorsque je rajoute mon TextBox sur
:
Me.ListBox2.List = Application.Transpose(X.Items) de la Macro
UserForm_Initialize alors que ce n’est pas dans l’ initialisation du
Userform
Private Sub UserForm_Initialize()
Dim Rg As Range, X As Object
With Feuil1
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) Then 'C.Offset(0, -2) = choixnom Then
X.Add CStr(C), CStr(C)
End If
Next
Me.ListBox1.List = Application.Transpose(X.Items)
ligne = 1
majFiche
Me.ListBox1.ListIndex = 0
End Sub
Private Sub ListBox1_Click()
'Nouveau solution MichDenis pour éviter doublons dans liste des oeuvres
si plusieurs interprétations
Dim Rg As Range, C As Range
Dim X As Object
Me.ListBox2.Clear
Me.ListBox3.Clear
With Sheets("Feuil1")
ligne = .[A:A].Find(ListBox1, LookIn:=xlValues).Row
' majFiche
Set Rg = .Range("B1:B" & .Range("B65536").End(xlUp).Row)
End With
'Pour remplir sans doublons le contrôle ChoixOeuvre des données
'en colonnes c:c
'------------------------
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) And C.Offset(0, -1) = ListBox1 Then
X.Add CStr(C), CStr(C)
'majFiche 'ajouté
End If
Next
'--------------------------
'Affecte au contrôle la liste trouvée
Me.ListBox2.List = Application.Transpose(X.Items) ‘ se plante ici ???
majFiche
Me.ListBox2.ListIndex = 0
End Sub
Si vous supprimez dans le Userform le TextBox la macro ne se plante plus
à
l’ouverture attention j’ai besoine de ce TextBox pour d’autres
applications.
1 ) que faut-il changer au fichier pour que cela ne se plante pas ?
2) comment écrire la macro MajFiche qui met à jour la Photo ‘macro en
construction et neutralisée.
Voir http://cjoint.com/?gDqlbKPULM
@+ j'espère
--
Jean-Paul V
Bonjour à tous
Erreur 13
Je reprends mon problème en partant d’un fichier plus simple proposé par
MichDenis que j’ai modifié afin qu’il se rapproche plus de ce que je
souhaite
faire.
J’ai une base de données avec 3 colonnes.
1ère colonne des compositeurs
2 ème la liste des œuvres disponible
3 ème les photo nommée *.jpg
Pour un compositeur et une œuvre je peux avoir plusieurs interprétations
donc plusieurs*.jpg
J’ai un Userform qui à l’ouverture présente 3 listes en cascades qui se
mettent à jour à l’ouverture ( Compositeur ; Œuvres ; CD nommés*.jpg ) .A
l’ouverture le premier compositeur est sélectionné ; ce qui entraine la
1ère
œuvre dispo de ce compositeur est sélectionnée dans la liste 2 et le 1 er
disque disponible de cette œuvre .
Le Userform a une image, je souhaite que celle-ci se mette à jour à chaque
nouvelle sélection de liste .
A l’ouverture je cherche donc à mettre le 1er *.jpg de la première Œuvre
du
premier Compositeur
Pour ce faire j’ai dans Userform un TextBox nommé Photo censé se mettre à
jour à chaque changement d’une des 3 listes et montrer le fichier *.jpg à
mettre dans mon Image.
Pourquoi UserForm_Initialize se plante lorsque je rajoute mon TextBox sur
:
Me.ListBox2.List = Application.Transpose(X.Items) de la Macro
UserForm_Initialize alors que ce n’est pas dans l’ initialisation du
Userform
Private Sub UserForm_Initialize()
Dim Rg As Range, X As Object
With Feuil1
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) Then 'C.Offset(0, -2) = choixnom Then
X.Add CStr(C), CStr(C)
End If
Next
Me.ListBox1.List = Application.Transpose(X.Items)
ligne = 1
majFiche
Me.ListBox1.ListIndex = 0
End Sub
Private Sub ListBox1_Click()
'Nouveau solution MichDenis pour éviter doublons dans liste des oeuvres
si plusieurs interprétations
Dim Rg As Range, C As Range
Dim X As Object
Me.ListBox2.Clear
Me.ListBox3.Clear
With Sheets("Feuil1")
ligne = .[A:A].Find(ListBox1, LookIn:=xlValues).Row
' majFiche
Set Rg = .Range("B1:B" & .Range("B65536").End(xlUp).Row)
End With
'Pour remplir sans doublons le contrôle ChoixOeuvre des données
'en colonnes c:c
'------------------------
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) And C.Offset(0, -1) = ListBox1 Then
X.Add CStr(C), CStr(C)
'majFiche 'ajouté
End If
Next
'--------------------------
'Affecte au contrôle la liste trouvée
Me.ListBox2.List = Application.Transpose(X.Items) ‘ se plante ici ???
majFiche
Me.ListBox2.ListIndex = 0
End Sub
Si vous supprimez dans le Userform le TextBox la macro ne se plante plus
à
l’ouverture attention j’ai besoine de ce TextBox pour d’autres
applications.
1 ) que faut-il changer au fichier pour que cela ne se plante pas ?
2) comment écrire la macro MajFiche qui met à jour la Photo ‘macro en
construction et neutralisée.
Voir http://cjoint.com/?gDqlbKPULM
@+ j'espère
--
Jean-Paul V
Bonjour à tous
Erreur 13
Je reprends mon problème en partant d’un fichier plus simple proposé par
MichDenis que j’ai modifié afin qu’il se rapproche plus de ce que je
souhaite
faire.
J’ai une base de données avec 3 colonnes.
1ère colonne des compositeurs
2 ème la liste des œuvres disponible
3 ème les photo nommée *.jpg
Pour un compositeur et une œuvre je peux avoir plusieurs interprétations
donc plusieurs*.jpg
J’ai un Userform qui à l’ouverture présente 3 listes en cascades qui se
mettent à jour à l’ouverture ( Compositeur ; Œuvres ; CD nommés*.jpg ) .A
l’ouverture le premier compositeur est sélectionné ; ce qui entraine la
1ère
œuvre dispo de ce compositeur est sélectionnée dans la liste 2 et le 1 er
disque disponible de cette œuvre .
Le Userform a une image, je souhaite que celle-ci se mette à jour à chaque
nouvelle sélection de liste .
A l’ouverture je cherche donc à mettre le 1er *.jpg de la première Œuvre
du
premier Compositeur
Pour ce faire j’ai dans Userform un TextBox nommé Photo censé se mettre à
jour à chaque changement d’une des 3 listes et montrer le fichier *.jpg à
mettre dans mon Image.
Pourquoi UserForm_Initialize se plante lorsque je rajoute mon TextBox sur
:
Me.ListBox2.List = Application.Transpose(X.Items) de la Macro
UserForm_Initialize alors que ce n’est pas dans l’ initialisation du
Userform
Private Sub UserForm_Initialize()
Dim Rg As Range, X As Object
With Feuil1
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) Then 'C.Offset(0, -2) = choixnom Then
X.Add CStr(C), CStr(C)
End If
Next
Me.ListBox1.List = Application.Transpose(X.Items)
ligne = 1
majFiche
Me.ListBox1.ListIndex = 0
End Sub
Private Sub ListBox1_Click()
'Nouveau solution MichDenis pour éviter doublons dans liste des oeuvres
si plusieurs interprétations
Dim Rg As Range, C As Range
Dim X As Object
Me.ListBox2.Clear
Me.ListBox3.Clear
With Sheets("Feuil1")
ligne = .[A:A].Find(ListBox1, LookIn:=xlValues).Row
' majFiche
Set Rg = .Range("B1:B" & .Range("B65536").End(xlUp).Row)
End With
'Pour remplir sans doublons le contrôle ChoixOeuvre des données
'en colonnes c:c
'------------------------
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) And C.Offset(0, -1) = ListBox1 Then
X.Add CStr(C), CStr(C)
'majFiche 'ajouté
End If
Next
'--------------------------
'Affecte au contrôle la liste trouvée
Me.ListBox2.List = Application.Transpose(X.Items) ‘ se plante ici ???
majFiche
Me.ListBox2.ListIndex = 0
End Sub
Si vous supprimez dans le Userform le TextBox la macro ne se plante plus
à
l’ouverture attention j’ai besoine de ce TextBox pour d’autres
applications.
1 ) que faut-il changer au fichier pour que cela ne se plante pas ?
2) comment écrire la macro MajFiche qui met à jour la Photo ‘macro en
construction et neutralisée.
Voir http://cjoint.com/?gDqlbKPULM
@+ j'espère
--
Jean-Paul V
Bonjour à tous
Erreur 13
Je reprends mon problème en partant d’un fichier plus simple proposé par
MichDenis que j’ai modifié afin qu’il se rapproche plus de ce que je
souhaite
faire.
J’ai une base de données avec 3 colonnes.
1ère colonne des compositeurs
2 ème la liste des œuvres disponible
3 ème les photo nommée *.jpg
Pour un compositeur et une œuvre je peux avoir plusieurs interprétations
donc plusieurs*.jpg
J’ai un Userform qui à l’ouverture présente 3 listes en cascades qui se
mettent à jour à l’ouverture ( Compositeur ; Œuvres ; CD nommés*.jpg ) .A
l’ouverture le premier compositeur est sélectionné ; ce qui entraine la
1ère
œuvre dispo de ce compositeur est sélectionnée dans la liste 2 et le 1 er
disque disponible de cette œuvre .
Le Userform a une image, je souhaite que celle-ci se mette à jour à chaque
nouvelle sélection de liste .
A l’ouverture je cherche donc à mettre le 1er *.jpg de la première Œuvre
du
premier Compositeur
Pour ce faire j’ai dans Userform un TextBox nommé Photo censé se mettre à
jour à chaque changement d’une des 3 listes et montrer le fichier *.jpg à
mettre dans mon Image.
Pourquoi UserForm_Initialize se plante lorsque je rajoute mon TextBox sur
:
Me.ListBox2.List = Application.Transpose(X.Items) de la Macro
UserForm_Initialize alors que ce n’est pas dans l’ initialisation du
Userform
Private Sub UserForm_Initialize()
Dim Rg As Range, X As Object
With Feuil1
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) Then 'C.Offset(0, -2) = choixnom Then
X.Add CStr(C), CStr(C)
End If
Next
Me.ListBox1.List = Application.Transpose(X.Items)
ligne = 1
majFiche
Me.ListBox1.ListIndex = 0
End Sub
Private Sub ListBox1_Click()
'Nouveau solution MichDenis pour éviter doublons dans liste des oeuvres
si plusieurs interprétations
Dim Rg As Range, C As Range
Dim X As Object
Me.ListBox2.Clear
Me.ListBox3.Clear
With Sheets("Feuil1")
ligne = .[A:A].Find(ListBox1, LookIn:=xlValues).Row
' majFiche
Set Rg = .Range("B1:B" & .Range("B65536").End(xlUp).Row)
End With
'Pour remplir sans doublons le contrôle ChoixOeuvre des données
'en colonnes c:c
'------------------------
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) And C.Offset(0, -1) = ListBox1 Then
X.Add CStr(C), CStr(C)
'majFiche 'ajouté
End If
Next
'--------------------------
'Affecte au contrôle la liste trouvée
Me.ListBox2.List = Application.Transpose(X.Items) ‘ se plante ici ???
majFiche
Me.ListBox2.ListIndex = 0
End Sub
Si vous supprimez dans le Userform le TextBox la macro ne se plante plus
à
l’ouverture attention j’ai besoine de ce TextBox pour d’autres
applications.
1 ) que faut-il changer au fichier pour que cela ne se plante pas ?
2) comment écrire la macro MajFiche qui met à jour la Photo ‘macro en
construction et neutralisée.
Voir http://cjoint.com/?gDqlbKPULM
@+ j'espère
--
Jean-Paul V
Bonjour à tous
Erreur 13
Je reprends mon problème en partant d’un fichier plus simple proposé par
MichDenis que j’ai modifié afin qu’il se rapproche plus de ce que je
souhaite
faire.
J’ai une base de données avec 3 colonnes.
1ère colonne des compositeurs
2 ème la liste des œuvres disponible
3 ème les photo nommée *.jpg
Pour un compositeur et une œuvre je peux avoir plusieurs interprétations
donc plusieurs*.jpg
J’ai un Userform qui à l’ouverture présente 3 listes en cascades qui se
mettent à jour à l’ouverture ( Compositeur ; Œuvres ; CD nommés*.jpg ) .A
l’ouverture le premier compositeur est sélectionné ; ce qui entraine la
1ère
œuvre dispo de ce compositeur est sélectionnée dans la liste 2 et le 1 er
disque disponible de cette œuvre .
Le Userform a une image, je souhaite que celle-ci se mette à jour à chaque
nouvelle sélection de liste .
A l’ouverture je cherche donc à mettre le 1er *.jpg de la première Œuvre
du
premier Compositeur
Pour ce faire j’ai dans Userform un TextBox nommé Photo censé se mettre à
jour à chaque changement d’une des 3 listes et montrer le fichier *.jpg à
mettre dans mon Image.
Pourquoi UserForm_Initialize se plante lorsque je rajoute mon TextBox sur
:
Me.ListBox2.List = Application.Transpose(X.Items) de la Macro
UserForm_Initialize alors que ce n’est pas dans l’ initialisation du
Userform
Private Sub UserForm_Initialize()
Dim Rg As Range, X As Object
With Feuil1
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) Then 'C.Offset(0, -2) = choixnom Then
X.Add CStr(C), CStr(C)
End If
Next
Me.ListBox1.List = Application.Transpose(X.Items)
ligne = 1
majFiche
Me.ListBox1.ListIndex = 0
End Sub
Private Sub ListBox1_Click()
'Nouveau solution MichDenis pour éviter doublons dans liste des oeuvres
si plusieurs interprétations
Dim Rg As Range, C As Range
Dim X As Object
Me.ListBox2.Clear
Me.ListBox3.Clear
With Sheets("Feuil1")
ligne = .[A:A].Find(ListBox1, LookIn:=xlValues).Row
' majFiche
Set Rg = .Range("B1:B" & .Range("B65536").End(xlUp).Row)
End With
'Pour remplir sans doublons le contrôle ChoixOeuvre des données
'en colonnes c:c
'------------------------
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) And C.Offset(0, -1) = ListBox1 Then
X.Add CStr(C), CStr(C)
'majFiche 'ajouté
End If
Next
'--------------------------
'Affecte au contrôle la liste trouvée
Me.ListBox2.List = Application.Transpose(X.Items) ‘ se plante ici ???
majFiche
Me.ListBox2.ListIndex = 0
End Sub
Si vous supprimez dans le Userform le TextBox la macro ne se plante plus
à
l’ouverture attention j’ai besoine de ce TextBox pour d’autres
applications.
1 ) que faut-il changer au fichier pour que cela ne se plante pas ?
2) comment écrire la macro MajFiche qui met à jour la Photo ‘macro en
construction et neutralisée.
Voir http://cjoint.com/?gDqlbKPULM
@+ j'espère
--
Jean-Paul V
Bonjour à tous
Erreur 13
Je reprends mon problème en partant d’un fichier plus simple proposé par
MichDenis que j’ai modifié afin qu’il se rapproche plus de ce que je
souhaite
faire.
J’ai une base de données avec 3 colonnes.
1ère colonne des compositeurs
2 ème la liste des œuvres disponible
3 ème les photo nommée *.jpg
Pour un compositeur et une œuvre je peux avoir plusieurs interprétations
donc plusieurs*.jpg
J’ai un Userform qui à l’ouverture présente 3 listes en cascades qui se
mettent à jour à l’ouverture ( Compositeur ; Œuvres ; CD nommés*.jpg ) .A
l’ouverture le premier compositeur est sélectionné ; ce qui entraine la
1ère
œuvre dispo de ce compositeur est sélectionnée dans la liste 2 et le 1 er
disque disponible de cette œuvre .
Le Userform a une image, je souhaite que celle-ci se mette à jour à chaque
nouvelle sélection de liste .
A l’ouverture je cherche donc à mettre le 1er *.jpg de la première Œuvre
du
premier Compositeur
Pour ce faire j’ai dans Userform un TextBox nommé Photo censé se mettre à
jour à chaque changement d’une des 3 listes et montrer le fichier *.jpg à
mettre dans mon Image.
Pourquoi UserForm_Initialize se plante lorsque je rajoute mon TextBox sur
:
Me.ListBox2.List = Application.Transpose(X.Items) de la Macro
UserForm_Initialize alors que ce n’est pas dans l’ initialisation du
Userform
Private Sub UserForm_Initialize()
Dim Rg As Range, X As Object
With Feuil1
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) Then 'C.Offset(0, -2) = choixnom Then
X.Add CStr(C), CStr(C)
End If
Next
Me.ListBox1.List = Application.Transpose(X.Items)
ligne = 1
majFiche
Me.ListBox1.ListIndex = 0
End Sub
Private Sub ListBox1_Click()
'Nouveau solution MichDenis pour éviter doublons dans liste des oeuvres
si plusieurs interprétations
Dim Rg As Range, C As Range
Dim X As Object
Me.ListBox2.Clear
Me.ListBox3.Clear
With Sheets("Feuil1")
ligne = .[A:A].Find(ListBox1, LookIn:=xlValues).Row
' majFiche
Set Rg = .Range("B1:B" & .Range("B65536").End(xlUp).Row)
End With
'Pour remplir sans doublons le contrôle ChoixOeuvre des données
'en colonnes c:c
'------------------------
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) And C.Offset(0, -1) = ListBox1 Then
X.Add CStr(C), CStr(C)
'majFiche 'ajouté
End If
Next
'--------------------------
'Affecte au contrôle la liste trouvée
Me.ListBox2.List = Application.Transpose(X.Items) ‘ se plante ici ???
majFiche
Me.ListBox2.ListIndex = 0
End Sub
Si vous supprimez dans le Userform le TextBox la macro ne se plante plus
à
l’ouverture attention j’ai besoine de ce TextBox pour d’autres
applications.
1 ) que faut-il changer au fichier pour que cela ne se plante pas ?
2) comment écrire la macro MajFiche qui met à jour la Photo ‘macro en
construction et neutralisée.
Voir http://cjoint.com/?gDqlbKPULM
@+ j'espère
--
Jean-Paul V
Bonjour à tous
Erreur 13
Je reprends mon problème en partant d’un fichier plus simple proposé par
MichDenis que j’ai modifié afin qu’il se rapproche plus de ce que je
souhaite
faire.
J’ai une base de données avec 3 colonnes.
1ère colonne des compositeurs
2 ème la liste des œuvres disponible
3 ème les photo nommée *.jpg
Pour un compositeur et une œuvre je peux avoir plusieurs interprétations
donc plusieurs*.jpg
J’ai un Userform qui à l’ouverture présente 3 listes en cascades qui se
mettent à jour à l’ouverture ( Compositeur ; Œuvres ; CD nommés*.jpg ) .A
l’ouverture le premier compositeur est sélectionné ; ce qui entraine la
1ère
œuvre dispo de ce compositeur est sélectionnée dans la liste 2 et le 1 er
disque disponible de cette œuvre .
Le Userform a une image, je souhaite que celle-ci se mette à jour à chaque
nouvelle sélection de liste .
A l’ouverture je cherche donc à mettre le 1er *.jpg de la première Œuvre
du
premier Compositeur
Pour ce faire j’ai dans Userform un TextBox nommé Photo censé se mettre à
jour à chaque changement d’une des 3 listes et montrer le fichier *.jpg à
mettre dans mon Image.
Pourquoi UserForm_Initialize se plante lorsque je rajoute mon TextBox sur
:
Me.ListBox2.List = Application.Transpose(X.Items) de la Macro
UserForm_Initialize alors que ce n’est pas dans l’ initialisation du
Userform
Private Sub UserForm_Initialize()
Dim Rg As Range, X As Object
With Feuil1
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) Then 'C.Offset(0, -2) = choixnom Then
X.Add CStr(C), CStr(C)
End If
Next
Me.ListBox1.List = Application.Transpose(X.Items)
ligne = 1
majFiche
Me.ListBox1.ListIndex = 0
End Sub
Private Sub ListBox1_Click()
'Nouveau solution MichDenis pour éviter doublons dans liste des oeuvres
si plusieurs interprétations
Dim Rg As Range, C As Range
Dim X As Object
Me.ListBox2.Clear
Me.ListBox3.Clear
With Sheets("Feuil1")
ligne = .[A:A].Find(ListBox1, LookIn:=xlValues).Row
' majFiche
Set Rg = .Range("B1:B" & .Range("B65536").End(xlUp).Row)
End With
'Pour remplir sans doublons le contrôle ChoixOeuvre des données
'en colonnes c:c
'------------------------
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) And C.Offset(0, -1) = ListBox1 Then
X.Add CStr(C), CStr(C)
'majFiche 'ajouté
End If
Next
'--------------------------
'Affecte au contrôle la liste trouvée
Me.ListBox2.List = Application.Transpose(X.Items) ‘ se plante ici ???
majFiche
Me.ListBox2.ListIndex = 0
End Sub
Si vous supprimez dans le Userform le TextBox la macro ne se plante plus
à
l’ouverture attention j’ai besoine de ce TextBox pour d’autres
applications.
1 ) que faut-il changer au fichier pour que cela ne se plante pas ?
2) comment écrire la macro MajFiche qui met à jour la Photo ‘macro en
construction et neutralisée.
Voir http://cjoint.com/?gDqlbKPULM
@+ j'espère
--
Jean-Paul V
Bonjour à tous
Erreur 13
Je reprends mon problème en partant d’un fichier plus simple proposé par
MichDenis que j’ai modifié afin qu’il se rapproche plus de ce que je
souhaite
faire.
J’ai une base de données avec 3 colonnes.
1ère colonne des compositeurs
2 ème la liste des œuvres disponible
3 ème les photo nommée *.jpg
Pour un compositeur et une œuvre je peux avoir plusieurs interprétations
donc plusieurs*.jpg
J’ai un Userform qui à l’ouverture présente 3 listes en cascades qui se
mettent à jour à l’ouverture ( Compositeur ; Œuvres ; CD nommés*.jpg ) .A
l’ouverture le premier compositeur est sélectionné ; ce qui entraine la
1ère
œuvre dispo de ce compositeur est sélectionnée dans la liste 2 et le 1 er
disque disponible de cette œuvre .
Le Userform a une image, je souhaite que celle-ci se mette à jour à chaque
nouvelle sélection de liste .
A l’ouverture je cherche donc à mettre le 1er *.jpg de la première Œuvre
du
premier Compositeur
Pour ce faire j’ai dans Userform un TextBox nommé Photo censé se mettre à
jour à chaque changement d’une des 3 listes et montrer le fichier *.jpg à
mettre dans mon Image.
Pourquoi UserForm_Initialize se plante lorsque je rajoute mon TextBox sur
:
Me.ListBox2.List = Application.Transpose(X.Items) de la Macro
UserForm_Initialize alors que ce n’est pas dans l’ initialisation du
Userform
Private Sub UserForm_Initialize()
Dim Rg As Range, X As Object
With Feuil1
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) Then 'C.Offset(0, -2) = choixnom Then
X.Add CStr(C), CStr(C)
End If
Next
Me.ListBox1.List = Application.Transpose(X.Items)
ligne = 1
majFiche
Me.ListBox1.ListIndex = 0
End Sub
Private Sub ListBox1_Click()
'Nouveau solution MichDenis pour éviter doublons dans liste des oeuvres
si plusieurs interprétations
Dim Rg As Range, C As Range
Dim X As Object
Me.ListBox2.Clear
Me.ListBox3.Clear
With Sheets("Feuil1")
ligne = .[A:A].Find(ListBox1, LookIn:=xlValues).Row
' majFiche
Set Rg = .Range("B1:B" & .Range("B65536").End(xlUp).Row)
End With
'Pour remplir sans doublons le contrôle ChoixOeuvre des données
'en colonnes c:c
'------------------------
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) And C.Offset(0, -1) = ListBox1 Then
X.Add CStr(C), CStr(C)
'majFiche 'ajouté
End If
Next
'--------------------------
'Affecte au contrôle la liste trouvée
Me.ListBox2.List = Application.Transpose(X.Items) ‘ se plante ici ???
majFiche
Me.ListBox2.ListIndex = 0
End Sub
Si vous supprimez dans le Userform le TextBox la macro ne se plante plus
à
l’ouverture attention j’ai besoine de ce TextBox pour d’autres
applications.
1 ) que faut-il changer au fichier pour que cela ne se plante pas ?
2) comment écrire la macro MajFiche qui met à jour la Photo ‘macro en
construction et neutralisée.
Voir http://cjoint.com/?gDqlbKPULM
@+ j'espère
--
Jean-Paul V
Bonjour à tous
Erreur 13
Je reprends mon problème en partant d’un fichier plus simple proposé par
MichDenis que j’ai modifié afin qu’il se rapproche plus de ce que je
souhaite
faire.
J’ai une base de données avec 3 colonnes.
1ère colonne des compositeurs
2 ème la liste des œuvres disponible
3 ème les photo nommée *.jpg
Pour un compositeur et une œuvre je peux avoir plusieurs interprétations
donc plusieurs*.jpg
J’ai un Userform qui à l’ouverture présente 3 listes en cascades qui se
mettent à jour à l’ouverture ( Compositeur ; Œuvres ; CD nommés*.jpg ) .A
l’ouverture le premier compositeur est sélectionné ; ce qui entraine la
1ère
œuvre dispo de ce compositeur est sélectionnée dans la liste 2 et le 1 er
disque disponible de cette œuvre .
Le Userform a une image, je souhaite que celle-ci se mette à jour à chaque
nouvelle sélection de liste .
A l’ouverture je cherche donc à mettre le 1er *.jpg de la première Œuvre
du
premier Compositeur
Pour ce faire j’ai dans Userform un TextBox nommé Photo censé se mettre à
jour à chaque changement d’une des 3 listes et montrer le fichier *.jpg à
mettre dans mon Image.
Pourquoi UserForm_Initialize se plante lorsque je rajoute mon TextBox sur
:
Me.ListBox2.List = Application.Transpose(X.Items) de la Macro
UserForm_Initialize alors que ce n’est pas dans l’ initialisation du
Userform
Private Sub UserForm_Initialize()
Dim Rg As Range, X As Object
With Feuil1
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) Then 'C.Offset(0, -2) = choixnom Then
X.Add CStr(C), CStr(C)
End If
Next
Me.ListBox1.List = Application.Transpose(X.Items)
ligne = 1
majFiche
Me.ListBox1.ListIndex = 0
End Sub
Private Sub ListBox1_Click()
'Nouveau solution MichDenis pour éviter doublons dans liste des oeuvres
si plusieurs interprétations
Dim Rg As Range, C As Range
Dim X As Object
Me.ListBox2.Clear
Me.ListBox3.Clear
With Sheets("Feuil1")
ligne = .[A:A].Find(ListBox1, LookIn:=xlValues).Row
' majFiche
Set Rg = .Range("B1:B" & .Range("B65536").End(xlUp).Row)
End With
'Pour remplir sans doublons le contrôle ChoixOeuvre des données
'en colonnes c:c
'------------------------
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) And C.Offset(0, -1) = ListBox1 Then
X.Add CStr(C), CStr(C)
'majFiche 'ajouté
End If
Next
'--------------------------
'Affecte au contrôle la liste trouvée
Me.ListBox2.List = Application.Transpose(X.Items) ‘ se plante ici ???
majFiche
Me.ListBox2.ListIndex = 0
End Sub
Si vous supprimez dans le Userform le TextBox la macro ne se plante plus
à
l’ouverture attention j’ai besoine de ce TextBox pour d’autres
applications.
1 ) que faut-il changer au fichier pour que cela ne se plante pas ?
2) comment écrire la macro MajFiche qui met à jour la Photo ‘macro en
construction et neutralisée.
Voir http://cjoint.com/?gDqlbKPULM
@+ j'espère
--
Jean-Paul V
Non, je ne comprends pas.
Chez moi ton Userform fonctionne (sous réserve des observations de mon 1er
message).
Si, par exemple, je clique sur :
Mozart
Requiem
la listbox3 fait bien apparaître les 3 pochettes disponibles.
Il te reste à mettre à jour ton Texbox lors du click (choix) dans ta
listbox3 et, ce faisant, charger la photo portant cette référence.
Michel
"Jean-Paul V" a écrit dans le message
de news:
> Bonjour à tous
> Erreur 13
> Je reprends mon problème en partant d’un fichier plus simple proposé par
> MichDenis que j’ai modifié afin qu’il se rapproche plus de ce que je
> souhaite
> faire.
> J’ai une base de données avec 3 colonnes.
> 1ère colonne des compositeurs
> 2 ème la liste des œuvres disponible
> 3 ème les photo nommée *.jpg
> Pour un compositeur et une œuvre je peux avoir plusieurs interprétations
> donc plusieurs*.jpg
>
> J’ai un Userform qui à l’ouverture présente 3 listes en cascades qui se
> mettent à jour à l’ouverture ( Compositeur ; Œuvres ; CD nommés*.jpg ) .A
> l’ouverture le premier compositeur est sélectionné ; ce qui entraine la
> 1ère
> œuvre dispo de ce compositeur est sélectionnée dans la liste 2 et le 1 er
> disque disponible de cette œuvre .
> Le Userform a une image, je souhaite que celle-ci se mette à jour à chaque
> nouvelle sélection de liste .
> A l’ouverture je cherche donc à mettre le 1er *.jpg de la première Œuvre
> du
> premier Compositeur
>
> Pour ce faire j’ai dans Userform un TextBox nommé Photo censé se mettre à
> jour à chaque changement d’une des 3 listes et montrer le fichier *.jpg à
> mettre dans mon Image.
> Pourquoi UserForm_Initialize se plante lorsque je rajoute mon TextBox sur
> :
> Me.ListBox2.List = Application.Transpose(X.Items) de la Macro
> UserForm_Initialize alors que ce n’est pas dans l’ initialisation du
> Userform
>
> Private Sub UserForm_Initialize()
> Dim Rg As Range, X As Object
> With Feuil1
> Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
> End With
>
> Set X = CreateObject("Scripting.Dictionary")
> For Each C In Rg
> If Not X.Exists(CStr(C.Value)) Then 'C.Offset(0, -2) = choixnom Then
> X.Add CStr(C), CStr(C)
> End If
> Next
> Me.ListBox1.List = Application.Transpose(X.Items)
> ligne = 1
> majFiche
> Me.ListBox1.ListIndex = 0
> End Sub
>
> Private Sub ListBox1_Click()
> 'Nouveau solution MichDenis pour éviter doublons dans liste des oeuvres
> si plusieurs interprétations
> Dim Rg As Range, C As Range
> Dim X As Object
> Me.ListBox2.Clear
> Me.ListBox3.Clear
> With Sheets("Feuil1")
> ligne = .[A:A].Find(ListBox1, LookIn:=xlValues).Row
> ' majFiche
> Set Rg = .Range("B1:B" & .Range("B65536").End(xlUp).Row)
> End With
> 'Pour remplir sans doublons le contrôle ChoixOeuvre des données
> 'en colonnes c:c
> '------------------------
> Set X = CreateObject("Scripting.Dictionary")
> For Each C In Rg
> If Not X.Exists(CStr(C.Value)) And C.Offset(0, -1) = ListBox1 Then
> X.Add CStr(C), CStr(C)
> 'majFiche 'ajouté
> End If
> Next
> '--------------------------
> 'Affecte au contrôle la liste trouvée
> Me.ListBox2.List = Application.Transpose(X.Items) ‘ se plante ici ???
> majFiche
> Me.ListBox2.ListIndex = 0
> End Sub
> Si vous supprimez dans le Userform le TextBox la macro ne se plante plus
> à
> l’ouverture attention j’ai besoine de ce TextBox pour d’autres
> applications.
>
> 1 ) que faut-il changer au fichier pour que cela ne se plante pas ?
> 2) comment écrire la macro MajFiche qui met à jour la Photo ‘macro en
> construction et neutralisée.
> Voir http://cjoint.com/?gDqlbKPULM
>
> @+ j'espère
>
> --
> Jean-Paul V
Non, je ne comprends pas.
Chez moi ton Userform fonctionne (sous réserve des observations de mon 1er
message).
Si, par exemple, je clique sur :
Mozart
Requiem
la listbox3 fait bien apparaître les 3 pochettes disponibles.
Il te reste à mettre à jour ton Texbox lors du click (choix) dans ta
listbox3 et, ce faisant, charger la photo portant cette référence.
Michel
"Jean-Paul V" <JeanPaulV@discussions.microsoft.com> a écrit dans le message
de news:7BAE8B4D-CE16-4811-AEA5-F5CAB195D51D@microsoft.com...
> Bonjour à tous
> Erreur 13
> Je reprends mon problème en partant d’un fichier plus simple proposé par
> MichDenis que j’ai modifié afin qu’il se rapproche plus de ce que je
> souhaite
> faire.
> J’ai une base de données avec 3 colonnes.
> 1ère colonne des compositeurs
> 2 ème la liste des œuvres disponible
> 3 ème les photo nommée *.jpg
> Pour un compositeur et une œuvre je peux avoir plusieurs interprétations
> donc plusieurs*.jpg
>
> J’ai un Userform qui à l’ouverture présente 3 listes en cascades qui se
> mettent à jour à l’ouverture ( Compositeur ; Œuvres ; CD nommés*.jpg ) .A
> l’ouverture le premier compositeur est sélectionné ; ce qui entraine la
> 1ère
> œuvre dispo de ce compositeur est sélectionnée dans la liste 2 et le 1 er
> disque disponible de cette œuvre .
> Le Userform a une image, je souhaite que celle-ci se mette à jour à chaque
> nouvelle sélection de liste .
> A l’ouverture je cherche donc à mettre le 1er *.jpg de la première Œuvre
> du
> premier Compositeur
>
> Pour ce faire j’ai dans Userform un TextBox nommé Photo censé se mettre à
> jour à chaque changement d’une des 3 listes et montrer le fichier *.jpg à
> mettre dans mon Image.
> Pourquoi UserForm_Initialize se plante lorsque je rajoute mon TextBox sur
> :
> Me.ListBox2.List = Application.Transpose(X.Items) de la Macro
> UserForm_Initialize alors que ce n’est pas dans l’ initialisation du
> Userform
>
> Private Sub UserForm_Initialize()
> Dim Rg As Range, X As Object
> With Feuil1
> Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
> End With
>
> Set X = CreateObject("Scripting.Dictionary")
> For Each C In Rg
> If Not X.Exists(CStr(C.Value)) Then 'C.Offset(0, -2) = choixnom Then
> X.Add CStr(C), CStr(C)
> End If
> Next
> Me.ListBox1.List = Application.Transpose(X.Items)
> ligne = 1
> majFiche
> Me.ListBox1.ListIndex = 0
> End Sub
>
> Private Sub ListBox1_Click()
> 'Nouveau solution MichDenis pour éviter doublons dans liste des oeuvres
> si plusieurs interprétations
> Dim Rg As Range, C As Range
> Dim X As Object
> Me.ListBox2.Clear
> Me.ListBox3.Clear
> With Sheets("Feuil1")
> ligne = .[A:A].Find(ListBox1, LookIn:=xlValues).Row
> ' majFiche
> Set Rg = .Range("B1:B" & .Range("B65536").End(xlUp).Row)
> End With
> 'Pour remplir sans doublons le contrôle ChoixOeuvre des données
> 'en colonnes c:c
> '------------------------
> Set X = CreateObject("Scripting.Dictionary")
> For Each C In Rg
> If Not X.Exists(CStr(C.Value)) And C.Offset(0, -1) = ListBox1 Then
> X.Add CStr(C), CStr(C)
> 'majFiche 'ajouté
> End If
> Next
> '--------------------------
> 'Affecte au contrôle la liste trouvée
> Me.ListBox2.List = Application.Transpose(X.Items) ‘ se plante ici ???
> majFiche
> Me.ListBox2.ListIndex = 0
> End Sub
> Si vous supprimez dans le Userform le TextBox la macro ne se plante plus
> à
> l’ouverture attention j’ai besoine de ce TextBox pour d’autres
> applications.
>
> 1 ) que faut-il changer au fichier pour que cela ne se plante pas ?
> 2) comment écrire la macro MajFiche qui met à jour la Photo ‘macro en
> construction et neutralisée.
> Voir http://cjoint.com/?gDqlbKPULM
>
> @+ j'espère
>
> --
> Jean-Paul V
Non, je ne comprends pas.
Chez moi ton Userform fonctionne (sous réserve des observations de mon 1er
message).
Si, par exemple, je clique sur :
Mozart
Requiem
la listbox3 fait bien apparaître les 3 pochettes disponibles.
Il te reste à mettre à jour ton Texbox lors du click (choix) dans ta
listbox3 et, ce faisant, charger la photo portant cette référence.
Michel
"Jean-Paul V" a écrit dans le message
de news:
> Bonjour à tous
> Erreur 13
> Je reprends mon problème en partant d’un fichier plus simple proposé par
> MichDenis que j’ai modifié afin qu’il se rapproche plus de ce que je
> souhaite
> faire.
> J’ai une base de données avec 3 colonnes.
> 1ère colonne des compositeurs
> 2 ème la liste des œuvres disponible
> 3 ème les photo nommée *.jpg
> Pour un compositeur et une œuvre je peux avoir plusieurs interprétations
> donc plusieurs*.jpg
>
> J’ai un Userform qui à l’ouverture présente 3 listes en cascades qui se
> mettent à jour à l’ouverture ( Compositeur ; Œuvres ; CD nommés*.jpg ) .A
> l’ouverture le premier compositeur est sélectionné ; ce qui entraine la
> 1ère
> œuvre dispo de ce compositeur est sélectionnée dans la liste 2 et le 1 er
> disque disponible de cette œuvre .
> Le Userform a une image, je souhaite que celle-ci se mette à jour à chaque
> nouvelle sélection de liste .
> A l’ouverture je cherche donc à mettre le 1er *.jpg de la première Œuvre
> du
> premier Compositeur
>
> Pour ce faire j’ai dans Userform un TextBox nommé Photo censé se mettre à
> jour à chaque changement d’une des 3 listes et montrer le fichier *.jpg à
> mettre dans mon Image.
> Pourquoi UserForm_Initialize se plante lorsque je rajoute mon TextBox sur
> :
> Me.ListBox2.List = Application.Transpose(X.Items) de la Macro
> UserForm_Initialize alors que ce n’est pas dans l’ initialisation du
> Userform
>
> Private Sub UserForm_Initialize()
> Dim Rg As Range, X As Object
> With Feuil1
> Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
> End With
>
> Set X = CreateObject("Scripting.Dictionary")
> For Each C In Rg
> If Not X.Exists(CStr(C.Value)) Then 'C.Offset(0, -2) = choixnom Then
> X.Add CStr(C), CStr(C)
> End If
> Next
> Me.ListBox1.List = Application.Transpose(X.Items)
> ligne = 1
> majFiche
> Me.ListBox1.ListIndex = 0
> End Sub
>
> Private Sub ListBox1_Click()
> 'Nouveau solution MichDenis pour éviter doublons dans liste des oeuvres
> si plusieurs interprétations
> Dim Rg As Range, C As Range
> Dim X As Object
> Me.ListBox2.Clear
> Me.ListBox3.Clear
> With Sheets("Feuil1")
> ligne = .[A:A].Find(ListBox1, LookIn:=xlValues).Row
> ' majFiche
> Set Rg = .Range("B1:B" & .Range("B65536").End(xlUp).Row)
> End With
> 'Pour remplir sans doublons le contrôle ChoixOeuvre des données
> 'en colonnes c:c
> '------------------------
> Set X = CreateObject("Scripting.Dictionary")
> For Each C In Rg
> If Not X.Exists(CStr(C.Value)) And C.Offset(0, -1) = ListBox1 Then
> X.Add CStr(C), CStr(C)
> 'majFiche 'ajouté
> End If
> Next
> '--------------------------
> 'Affecte au contrôle la liste trouvée
> Me.ListBox2.List = Application.Transpose(X.Items) ‘ se plante ici ???
> majFiche
> Me.ListBox2.ListIndex = 0
> End Sub
> Si vous supprimez dans le Userform le TextBox la macro ne se plante plus
> à
> l’ouverture attention j’ai besoine de ce TextBox pour d’autres
> applications.
>
> 1 ) que faut-il changer au fichier pour que cela ne se plante pas ?
> 2) comment écrire la macro MajFiche qui met à jour la Photo ‘macro en
> construction et neutralisée.
> Voir http://cjoint.com/?gDqlbKPULM
>
> @+ j'espère
>
> --
> Jean-Paul V
Bonjour Jean-Paul,
Voici le code de ton formulaire
'----------------------------------------
Private Sub ListBox1_Click()
Dim Rg As Range, C As Range
Dim Y As Object, T As String
Me.ListBox2.Clear
Me.ListBox3.Clear
With Sheets("Feuil1")
ligne = .[A:A].Find(ListBox1, LookIn:=xlValues).Row
' majFiche
Set Rg = .Range("B1:B" & .Range("B65536").End(xlUp).Row)
End With
'Pour remplir sans doublons le contrôle ChoixOeuvre des données
'en colonnes c:c
'------------------------
Set Y = CreateObject("Scripting.Dictionary")
If Me.ListBox1.ListIndex = -1 Then
Me.ListBox1.ListIndex = 0
End If
T = Me.ListBox1.List(ListBox1.ListIndex)
For Each C In Rg
If Not Y.Exists(CStr(C.Value)) And C.Offset(0, -1) = T Then
Y.Add CStr(C), CStr(C)
'majFiche 'ajouté
End If
Next
'--------------------------
'Affecte au contrôle la liste trouvée
Me.ListBox2.List = Application.Transpose(Y.items)
majFiche
ListBox2_Click
'NB Bien que cette instruction
'vient après majFiche majFiche montre la 1ère Oeuvre
Set Y = Nothing
End Sub
'----------------------------------------
Private Sub ListBox2_Click()
Dim T As String, P As String
If Me.ListBox2.ListIndex = -1 Then
Me.ListBox2.ListIndex = 0
End If
T = Me.ListBox2.List(ListBox2.ListIndex)
Set f = Sheets("Feuil1")
' Me.ChoixDisque.Clear
Me.ListBox3.Clear
P = Me.ListBox1.List(Me.ListBox1.ListIndex)
For Each C In f.Range("B1", f.[A65000].End(xlUp))
If UCase(C.Value) = UCase(P) And C.Offset(0, 1) = T Then
Me.ListBox3.AddItem C.Offset(0, 2)
ligne = C.Offset(0, 2).Row
Photo = C.Offset(0, 2)
' majFiche 'affiche la photo ne fonctionne pas encore
End If
Next C
'**************************************
'AJOUTÉE
ListBox3_Click
'**************************************
End Sub
'----------------------------------------
Sub majFiche()
' Me.Photo = "BACH37779.jpg"
' Me.Photo = Sheets("Feuil1").Cells(ligne, 3)
' If photo <> "" Then
' On Error Resume Next
' ChDrive Left(ActiveWorkbook.Path, 1)
' ChDir ActiveWorkbook.Path
' UserForm1.Image1.PictureSizeMode = fmPictureSizeModeZoom
' Me.Image1.Picture = LoadPicture(photo)
' Else
' Me.Image1.Picture = LoadPicture
' End If
End Sub
'----------------------------------------
Private Sub ListBox3_Click()
Dim P As String
If Me.ListBox3.ListCount > 0 Then
If Me.ListBox3.ListIndex = -1 Then
Me.ListBox3.ListIndex = 0 ' positionne sur le 1er
End If
End If
P = Me.ListBox3.List(Me.ListBox3.ListIndex)
ligne = Sheets("Feuil1").[C:C].Find(ListBox3, LookIn:=xlValues).Row
majFiche 'est sans effet
If P <> "" Then
Me.Image1.Picture = LoadPicture(ThisWorkbook.Path & "" & P)
End If
End Sub
'----------------------------------------
Private Sub UserForm_Initialize()
Dim Rg As Range, X As Object
With Feuil1
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) Then
X.Add CStr(C), CStr(C)
End If
Next
Me.ListBox1.List = Application.Transpose(X.items)
ligne = 1
'majFiche
ListBox1_Click
Set X = Nothing
End Sub
'----------------------------------------
"Jean-Paul V" a écrit dans le message de groupe de
discussion :
Bonjour à tous
Erreur 13
Je reprends mon problème en partant d’un fichier plus simple proposé par
MichDenis que j’ai modifié afin qu’il se rapproche plus de ce que je souhaite
faire.
J’ai une base de données avec 3 colonnes.
1ère colonne des compositeurs
2 ème la liste des œuvres disponible
3 ème les photo nommée *.jpg
Pour un compositeur et une œuvre je peux avoir plusieurs interprétations
donc plusieurs*.jpg
J’ai un Userform qui à l’ouverture présente 3 listes en cascades qui se
mettent à jour à l’ouverture ( Compositeur ; Œuvres ; CD nommés*.jpg ) .A
l’ouverture le premier compositeur est sélectionné ; ce qui entraine la 1ère
œuvre dispo de ce compositeur est sélectionnée dans la liste 2 et le 1 er
disque disponible de cette œuvre .
Le Userform a une image, je souhaite que celle-ci se mette à jour à chaque
nouvelle sélection de liste .
A l’ouverture je cherche donc à mettre le 1er *.jpg de la première Œuvre du
premier Compositeur
Pour ce faire j’ai dans Userform un TextBox nommé Photo censé se mettre à
jour à chaque changement d’une des 3 listes et montrer le fichier *.jpg à
mettre dans mon Image.
Pourquoi UserForm_Initialize se plante lorsque je rajoute mon TextBox sur :
Me.ListBox2.List = Application.Transpose(X.Items) de la Macro
UserForm_Initialize alors que ce n’est pas dans l’ initialisation du Userform
Private Sub UserForm_Initialize()
Dim Rg As Range, X As Object
With Feuil1
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) Then 'C.Offset(0, -2) = choixnom Then
X.Add CStr(C), CStr(C)
End If
Next
Me.ListBox1.List = Application.Transpose(X.Items)
ligne = 1
majFiche
Me.ListBox1.ListIndex = 0
End Sub
Private Sub ListBox1_Click()
'Nouveau solution MichDenis pour éviter doublons dans liste des oeuvres
si plusieurs interprétations
Dim Rg As Range, C As Range
Dim X As Object
Me.ListBox2.Clear
Me.ListBox3.Clear
With Sheets("Feuil1")
ligne = .[A:A].Find(ListBox1, LookIn:=xlValues).Row
' majFiche
Set Rg = .Range("B1:B" & .Range("B65536").End(xlUp).Row)
End With
'Pour remplir sans doublons le contrôle ChoixOeuvre des données
'en colonnes c:c
'------------------------
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) And C.Offset(0, -1) = ListBox1 Then
X.Add CStr(C), CStr(C)
'majFiche 'ajouté
End If
Next
'--------------------------
'Affecte au contrôle la liste trouvée
Me.ListBox2.List = Application.Transpose(X.Items) ‘ se plante ici ???
majFiche
Me.ListBox2.ListIndex = 0
End Sub
Si vous supprimez dans le Userform le TextBox la macro ne se plante plus à
l’ouverture attention j’ai besoine de ce TextBox pour d’autres applications.
1 ) que faut-il changer au fichier pour que cela ne se plante pas ?
2) comment écrire la macro MajFiche qui met à jour la Photo ‘macro en
construction et neutralisée.
Voir http://cjoint.com/?gDqlbKPULM
@+ j'espère
--
Jean-Paul V
Bonjour Jean-Paul,
Voici le code de ton formulaire
'----------------------------------------
Private Sub ListBox1_Click()
Dim Rg As Range, C As Range
Dim Y As Object, T As String
Me.ListBox2.Clear
Me.ListBox3.Clear
With Sheets("Feuil1")
ligne = .[A:A].Find(ListBox1, LookIn:=xlValues).Row
' majFiche
Set Rg = .Range("B1:B" & .Range("B65536").End(xlUp).Row)
End With
'Pour remplir sans doublons le contrôle ChoixOeuvre des données
'en colonnes c:c
'------------------------
Set Y = CreateObject("Scripting.Dictionary")
If Me.ListBox1.ListIndex = -1 Then
Me.ListBox1.ListIndex = 0
End If
T = Me.ListBox1.List(ListBox1.ListIndex)
For Each C In Rg
If Not Y.Exists(CStr(C.Value)) And C.Offset(0, -1) = T Then
Y.Add CStr(C), CStr(C)
'majFiche 'ajouté
End If
Next
'--------------------------
'Affecte au contrôle la liste trouvée
Me.ListBox2.List = Application.Transpose(Y.items)
majFiche
ListBox2_Click
'NB Bien que cette instruction
'vient après majFiche majFiche montre la 1ère Oeuvre
Set Y = Nothing
End Sub
'----------------------------------------
Private Sub ListBox2_Click()
Dim T As String, P As String
If Me.ListBox2.ListIndex = -1 Then
Me.ListBox2.ListIndex = 0
End If
T = Me.ListBox2.List(ListBox2.ListIndex)
Set f = Sheets("Feuil1")
' Me.ChoixDisque.Clear
Me.ListBox3.Clear
P = Me.ListBox1.List(Me.ListBox1.ListIndex)
For Each C In f.Range("B1", f.[A65000].End(xlUp))
If UCase(C.Value) = UCase(P) And C.Offset(0, 1) = T Then
Me.ListBox3.AddItem C.Offset(0, 2)
ligne = C.Offset(0, 2).Row
Photo = C.Offset(0, 2)
' majFiche 'affiche la photo ne fonctionne pas encore
End If
Next C
'**************************************
'AJOUTÉE
ListBox3_Click
'**************************************
End Sub
'----------------------------------------
Sub majFiche()
' Me.Photo = "BACH37779.jpg"
' Me.Photo = Sheets("Feuil1").Cells(ligne, 3)
' If photo <> "" Then
' On Error Resume Next
' ChDrive Left(ActiveWorkbook.Path, 1)
' ChDir ActiveWorkbook.Path
' UserForm1.Image1.PictureSizeMode = fmPictureSizeModeZoom
' Me.Image1.Picture = LoadPicture(photo)
' Else
' Me.Image1.Picture = LoadPicture
' End If
End Sub
'----------------------------------------
Private Sub ListBox3_Click()
Dim P As String
If Me.ListBox3.ListCount > 0 Then
If Me.ListBox3.ListIndex = -1 Then
Me.ListBox3.ListIndex = 0 ' positionne sur le 1er
End If
End If
P = Me.ListBox3.List(Me.ListBox3.ListIndex)
ligne = Sheets("Feuil1").[C:C].Find(ListBox3, LookIn:=xlValues).Row
majFiche 'est sans effet
If P <> "" Then
Me.Image1.Picture = LoadPicture(ThisWorkbook.Path & "" & P)
End If
End Sub
'----------------------------------------
Private Sub UserForm_Initialize()
Dim Rg As Range, X As Object
With Feuil1
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) Then
X.Add CStr(C), CStr(C)
End If
Next
Me.ListBox1.List = Application.Transpose(X.items)
ligne = 1
'majFiche
ListBox1_Click
Set X = Nothing
End Sub
'----------------------------------------
"Jean-Paul V" <JeanPaulV@discussions.microsoft.com> a écrit dans le message de groupe de
discussion : 7BAE8B4D-CE16-4811-AEA5-F5CAB195D51D@microsoft.com...
Bonjour à tous
Erreur 13
Je reprends mon problème en partant d’un fichier plus simple proposé par
MichDenis que j’ai modifié afin qu’il se rapproche plus de ce que je souhaite
faire.
J’ai une base de données avec 3 colonnes.
1ère colonne des compositeurs
2 ème la liste des œuvres disponible
3 ème les photo nommée *.jpg
Pour un compositeur et une œuvre je peux avoir plusieurs interprétations
donc plusieurs*.jpg
J’ai un Userform qui à l’ouverture présente 3 listes en cascades qui se
mettent à jour à l’ouverture ( Compositeur ; Œuvres ; CD nommés*.jpg ) .A
l’ouverture le premier compositeur est sélectionné ; ce qui entraine la 1ère
œuvre dispo de ce compositeur est sélectionnée dans la liste 2 et le 1 er
disque disponible de cette œuvre .
Le Userform a une image, je souhaite que celle-ci se mette à jour à chaque
nouvelle sélection de liste .
A l’ouverture je cherche donc à mettre le 1er *.jpg de la première Œuvre du
premier Compositeur
Pour ce faire j’ai dans Userform un TextBox nommé Photo censé se mettre à
jour à chaque changement d’une des 3 listes et montrer le fichier *.jpg à
mettre dans mon Image.
Pourquoi UserForm_Initialize se plante lorsque je rajoute mon TextBox sur :
Me.ListBox2.List = Application.Transpose(X.Items) de la Macro
UserForm_Initialize alors que ce n’est pas dans l’ initialisation du Userform
Private Sub UserForm_Initialize()
Dim Rg As Range, X As Object
With Feuil1
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) Then 'C.Offset(0, -2) = choixnom Then
X.Add CStr(C), CStr(C)
End If
Next
Me.ListBox1.List = Application.Transpose(X.Items)
ligne = 1
majFiche
Me.ListBox1.ListIndex = 0
End Sub
Private Sub ListBox1_Click()
'Nouveau solution MichDenis pour éviter doublons dans liste des oeuvres
si plusieurs interprétations
Dim Rg As Range, C As Range
Dim X As Object
Me.ListBox2.Clear
Me.ListBox3.Clear
With Sheets("Feuil1")
ligne = .[A:A].Find(ListBox1, LookIn:=xlValues).Row
' majFiche
Set Rg = .Range("B1:B" & .Range("B65536").End(xlUp).Row)
End With
'Pour remplir sans doublons le contrôle ChoixOeuvre des données
'en colonnes c:c
'------------------------
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) And C.Offset(0, -1) = ListBox1 Then
X.Add CStr(C), CStr(C)
'majFiche 'ajouté
End If
Next
'--------------------------
'Affecte au contrôle la liste trouvée
Me.ListBox2.List = Application.Transpose(X.Items) ‘ se plante ici ???
majFiche
Me.ListBox2.ListIndex = 0
End Sub
Si vous supprimez dans le Userform le TextBox la macro ne se plante plus à
l’ouverture attention j’ai besoine de ce TextBox pour d’autres applications.
1 ) que faut-il changer au fichier pour que cela ne se plante pas ?
2) comment écrire la macro MajFiche qui met à jour la Photo ‘macro en
construction et neutralisée.
Voir http://cjoint.com/?gDqlbKPULM
@+ j'espère
--
Jean-Paul V
Bonjour Jean-Paul,
Voici le code de ton formulaire
'----------------------------------------
Private Sub ListBox1_Click()
Dim Rg As Range, C As Range
Dim Y As Object, T As String
Me.ListBox2.Clear
Me.ListBox3.Clear
With Sheets("Feuil1")
ligne = .[A:A].Find(ListBox1, LookIn:=xlValues).Row
' majFiche
Set Rg = .Range("B1:B" & .Range("B65536").End(xlUp).Row)
End With
'Pour remplir sans doublons le contrôle ChoixOeuvre des données
'en colonnes c:c
'------------------------
Set Y = CreateObject("Scripting.Dictionary")
If Me.ListBox1.ListIndex = -1 Then
Me.ListBox1.ListIndex = 0
End If
T = Me.ListBox1.List(ListBox1.ListIndex)
For Each C In Rg
If Not Y.Exists(CStr(C.Value)) And C.Offset(0, -1) = T Then
Y.Add CStr(C), CStr(C)
'majFiche 'ajouté
End If
Next
'--------------------------
'Affecte au contrôle la liste trouvée
Me.ListBox2.List = Application.Transpose(Y.items)
majFiche
ListBox2_Click
'NB Bien que cette instruction
'vient après majFiche majFiche montre la 1ère Oeuvre
Set Y = Nothing
End Sub
'----------------------------------------
Private Sub ListBox2_Click()
Dim T As String, P As String
If Me.ListBox2.ListIndex = -1 Then
Me.ListBox2.ListIndex = 0
End If
T = Me.ListBox2.List(ListBox2.ListIndex)
Set f = Sheets("Feuil1")
' Me.ChoixDisque.Clear
Me.ListBox3.Clear
P = Me.ListBox1.List(Me.ListBox1.ListIndex)
For Each C In f.Range("B1", f.[A65000].End(xlUp))
If UCase(C.Value) = UCase(P) And C.Offset(0, 1) = T Then
Me.ListBox3.AddItem C.Offset(0, 2)
ligne = C.Offset(0, 2).Row
Photo = C.Offset(0, 2)
' majFiche 'affiche la photo ne fonctionne pas encore
End If
Next C
'**************************************
'AJOUTÉE
ListBox3_Click
'**************************************
End Sub
'----------------------------------------
Sub majFiche()
' Me.Photo = "BACH37779.jpg"
' Me.Photo = Sheets("Feuil1").Cells(ligne, 3)
' If photo <> "" Then
' On Error Resume Next
' ChDrive Left(ActiveWorkbook.Path, 1)
' ChDir ActiveWorkbook.Path
' UserForm1.Image1.PictureSizeMode = fmPictureSizeModeZoom
' Me.Image1.Picture = LoadPicture(photo)
' Else
' Me.Image1.Picture = LoadPicture
' End If
End Sub
'----------------------------------------
Private Sub ListBox3_Click()
Dim P As String
If Me.ListBox3.ListCount > 0 Then
If Me.ListBox3.ListIndex = -1 Then
Me.ListBox3.ListIndex = 0 ' positionne sur le 1er
End If
End If
P = Me.ListBox3.List(Me.ListBox3.ListIndex)
ligne = Sheets("Feuil1").[C:C].Find(ListBox3, LookIn:=xlValues).Row
majFiche 'est sans effet
If P <> "" Then
Me.Image1.Picture = LoadPicture(ThisWorkbook.Path & "" & P)
End If
End Sub
'----------------------------------------
Private Sub UserForm_Initialize()
Dim Rg As Range, X As Object
With Feuil1
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) Then
X.Add CStr(C), CStr(C)
End If
Next
Me.ListBox1.List = Application.Transpose(X.items)
ligne = 1
'majFiche
ListBox1_Click
Set X = Nothing
End Sub
'----------------------------------------
"Jean-Paul V" a écrit dans le message de groupe de
discussion :
Bonjour à tous
Erreur 13
Je reprends mon problème en partant d’un fichier plus simple proposé par
MichDenis que j’ai modifié afin qu’il se rapproche plus de ce que je souhaite
faire.
J’ai une base de données avec 3 colonnes.
1ère colonne des compositeurs
2 ème la liste des œuvres disponible
3 ème les photo nommée *.jpg
Pour un compositeur et une œuvre je peux avoir plusieurs interprétations
donc plusieurs*.jpg
J’ai un Userform qui à l’ouverture présente 3 listes en cascades qui se
mettent à jour à l’ouverture ( Compositeur ; Œuvres ; CD nommés*.jpg ) .A
l’ouverture le premier compositeur est sélectionné ; ce qui entraine la 1ère
œuvre dispo de ce compositeur est sélectionnée dans la liste 2 et le 1 er
disque disponible de cette œuvre .
Le Userform a une image, je souhaite que celle-ci se mette à jour à chaque
nouvelle sélection de liste .
A l’ouverture je cherche donc à mettre le 1er *.jpg de la première Œuvre du
premier Compositeur
Pour ce faire j’ai dans Userform un TextBox nommé Photo censé se mettre à
jour à chaque changement d’une des 3 listes et montrer le fichier *.jpg à
mettre dans mon Image.
Pourquoi UserForm_Initialize se plante lorsque je rajoute mon TextBox sur :
Me.ListBox2.List = Application.Transpose(X.Items) de la Macro
UserForm_Initialize alors que ce n’est pas dans l’ initialisation du Userform
Private Sub UserForm_Initialize()
Dim Rg As Range, X As Object
With Feuil1
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) Then 'C.Offset(0, -2) = choixnom Then
X.Add CStr(C), CStr(C)
End If
Next
Me.ListBox1.List = Application.Transpose(X.Items)
ligne = 1
majFiche
Me.ListBox1.ListIndex = 0
End Sub
Private Sub ListBox1_Click()
'Nouveau solution MichDenis pour éviter doublons dans liste des oeuvres
si plusieurs interprétations
Dim Rg As Range, C As Range
Dim X As Object
Me.ListBox2.Clear
Me.ListBox3.Clear
With Sheets("Feuil1")
ligne = .[A:A].Find(ListBox1, LookIn:=xlValues).Row
' majFiche
Set Rg = .Range("B1:B" & .Range("B65536").End(xlUp).Row)
End With
'Pour remplir sans doublons le contrôle ChoixOeuvre des données
'en colonnes c:c
'------------------------
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) And C.Offset(0, -1) = ListBox1 Then
X.Add CStr(C), CStr(C)
'majFiche 'ajouté
End If
Next
'--------------------------
'Affecte au contrôle la liste trouvée
Me.ListBox2.List = Application.Transpose(X.Items) ‘ se plante ici ???
majFiche
Me.ListBox2.ListIndex = 0
End Sub
Si vous supprimez dans le Userform le TextBox la macro ne se plante plus à
l’ouverture attention j’ai besoine de ce TextBox pour d’autres applications.
1 ) que faut-il changer au fichier pour que cela ne se plante pas ?
2) comment écrire la macro MajFiche qui met à jour la Photo ‘macro en
construction et neutralisée.
Voir http://cjoint.com/?gDqlbKPULM
@+ j'espère
--
Jean-Paul V
Dernière petite retouche : http://cjoint.com/?gDx6vJmtbs
Dernière petite retouche : http://cjoint.com/?gDx6vJmtbs
Dernière petite retouche : http://cjoint.com/?gDx6vJmtbs