Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Conflits entre macros

14 réponses
Avatar
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

4 réponses

1 2
Avatar
Jean-Paul V
Bonjour MichDenis
Très bizarrement la macro suivante se plante avec le libellé ‘’Airs
d’opéra’’ dans la colonne avec entête Pièce (il semble que ce qui ne lui
plait pas c'est le ' ).
Y auraient-il d'autres caractères qui présenterons le même inconvénient.
Erreur 2147217900(80040e14)
Private Sub ListBox1_Click()
Dim Requete As String, Controle As String
Dim T As String
Me.ListBox2.Clear
T = Me.ListBox1.List(Me.ListBox1.ListIndex)
Controle = "Listbox2"
Requete = "SELECT Pièce From [" & NomFeuille & "$] Where Auteur like " & _
"'" & T & "' Group By Pièce"
MaRequêteAvecADO Controle, Requete
If Me.ListBox2.ListCount > 0 Then
If Me.ListBox2.ListIndex = -1 Then
Me.ListBox2.ListIndex = 0
End If
End If
End Sub

Bonne journée

--
Jean-Paul V


"MichDenis" wrote:

Dernière petite retouche : http://cjoint.com/?gDx6vJmtbs








Avatar
MichDenis
Le symbole " ' " (guillemet simple) est un cas connu
lorsqu'il fait partie d'un libellé d'une requête. Il
s'agit de le dédoubler.

Dans la procédure : Private Sub ListBox2_Click()

J'ai ajouté une ligne de code pour tenir compte de cet élément
Le guillemet simple doit être dédoubler même dans ce cas.
Air d'Opéra.
Après cette ligne de code :
T = Me.ListBox2.List(Me.ListBox2.ListIndex)
'Ajoute :
T = Replace(T, "'", "''")

| Y auraient-il d'autres caractères qui présenterons le même inconvénient

Je pense que non... mais adresse cette question sur le Forum Access, il y a
sûrement quelques férus sur le sujet.






"Jean-Paul V" a écrit dans le message de groupe de
discussion :
Bonjour MichDenis
Très bizarrement la macro suivante se plante avec le libellé ‘’Airs
d’opéra’’ dans la colonne avec entête Pièce (il semble que ce qui ne lui
plait pas c'est le ' ).
Y auraient-il d'autres caractères qui présenterons le même inconvénient.
Erreur 2147217900(80040e14)
Private Sub ListBox1_Click()
Dim Requete As String, Controle As String
Dim T As String
Me.ListBox2.Clear
T = Me.ListBox1.List(Me.ListBox1.ListIndex)
Controle = "Listbox2"
Requete = "SELECT Pièce From [" & NomFeuille & "$] Where Auteur like " & _
"'" & T & "' Group By Pièce"
MaRequêteAvecADO Controle, Requete
If Me.ListBox2.ListCount > 0 Then
If Me.ListBox2.ListIndex = -1 Then
Me.ListBox2.ListIndex = 0
End If
End If
End Sub

Bonne journée

--
Jean-Paul V


"MichDenis" wrote:

Dernière petite retouche : http://cjoint.com/?gDx6vJmtbs








Avatar
MichDenis
J'oubliais, si dans ta colonne Auteur, tu retrouves aussi des
guillemets simples, il te faudra ajouter la même ligne
de code à la procédure : ListBox1_Click
De toute façon c'est une sécurité de plus au cas où ...



"MichDenis" a écrit dans le message de groupe de discussion :
#EpasKl#

Le symbole " ' " (guillemet simple) est un cas connu
lorsqu'il fait partie d'un libellé d'une requête. Il
s'agit de le dédoubler.

Dans la procédure : Private Sub ListBox2_Click()

J'ai ajouté une ligne de code pour tenir compte de cet élément
Le guillemet simple doit être dédoubler même dans ce cas.
Air d'Opéra.
Après cette ligne de code :
T = Me.ListBox2.List(Me.ListBox2.ListIndex)
'Ajoute :
T = Replace(T, "'", "''")

| Y auraient-il d'autres caractères qui présenterons le même inconvénient

Je pense que non... mais adresse cette question sur le Forum Access, il y a
sûrement quelques férus sur le sujet.






"Jean-Paul V" a écrit dans le message de groupe de
discussion :
Bonjour MichDenis
Très bizarrement la macro suivante se plante avec le libellé ‘’Airs
d’opéra’’ dans la colonne avec entête Pièce (il semble que ce qui ne lui
plait pas c'est le ' ).
Y auraient-il d'autres caractères qui présenterons le même inconvénient.
Erreur 2147217900(80040e14)
Private Sub ListBox1_Click()
Dim Requete As String, Controle As String
Dim T As String
Me.ListBox2.Clear
T = Me.ListBox1.List(Me.ListBox1.ListIndex)
Controle = "Listbox2"
Requete = "SELECT Pièce From [" & NomFeuille & "$] Where Auteur like " & _
"'" & T & "' Group By Pièce"
MaRequêteAvecADO Controle, Requete
If Me.ListBox2.ListCount > 0 Then
If Me.ListBox2.ListIndex = -1 Then
Me.ListBox2.ListIndex = 0
End If
End If
End Sub

Bonne journée

--
Jean-Paul V


"MichDenis" wrote:

Dernière petite retouche : http://cjoint.com/?gDx6vJmtbs








Avatar
Jean-Paul V
Merci MichDenis pour cette mise au point.
--
Jean-Paul V


"MichDenis" wrote:


Le symbole " ' " (guillemet simple) est un cas connu
lorsqu'il fait partie d'un libellé d'une requête. Il
s'agit de le dédoubler.

Dans la procédure : Private Sub ListBox2_Click()

J'ai ajouté une ligne de code pour tenir compte de cet élément
Le guillemet simple doit être dédoubler même dans ce cas.
Air d'Opéra.
Après cette ligne de code :
T = Me.ListBox2.List(Me.ListBox2.ListIndex)
'Ajoute :
T = Replace(T, "'", "''")

| Y auraient-il d'autres caractères qui présenterons le même inconvénient

Je pense que non... mais adresse cette question sur le Forum Access, il y a
sûrement quelques férus sur le sujet.






"Jean-Paul V" a écrit dans le message de groupe de
discussion :
Bonjour MichDenis
Très bizarrement la macro suivante se plante avec le libellé ‘’Airs
d’opéra’’ dans la colonne avec entête Pièce (il semble que ce qui ne lui
plait pas c'est le ' ).
Y auraient-il d'autres caractères qui présenterons le même inconvénient.
Erreur 2147217900(80040e14)
Private Sub ListBox1_Click()
Dim Requete As String, Controle As String
Dim T As String
Me.ListBox2.Clear
T = Me.ListBox1.List(Me.ListBox1.ListIndex)
Controle = "Listbox2"
Requete = "SELECT Pièce From [" & NomFeuille & "$] Where Auteur like " & _
"'" & T & "' Group By Pièce"
MaRequêteAvecADO Controle, Requete
If Me.ListBox2.ListCount > 0 Then
If Me.ListBox2.ListIndex = -1 Then
Me.ListBox2.ListIndex = 0
End If
End If
End Sub

Bonne journée

--
Jean-Paul V


"MichDenis" wrote:

> Dernière petite retouche : http://cjoint.com/?gDx6vJmtbs
>
>
>
>
>
>



1 2