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

T = Replace(T, T, = " = LEFT(T,LEN(T)-SEARCH("" N°"",T))")

13 réponses
Avatar
Jean-Paul V
Bonjour à tous

J’ai une requète ADO dans un Userform qui fonctionne :

Me.ComboBox1.Clear
Établir_Connexion (File)
Requete = "SELECT Pièce From [" & NomFeuille & "$] Group By Pièce"
Controle = "Combobox1"
MaRequêteAvecADO Controle, Requete

Elle me donne dans le combobox la liste :
Airs d'opéra
Concerto N°1
Concerto N°2
Requiem
Sonate N°2
Variation

Or je souhaite obtenir :
Airs d'opéra
Concerto
Requiem
Sonate
Variation

Je voudrais éliminer dans mon Combobox N°.. ect J’ai donc imaginé la
nouvelle macro :
Me.ComboBox1.Clear
T = Me.ComboBox1.List(Me.ComboBox1.ListIndex)
T = Replace(T, "'", "''")
T = Replace(T, T, = " = LEFT(T,LEN(T)-SEARCH("" N°"",T))")
Controle = "ComboBox1"
Requete = "SELECT Pièce From [" & NomFeuille & "$] like " & _
"'" & T & "' Group By Pièce"
MaRequêteAvecADO Controle, Requete

J’obtiens erreur de syntaxe sur T = Replace(T, T, = " =
LEFT(T,LEN(T)-SEARCH("" N°"",T))")
J’ai fait plusieurs autres essais en vain …solution ?
http://cjoint.com/?hdqgslQekw

A + j’espère

--
Jean-Paul V

10 réponses

1 2
Avatar
Daniel.C
Bonjour.
Non testé :

Sub MaRequêteAvecADO(Controle As String, Requete As String)
Set dico = CreateObject("scripting.dictionary")
Rst.Open Requete, Conn, adOpenStatic, adLockOptimistic
Do While Rst.EOF = False
If Rst(0) <> "" Then
dico.Add Split(Rst(0), " ")(0)
End If
Rst.MoveNext
Loop
Rst.Close
For Each i In dico.items
UserForm1.Controls(Controle).AddItem i
End Sub

Cordialement.
Daniel

Bonjour à tous

J’ai une requète ADO dans un Userform qui fonctionne :

Me.ComboBox1.Clear
Établir_Connexion (File)
Requete = "SELECT Pièce From [" & NomFeuille & "$] Group By Pièce"
Controle = "Combobox1"
MaRequêteAvecADO Controle, Requete

Elle me donne dans le combobox la liste :
Airs d'opéra
Concerto N°1
Concerto N°2
Requiem
Sonate N°2
Variation

Or je souhaite obtenir :
Airs d'opéra
Concerto
Requiem
Sonate
Variation

Je voudrais éliminer dans mon Combobox N°.. ect J’ai donc imaginé la
nouvelle macro :
Me.ComboBox1.Clear
T = Me.ComboBox1.List(Me.ComboBox1.ListIndex)
T = Replace(T, "'", "''")
T = Replace(T, T, = " = LEFT(T,LEN(T)-SEARCH("" N°"",T))")
Controle = "ComboBox1"
Requete = "SELECT Pièce From [" & NomFeuille & "$] like " & _
"'" & T & "' Group By Pièce"
MaRequêteAvecADO Controle, Requete

J’obtiens erreur de syntaxe sur T = Replace(T, T, = " =
LEFT(T,LEN(T)-SEARCH("" N°"",T))")
J’ai fait plusieurs autres essais en vain …solution ?
http://cjoint.com/?hdqgslQekw

A + j’espère


Avatar
FFO
Salut à toi

Essaies comme ceci :

T = Replace(T, T, "" = " = LEFT(T,LEN(T)-SEARCH("" N°"",T))")

Celà devrait mieux fonctionner

Dis moi !!!!
Avatar
Jean-Paul V
Bonjour

non ça se plante aussi, de plus je me suis aperçu que la fonction est plus
simple c'est un truc comme :
T = Replace(T, T, " = LEFT(T,SEARCH("" N°"",T)-1)") il n'y a pas de LEN

à+


--
Jean-Paul V


"FFO" wrote:

Salut à toi

Essaies comme ceci :

T = Replace(T, T, "" = " = LEFT(T,LEN(T)-SEARCH("" N°"",T))")

Celà devrait mieux fonctionner

Dis moi !!!!



Avatar
Jean-Paul V
Bonjour Daniel

Dans votre macro je ne vois nullepart où on veut se débarrasser de N° et de
ce qui suit derrière.
Bonne soirée
--
Jean-Paul V


"Daniel.C" wrote:

Bonjour.
Non testé :

Sub MaRequêteAvecADO(Controle As String, Requete As String)
Set dico = CreateObject("scripting.dictionary")
Rst.Open Requete, Conn, adOpenStatic, adLockOptimistic
Do While Rst.EOF = False
If Rst(0) <> "" Then
dico.Add Split(Rst(0), " ")(0)
End If
Rst.MoveNext
Loop
Rst.Close
For Each i In dico.items
UserForm1.Controls(Controle).AddItem i
End Sub

Cordialement.
Daniel

> Bonjour à tous
>
> J’ai une requète ADO dans un Userform qui fonctionne :
>
> Me.ComboBox1.Clear
> Établir_Connexion (File)
> Requete = "SELECT Pièce From [" & NomFeuille & "$] Group By Pièce"
> Controle = "Combobox1"
> MaRequêteAvecADO Controle, Requete
>
> Elle me donne dans le combobox la liste :
> Airs d'opéra
> Concerto N°1
> Concerto N°2
> Requiem
> Sonate N°2
> Variation
>
> Or je souhaite obtenir :
> Airs d'opéra
> Concerto
> Requiem
> Sonate
> Variation
>
> Je voudrais éliminer dans mon Combobox N°.. ect J’ai donc imaginé la
> nouvelle macro :
> Me.ComboBox1.Clear
> T = Me.ComboBox1.List(Me.ComboBox1.ListIndex)
> T = Replace(T, "'", "''")
> T = Replace(T, T, = " = LEFT(T,LEN(T)-SEARCH("" N°"",T))")
> Controle = "ComboBox1"
> Requete = "SELECT Pièce From [" & NomFeuille & "$] like " & _
> "'" & T & "' Group By Pièce"
> MaRequêteAvecADO Controle, Requete
>
> J’obtiens erreur de syntaxe sur T = Replace(T, T, = " =
> LEFT(T,LEN(T)-SEARCH("" N°"",T))")
> J’ai fait plusieurs autres essais en vain …solution ?
> http://cjoint.com/?hdqgslQekw
>
> A + j’espère





Avatar
Daniel.C
Split.
Split(Rst(0), " ") découpe le texte (Rst) en autant de morceaux qu'il y
a d'espaces. Split(Rst(0), " ")(0) prend le premier tronçon. De
"concerto n°1", il ne retient que "concerto".
Daniel
Bonjour Daniel

Dans votre macro je ne vois nullepart où on veut se débarrasser de N° et de
ce qui suit derrière.
Bonne soirée
--
Jean-Paul V


"Daniel.C" wrote:

Bonjour.
Non testé :

Sub MaRequêteAvecADO(Controle As String, Requete As String)
Set dico = CreateObject("scripting.dictionary")
Rst.Open Requete, Conn, adOpenStatic, adLockOptimistic
Do While Rst.EOF = False
If Rst(0) <> "" Then
dico.Add Split(Rst(0), " ")(0)
End If
Rst.MoveNext
Loop
Rst.Close
For Each i In dico.items
UserForm1.Controls(Controle).AddItem i
End Sub

Cordialement.
Daniel

Bonjour à tous

J’ai une requète ADO dans un Userform qui fonctionne :

Me.ComboBox1.Clear
Établir_Connexion (File)
Requete = "SELECT Pièce From [" & NomFeuille & "$] Group By Pièce"
Controle = "Combobox1"
MaRequêteAvecADO Controle, Requete

Elle me donne dans le combobox la liste :
Airs d'opéra
Concerto N°1
Concerto N°2
Requiem
Sonate N°2
Variation

Or je souhaite obtenir :
Airs d'opéra
Concerto
Requiem
Sonate
Variation

Je voudrais éliminer dans mon Combobox N°.. ect J’ai donc imaginé la
nouvelle macro :
Me.ComboBox1.Clear
T = Me.ComboBox1.List(Me.ComboBox1.ListIndex)
T = Replace(T, "'", "''")
T = Replace(T, T, = " = LEFT(T,LEN(T)-SEARCH("" N°"",T))")
Controle = "ComboBox1"
Requete = "SELECT Pièce From [" & NomFeuille & "$] like " & _
"'" & T & "' Group By Pièce"
MaRequêteAvecADO Controle, Requete

J’obtiens erreur de syntaxe sur T = Replace(T, T, = " =
LEFT(T,LEN(T)-SEARCH("" N°"",T))")
J’ai fait plusieurs autres essais en vain …solution ?
http://cjoint.com/?hdqgslQekw

A + j’espère









Avatar
MichDenis
Ce que tu demandes est difficilement réalisable sans développer une usine à gaz !

A ) Une requête "Select" n'est pas faite pour modifier le contenu du champ
mais pour l'extraire selon des critères le cas échéant.

B ) Avoir un contrôle "Listbox" qui affiche autre chose que le contenu du champ
d'où il est extrait... Comment penses-tu pouvoir extraire la photo à l'aide d'une
requête si le choix de l'usager dans le contrôle "Listbox" (pièce) ne se retrouve
pas dans le champ "Pièce" de la table dans la feuille de calcul ? Pour exécuter
cette requête, tu vas vouloir ajouter le "N°" au champ de la requête ?????

C ) Si tu as plusieurs concerto avec un "N°" ayant des images différentes, comment
retrouver l'image avec la bonne "Pièce" ?

Je t'invite à cogiter la dessus !


"Jean-Paul V" a écrit dans le message de groupe de
discussion :
Bonjour à tous

J’ai une requète ADO dans un Userform qui fonctionne :

Me.ComboBox1.Clear
Établir_Connexion (File)
Requete = "SELECT Pièce From [" & NomFeuille & "$] Group By Pièce"
Controle = "Combobox1"
MaRequêteAvecADO Controle, Requete

Elle me donne dans le combobox la liste :
Airs d'opéra
Concerto N°1
Concerto N°2
Requiem
Sonate N°2
Variation

Or je souhaite obtenir :
Airs d'opéra
Concerto
Requiem
Sonate
Variation

Je voudrais éliminer dans mon Combobox N°.. ect J’ai donc imaginé la
nouvelle macro :
Me.ComboBox1.Clear
T = Me.ComboBox1.List(Me.ComboBox1.ListIndex)
T = Replace(T, "'", "''")
T = Replace(T, T, = " = LEFT(T,LEN(T)-SEARCH("" N°"",T))")
Controle = "ComboBox1"
Requete = "SELECT Pièce From [" & NomFeuille & "$] like " & _
"'" & T & "' Group By Pièce"
MaRequêteAvecADO Controle, Requete

J’obtiens erreur de syntaxe sur T = Replace(T, T, = " LEFT(T,LEN(T)-SEARCH("" N°"",T))")
J’ai fait plusieurs autres essais en vain …solution ?
http://cjoint.com/?hdqgslQekw

A + j’espère

--
Jean-Paul V
Avatar
Jean-Paul V
Bonjour MichDenis

A ) Avec votre modif concernant le PB du ‘ vous m’avez montré que le pouvait
dans la requête travaillé sur des éléments modifiés sans changer le champ de
la requête.
B ) Les 3 Listbox en cascade fonctionnent très bien grâce à vos conseils,
ils permettent de sélectinner très rapidement un élément de la BD et de
montrer la pochette du CD.
C ) Le Combobox a pour but de créer d’une manière indirecte ( alimente un
TextBox ) de nouveaux éléments dans la BD ce qui explique que je souhaite que
ce combobox se mette à jour automatiquement dès que l’on a un autre type
d’œuvre ce qui explique que je veux éliminer dans le Row source N° ..et ce
qui suit .Pour l’intant je passe par un champ externe mis à jour
manuellement. Le plus simple est peut-être de créer une macro qui met à jour
ce champ ?

A + j’espère

--
Jean-Paul V


"MichDenis" wrote:

Ce que tu demandes est difficilement réalisable sans développer une usine à gaz !

A ) Une requête "Select" n'est pas faite pour modifier le contenu du champ
mais pour l'extraire selon des critères le cas échéant.

B ) Avoir un contrôle "Listbox" qui affiche autre chose que le contenu du champ
d'où il est extrait... Comment penses-tu pouvoir extraire la photo à l'aide d'une
requête si le choix de l'usager dans le contrôle "Listbox" (pièce) ne se retrouve
pas dans le champ "Pièce" de la table dans la feuille de calcul ? Pour exécuter
cette requête, tu vas vouloir ajouter le "N°" au champ de la requête ?????

C ) Si tu as plusieurs concerto avec un "N°" ayant des images différentes, comment
retrouver l'image avec la bonne "Pièce" ?

Je t'invite à cogiter la dessus !


"Jean-Paul V" a écrit dans le message de groupe de
discussion :
Bonjour à tous

J’ai une requète ADO dans un Userform qui fonctionne :

Me.ComboBox1.Clear
Établir_Connexion (File)
Requete = "SELECT Pièce From [" & NomFeuille & "$] Group By Pièce"
Controle = "Combobox1"
MaRequêteAvecADO Controle, Requete

Elle me donne dans le combobox la liste :
Airs d'opéra
Concerto N°1
Concerto N°2
Requiem
Sonate N°2
Variation

Or je souhaite obtenir :
Airs d'opéra
Concerto
Requiem
Sonate
Variation

Je voudrais éliminer dans mon Combobox N°.. ect J’ai donc imaginé la
nouvelle macro :
Me.ComboBox1.Clear
T = Me.ComboBox1.List(Me.ComboBox1.ListIndex)
T = Replace(T, "'", "''")
T = Replace(T, T, = " = LEFT(T,LEN(T)-SEARCH("" N°"",T))")
Controle = "ComboBox1"
Requete = "SELECT Pièce From [" & NomFeuille & "$] like " & _
"'" & T & "' Group By Pièce"
MaRequêteAvecADO Controle, Requete

J’obtiens erreur de syntaxe sur T = Replace(T, T, = " > LEFT(T,LEN(T)-SEARCH("" N°"",T))")
J’ai fait plusieurs autres essais en vain …solution ?
http://cjoint.com/?hdqgslQekw

A + j’espère

--
Jean-Paul V




Avatar
MichDenis
| A ) Avec votre modif concernant le PB du ‘ vous m’avez montré que le pouvait
| dans la requête travaillé sur des éléments modifiés sans changer le champ de
| la requête.

****Moi, j'arrive à une autre conclusion : Remarque qu'avec le dédoublement
des " ' " , le contenu demeure le même dans le contrôle "Listbox" et la cellule
de la plage de cellules. Cela ne modifie en rien le contenu. Cela n'a rien à voir
avec ce que toi tu veux faire !

****Je n'ai pas compris ce que tu veux faire...mais il faudra que tu ajoutes
une nouvelle macro ou un bout de code...dans ton formulaire, tu parles d'un
combobox et d'un textbox... cela n'a rien à voir avec les 2 ListBox et un
contrôle "Picture" que contenait le formulaire que tu as publié.
Avatar
Jean-Paul V
Bonjour MichDenis
Merci pour vos bons conseils.
J'ai compris que je faisais fausse route, et je voulais trouver une solution
avant de vous répondre.
Grace à vos précédentes réponses à d'autres questions, jai trouvé cette
solution qui marche (NB mon Combobox est nommé Types ):
Sub RemplitcomboTypes()
Dim N As String, P As Variant
Dim T As String
Set MonDico = CreateObject("Scripting.Dictionary")
' Me.ComboBox1.Clear
Me.Types.Clear
With Sheets("BD")
Set Rg = .Range("C2:C" & .Range("C65536").End(xlUp).Row)
End With
For Each C In Rg
N = """" & C.Value & """"
P = "=TEXT(LEFT(" & N & ",SEARCH("" N°""," & N & ")-1),)"
P = Evaluate("TEXT(LEFT(" & N & ",SEARCH("" N°""," & N & ")-1),)")
If IsError(P) Then
P = N
P = Evaluate(N)
Else
End If
If Not MonDico.Exists(P) Then MonDico.Add P, P
Next C
temp = MonDico.items ' le tableau temp() reçoit les éléments de MonDico
Call tri(temp, LBound(temp), UBound(temp)) ' tri
Me.Types.List = temp
Me.Types.ListIndex = -1

Voir le fichier : http://cjoint.com/?hgs3YLahPh

--
Jean-Paul V


"MichDenis" wrote:


| A ) Avec votre modif concernant le PB du ‘ vous m’avez montré que le pouvait
| dans la requête travaillé sur des éléments modifiés sans changer le champ de
| la requête.

****Moi, j'arrive à une autre conclusion : Remarque qu'avec le dédoublement
des " ' " , le contenu demeure le même dans le contrôle "Listbox" et la cellule
de la plage de cellules. Cela ne modifie en rien le contenu. Cela n'a rien à voir
avec ce que toi tu veux faire !

****Je n'ai pas compris ce que tu veux faire...mais il faudra que tu ajoutes
une nouvelle macro ou un bout de code...dans ton formulaire, tu parles d'un
combobox et d'un textbox... cela n'a rien à voir avec les 2 ListBox et un
contrôle "Picture" que contenait le formulaire que tu as publié.




Avatar
MichDenis
Bravo Jean-Paul, ton formulaire se charge sans problème !
Tu as fait du bon travail.

Je me suis permis de modifier la procédure "Private Sub UserForm_Initialize()"
pour faire le chargement du combobox "Types". L'approche ne requiert pas
l'usage d'une procédure de tri. De plus, je crois que cela augmente la vitesse
de traitement d'où une ouverture plus rapide du formulaire.

http://cjoint.com/?hhdkW41U0C





"Jean-Paul V" a écrit dans le message de groupe de
discussion :
Bonjour MichDenis
Merci pour vos bons conseils.
J'ai compris que je faisais fausse route, et je voulais trouver une solution
avant de vous répondre.
Grace à vos précédentes réponses à d'autres questions, jai trouvé cette
solution qui marche (NB mon Combobox est nommé Types ):
Sub RemplitcomboTypes()
Dim N As String, P As Variant
Dim T As String
Set MonDico = CreateObject("Scripting.Dictionary")
' Me.ComboBox1.Clear
Me.Types.Clear
With Sheets("BD")
Set Rg = .Range("C2:C" & .Range("C65536").End(xlUp).Row)
End With
For Each C In Rg
N = """" & C.Value & """"
P = "=TEXT(LEFT(" & N & ",SEARCH("" N°""," & N & ")-1),)"
P = Evaluate("TEXT(LEFT(" & N & ",SEARCH("" N°""," & N & ")-1),)")
If IsError(P) Then
P = N
P = Evaluate(N)
Else
End If
If Not MonDico.Exists(P) Then MonDico.Add P, P
Next C
temp = MonDico.items ' le tableau temp() reçoit les éléments de MonDico
Call tri(temp, LBound(temp), UBound(temp)) ' tri
Me.Types.List = temp
Me.Types.ListIndex = -1

Voir le fichier : http://cjoint.com/?hgs3YLahPh

--
Jean-Paul V


"MichDenis" wrote:


| A ) Avec votre modif concernant le PB du ‘ vous m’avez montré que le pouvait
| dans la requête travaillé sur des éléments modifiés sans changer le champ de
| la requête.

****Moi, j'arrive à une autre conclusion : Remarque qu'avec le dédoublement
des " ' " , le contenu demeure le même dans le contrôle "Listbox" et la cellule
de la plage de cellules. Cela ne modifie en rien le contenu. Cela n'a rien à voir
avec ce que toi tu veux faire !

****Je n'ai pas compris ce que tu veux faire...mais il faudra que tu ajoutes
une nouvelle macro ou un bout de code...dans ton formulaire, tu parles d'un
combobox et d'un textbox... cela n'a rien à voir avec les 2 ListBox et un
contrôle "Picture" que contenait le formulaire que tu as publié.




1 2