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

extraire mot par mot d'un champ texte

15 réponses
Avatar
sylvere
Bonjour,
je cherche le moyen d'extraire mot par mot, chaque mot d'un champ texte qui
en contient plusieurs par enregistrement :
ex: " famille, culture, confiance, etc...)
le but est de faire une liste, un mot par ligne dans une requête ou un
nouveau champ.
Merci pour les conseils
Sylvere

10 réponses

1 2
Avatar
Fabien
Bonjour,
je cherche le moyen d'extraire mot par mot, chaque mot d'un champ texte qui
en contient plusieurs par enregistrement :
ex: " famille, culture, confiance, etc...)
le but est de faire une liste, un mot par ligne dans une requête ou un
nouveau champ.
Merci pour les conseils
Sylvere


Bonjour Sylvere

Si tes mot sont séparé par des , alors utilise la fonction split
Dim Montableau as variant
Dim I As Integer
Montableau=split(Machaine,",")
For I=0 to Ubound(MonTableau)
.
.
.
Next I
@+

Avatar
sylvere
Merci pour l'aide, les mots sont séparés par des sauts à la ligne (entrée)
Je place ce code sur un bouton de commande ?
Machaine signifie le no mde mon champ conteant le texte à extraire?
Dois je créer une table avec un champ "Montableau" ?
Merci d'avance

"Fabien" a écrit dans le message de news:
47ac29a2$0$876$
Bonjour,
je cherche le moyen d'extraire mot par mot, chaque mot d'un champ texte
qui


en contient plusieurs par enregistrement :
ex: " famille, culture, confiance, etc...)
le but est de faire une liste, un mot par ligne dans une requête ou un
nouveau champ.
Merci pour les conseils
Sylvere


Bonjour Sylvere

Si tes mot sont séparé par des , alors utilise la fonction split
Dim Montableau as variant
Dim I As Integer
Montableau=split(Machaine,",")
For I=0 to Ubound(MonTableau)
.
.
.
Next I
@+



Avatar
Fabien
Merci pour l'aide, les mots sont séparés par des sauts à la ligne (entrée)
Je place ce code sur un bouton de commande ?
Machaine signifie le no mde mon champ conteant le texte à extraire?
Dois je créer une table avec un champ "Montableau" ?
Merci d'avance

"Fabien" a écrit dans le message de news:
47ac29a2$0$876$
Bonjour,
je cherche le moyen d'extraire mot par mot, chaque mot d'un champ texte
qui


en contient plusieurs par enregistrement :
ex: " famille, culture, confiance, etc...)
le but est de faire une liste, un mot par ligne dans une requête ou un
nouveau champ.
Merci pour les conseils
Sylvere


Bonjour Sylvere

Si tes mot sont séparé par des , alors utilise la fonction split
Dim Montableau as variant
Dim I As Integer
Montableau=split(Machaine,",")
For I=0 to Ubound(MonTableau)
.
.
.
Next I
@+



Reprenons :

Tu as une table. Dans cette table un champ texte qui contient plusieurs
mots séparés par un retour chariot et tu veux extraire ces mots pour en
faire une liste?
J'ai bon là ?



Avatar
Fabien
Merci pour l'aide, les mots sont séparés par des sauts à la ligne
(entrée)
Je place ce code sur un bouton de commande ?
Machaine signifie le no mde mon champ conteant le texte à extraire?
Dois je créer une table avec un champ "Montableau" ?
Merci d'avance

"Fabien" a écrit dans le message de news:
47ac29a2$0$876$
Bonjour,
je cherche le moyen d'extraire mot par mot, chaque mot d'un champ texte
qui


en contient plusieurs par enregistrement :
ex: " famille, culture, confiance, etc...)
le but est de faire une liste, un mot par ligne dans une requête ou un
nouveau champ.
Merci pour les conseils
Sylvere


Bonjour Sylvere

Si tes mot sont séparé par des , alors utilise la fonction split
Dim Montableau as variant
Dim I As Integer
Montableau=split(Machaine,",")
For I=0 to Ubound(MonTableau)
.
.
.
Next I
@+



Reprenons :

Tu as une table. Dans cette table un champ texte qui contient plusieurs
mots séparés par un retour chariot et tu veux extraire ces mots pour en
faire une liste?
J'ai bon là ?
Si j'ai bon alors

Sub Extrait()
Dim Rst As DAO.Recordset
Dim Maliste As String
Set Rst = CurrentDb.OpenRecordset("MaTable")
'>On parcourt Matable
While Not Rst.EOF
'pour chaque Champs text MonChamp on remplace le retour chariot par
un ; et on concatène dans Maliste
Maliste = Maliste & Replace(Rst("MonChamp"), vbCrLf, ";") & ";"
Rst.MoveNext
Wend
Maliste = Left(Maliste, Len(Maliste) - 1) ' contient sous forme de liste
les éléments séparés par un ;
Rst.Close
Set Rst = Nothing

End Sub
Te permet de reccuperer sous forme de liste.
A toi de voir ce que tu veux en faire.
Par ex: si c'est la source d'une liste déroulante
Me.maliste.rowsource=Maliste
@+




Avatar
sylvere
Merci Fabien pour la contribution.
Ca coince à la ligne ou j'ai pointé le message d'erreur'utilisation
incorrecte de Null

Maliste = Maliste & Replace(Rst("Motscleserie1"), vbCrLf, ";") & ";"
Pour la destination de cette liste, c'est une sortie papier au final, alors
ça peut être placé dans uene requête, ou une table..
Merci pour tes réponses

"Fabien" a écrit dans le message de news:
47ac5ac1$0$884$
Merci pour l'aide, les mots sont séparés par des sauts à la ligne
(entrée)
Je place ce code sur un bouton de commande ?
Machaine signifie le no mde mon champ conteant le texte à extraire?
Dois je créer une table avec un champ "Montableau" ?
Merci d'avance

"Fabien" a écrit dans le message de news:
47ac29a2$0$876$
Bonjour,
je cherche le moyen d'extraire mot par mot, chaque mot d'un champ
texte





qui
en contient plusieurs par enregistrement :
ex: " famille, culture, confiance, etc...)
le but est de faire une liste, un mot par ligne dans une requête ou
un





nouveau champ.
Merci pour les conseils
Sylvere


Bonjour Sylvere

Si tes mot sont séparé par des , alors utilise la fonction split
Dim Montableau as variant
Dim I As Integer
Montableau=split(Machaine,",")
For I=0 to Ubound(MonTableau)
.
.
.
Next I
@+



Reprenons :

Tu as une table. Dans cette table un champ texte qui contient plusieurs
mots séparés par un retour chariot et tu veux extraire ces mots pour en
faire une liste?
J'ai bon là ?
Si j'ai bon alors

Sub Extrait()
Dim Rst As DAO.Recordset
Dim Maliste As String
Set Rst = CurrentDb.OpenRecordset("MaTable")
'>On parcourt Matable
While Not Rst.EOF
'pour chaque Champs text MonChamp on remplace le retour chariot par
un ; et on concatène dans Maliste
Maliste = Maliste & Replace(Rst("MonChamp"), vbCrLf, ";") & ";"
Rst.MoveNext
Wend
Maliste = Left(Maliste, Len(Maliste) - 1) ' contient sous forme de liste
les éléments séparés par un ;
Rst.Close
Set Rst = Nothing

End Sub
Te permet de reccuperer sous forme de liste.
A toi de voir ce que tu veux en faire.
Par ex: si c'est la source d'une liste déroulante
Me.maliste.rowsource=Maliste
@+






Avatar
Fabien
Merci Fabien pour la contribution.
Ca coince à la ligne ou j'ai pointé le message d'erreur'utilisation
incorrecte de Null

Remplace

Maliste = Maliste & Replace(Rst("Motscleserie1"), vbCrLf, ";") & ";"
par

Maliste = Maliste & Replace(nz(Rst("Motscleserie1"),""), vbCrLf,
";") & ";"

dans certain enreg le champs motscleserie1 est vide

Pour la destination de cette liste, c'est une sortie papier au final, alors
ça peut être placé dans uene requête, ou une table..
Merci pour tes réponses

"Fabien" a écrit dans le message de news:
47ac5ac1$0$884$
Merci pour l'aide, les mots sont séparés par des sauts à la ligne
(entrée)
Je place ce code sur un bouton de commande ?
Machaine signifie le no mde mon champ conteant le texte à extraire?
Dois je créer une table avec un champ "Montableau" ?
Merci d'avance

"Fabien" a écrit dans le message de news:
47ac29a2$0$876$
Bonjour,
je cherche le moyen d'extraire mot par mot, chaque mot d'un champ
texte





qui
en contient plusieurs par enregistrement :
ex: " famille, culture, confiance, etc...)
le but est de faire une liste, un mot par ligne dans une requête ou
un





nouveau champ.
Merci pour les conseils
Sylvere


Bonjour Sylvere

Si tes mot sont séparé par des , alors utilise la fonction split
Dim Montableau as variant
Dim I As Integer
Montableau=split(Machaine,",")
For I=0 to Ubound(MonTableau)
.
.
.
Next I
@+


Reprenons :

Tu as une table. Dans cette table un champ texte qui contient plusieurs
mots séparés par un retour chariot et tu veux extraire ces mots pour en
faire une liste?
J'ai bon là ?
Si j'ai bon alors

Sub Extrait()
Dim Rst As DAO.Recordset
Dim Maliste As String
Set Rst = CurrentDb.OpenRecordset("MaTable")
'>On parcourt Matable
While Not Rst.EOF
'pour chaque Champs text MonChamp on remplace le retour chariot par
un ; et on concatène dans Maliste
Maliste = Maliste & Replace(Rst("MonChamp"), vbCrLf, ";") & ";"
Rst.MoveNext
Wend
Maliste = Left(Maliste, Len(Maliste) - 1) ' contient sous forme de liste
les éléments séparés par un ;
Rst.Close
Set Rst = Nothing

End Sub
Te permet de reccuperer sous forme de liste.
A toi de voir ce que tu veux en faire.
Par ex: si c'est la source d'une liste déroulante
Me.maliste.rowsource=Maliste
@+





Maliste = Maliste & Replace(nz(Rst("MonChamp"),""), vbCrLf, ";")






Avatar
sylvere
Merci Fabien,
Ca fonctionne très bien et je retrouve tout dans la liste déroulante,
mais je bute pour passer ce contenu dans une liste de type requête, car
cette liste doit être imprimée, et de puls vidée de ses lignes vides et
doublons.
merci d'avance si tu as encore un peu de patience

"Fabien" a écrit dans le message de news:
47ac7f6f$0$901$
Merci Fabien pour la contribution.
Ca coince à la ligne ou j'ai pointé le message d'erreur'utilisation
incorrecte de Null

Remplace

Maliste = Maliste & Replace(Rst("Motscleserie1"), vbCrLf, ";") &
";"


par
Maliste = Maliste & Replace(nz(Rst("Motscleserie1"),""), vbCrLf,
";") & ";"

dans certain enreg le champs motscleserie1 est vide

Pour la destination de cette liste, c'est une sortie papier au final,
alors


ça peut être placé dans uene requête, ou une table..
Merci pour tes réponses

"Fabien" a écrit dans le message de news:
47ac5ac1$0$884$
Merci pour l'aide, les mots sont séparés par des sauts à la ligne
(entrée)
Je place ce code sur un bouton de commande ?
Machaine signifie le no mde mon champ conteant le texte à extraire?
Dois je créer une table avec un champ "Montableau" ?
Merci d'avance

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





47ac29a2$0$876$
Bonjour,
je cherche le moyen d'extraire mot par mot, chaque mot d'un champ
texte





qui
en contient plusieurs par enregistrement :
ex: " famille, culture, confiance, etc...)
le but est de faire une liste, un mot par ligne dans une requête ou
un





nouveau champ.
Merci pour les conseils
Sylvere


Bonjour Sylvere

Si tes mot sont séparé par des , alors utilise la fonction split
Dim Montableau as variant
Dim I As Integer
Montableau=split(Machaine,",")
For I=0 to Ubound(MonTableau)
.
.
.
Next I
@+


Reprenons :

Tu as une table. Dans cette table un champ texte qui contient
plusieurs




mots séparés par un retour chariot et tu veux extraire ces mots pour
en




faire une liste?
J'ai bon là ?
Si j'ai bon alors

Sub Extrait()
Dim Rst As DAO.Recordset
Dim Maliste As String
Set Rst = CurrentDb.OpenRecordset("MaTable")
'>On parcourt Matable
While Not Rst.EOF
'pour chaque Champs text MonChamp on remplace le retour chariot
par



un ; et on concatène dans Maliste
Maliste = Maliste & Replace(Rst("MonChamp"), vbCrLf, ";") & ";"
Rst.MoveNext
Wend
Maliste = Left(Maliste, Len(Maliste) - 1) ' contient sous forme de
liste



les éléments séparés par un ;
Rst.Close
Set Rst = Nothing

End Sub
Te permet de reccuperer sous forme de liste.
A toi de voir ce que tu veux en faire.
Par ex: si c'est la source d'une liste déroulante
Me.maliste.rowsource=Maliste
@+





Maliste = Maliste & Replace(nz(Rst("MonChamp"),""), vbCrLf, ";")








Avatar
Fabien
Merci Fabien,
Ca fonctionne très bien et je retrouve tout dans la liste déroulante,
mais je bute pour passer ce contenu dans une liste de type requête, car
cette liste doit être imprimée, et de puls vidée de ses lignes vides et
doublons.
merci d'avance si tu as encore un peu de patience

"Fabien" a écrit dans le message de news:
47ac7f6f$0$901$
Merci Fabien pour la contribution.
Ca coince à la ligne ou j'ai pointé le message d'erreur'utilisation
incorrecte de Null

Remplace

Maliste = Maliste & Replace(Rst("Motscleserie1"), vbCrLf, ";") &
";"


par
Maliste = Maliste & Replace(nz(Rst("Motscleserie1"),""), vbCrLf,
";") & ";"

dans certain enreg le champs motscleserie1 est vide

Pour la destination de cette liste, c'est une sortie papier au final,
alors


ça peut être placé dans uene requête, ou une table..
Merci pour tes réponses

"Fabien" a écrit dans le message de news:
47ac5ac1$0$884$
Merci pour l'aide, les mots sont séparés par des sauts à la ligne
(entrée)
Je place ce code sur un bouton de commande ?
Machaine signifie le no mde mon champ conteant le texte à extraire?
Dois je créer une table avec un champ "Montableau" ?
Merci d'avance

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





47ac29a2$0$876$
Bonjour,
je cherche le moyen d'extraire mot par mot, chaque mot d'un champ
texte





qui
en contient plusieurs par enregistrement :
ex: " famille, culture, confiance, etc...)
le but est de faire une liste, un mot par ligne dans une requête ou
un





nouveau champ.
Merci pour les conseils
Sylvere


Bonjour Sylvere

Si tes mot sont séparé par des , alors utilise la fonction split
Dim Montableau as variant
Dim I As Integer
Montableau=split(Machaine,",")
For I=0 to Ubound(MonTableau)
.
.
.
Next I
@+
Reprenons :


Tu as une table. Dans cette table un champ texte qui contient
plusieurs




mots séparés par un retour chariot et tu veux extraire ces mots pour
en




faire une liste?
J'ai bon là ?
Si j'ai bon alors

Sub Extrait()
Dim Rst As DAO.Recordset
Dim Maliste As String
Set Rst = CurrentDb.OpenRecordset("MaTable")
'>On parcourt Matable
While Not Rst.EOF
'pour chaque Champs text MonChamp on remplace le retour chariot
par



un ; et on concatène dans Maliste
Maliste = Maliste & Replace(Rst("MonChamp"), vbCrLf, ";") & ";"
Rst.MoveNext
Wend
Maliste = Left(Maliste, Len(Maliste) - 1) ' contient sous forme de
liste



les éléments séparés par un ;
Rst.Close
Set Rst = Nothing

End Sub
Te permet de reccuperer sous forme de liste.
A toi de voir ce que tu veux en faire.
Par ex: si c'est la source d'une liste déroulante
Me.maliste.rowsource=Maliste
@+


Maliste = Maliste & Replace(nz(Rst("MonChamp"),""), vbCrLf, ";")




Salut,

Qu'entend tu par "liste de type requête" ?
Si c'est pour imprimer cette liste tu peux faire la même manip et
attribuer la valeur Maliste à un contrôle présent sur ton état.
Pour éviter les doublons dans la liste tu fait
Sub Extrait()
Dim Rst As DAO.Recordset
Dim MonTableau as variant
Dim Maliste As String
Dim I as Integer
Set Rst = CurrentDb.OpenRecordset("MaTable")
'On parcourt Matable
While Not Rst.EOF
'pour chaque Champs text MonChamp on remplace le retour chariot
par un ; et on concatène dans Maliste
Montableau = split(Replace(nz(Rst("MonChamp"),""), vbCrLf, ";"),";") '
on créé un tableau avec les éléments
For I= 0 to Ubound(MonTableau) ' On parcourt le tableau en testant la
présence de l'élément dans maListe
If Montableau(I)<>"" then
If Instr(1,Maliste,Montableau(I))=0 then
Maliste = Maliste & MonTableau(I) & ";"
EndIf
Endif
Next I
Rst.MoveNext
Wend
Maliste = Left(Maliste, Len(Maliste) - 1) ' contient sous forme de
liste
les éléments séparés par un ;
Rst.Close
Set Rst = Nothing

End Sub





@+








Avatar
sylvere
Merci, Fabien,
Ca fonctionne bien en plaçant le contenu dans un controle texte,
les mots étaient en ligne, séparés par ; et j'ai mis en colonne en
Maliste = Maliste & MonTableau(I) & vbCrLf,
J'ai donc une liste très longue en colonne.
Mais, si tu résistes, cette liste est très longue, sans tri bien sûr.
Est ce possible de placer mot par mot dans un champ de table, afin ensuite
d'en faire une requête pour gérer tris et impression ??
dans tous les cas merci pour la patience



"Fabien" a écrit dans le message de news:
47aff65a$0$832$
Merci Fabien,
Ca fonctionne très bien et je retrouve tout dans la liste déroulante,
mais je bute pour passer ce contenu dans une liste de type requête, car
cette liste doit être imprimée, et de puls vidée de ses lignes vides et
doublons.
merci d'avance si tu as encore un peu de patience

"Fabien" a écrit dans le message de news:
47ac7f6f$0$901$
Merci Fabien pour la contribution.
Ca coince à la ligne ou j'ai pointé le message d'erreur'utilisation
incorrecte de Null

Remplace

Maliste = Maliste & Replace(Rst("Motscleserie1"), vbCrLf, ";") &
";"


par
Maliste = Maliste & Replace(nz(Rst("Motscleserie1"),""),
vbCrLf,




";") & ";"
dans certain enreg le champs motscleserie1 est vide

Pour la destination de cette liste, c'est une sortie papier au final,
alors


ça peut être placé dans uene requête, ou une table..
Merci pour tes réponses

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




47ac5ac1$0$884$
Merci pour l'aide, les mots sont séparés par des sauts à la ligne
(entrée)
Je place ce code sur un bouton de commande ?
Machaine signifie le no mde mon champ conteant le texte à extraire?
Dois je créer une table avec un champ "Montableau" ?
Merci d'avance

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





47ac29a2$0$876$
Bonjour,
je cherche le moyen d'extraire mot par mot, chaque mot d'un champ
texte





qui
en contient plusieurs par enregistrement :
ex: " famille, culture, confiance, etc...)
le but est de faire une liste, un mot par ligne dans une requête
ou









un
nouveau champ.
Merci pour les conseils
Sylvere


Bonjour Sylvere

Si tes mot sont séparé par des , alors utilise la fonction split
Dim Montableau as variant
Dim I As Integer
Montableau=split(Machaine,",")
For I=0 to Ubound(MonTableau)
.
.
.
Next I
@+
Reprenons :


Tu as une table. Dans cette table un champ texte qui contient
plusieurs




mots séparés par un retour chariot et tu veux extraire ces mots pour
en




faire une liste?
J'ai bon là ?
Si j'ai bon alors

Sub Extrait()
Dim Rst As DAO.Recordset
Dim Maliste As String
Set Rst = CurrentDb.OpenRecordset("MaTable")
'>On parcourt Matable
While Not Rst.EOF
'pour chaque Champs text MonChamp on remplace le retour chariot
par



un ; et on concatène dans Maliste
Maliste = Maliste & Replace(Rst("MonChamp"), vbCrLf, ";") & ";"
Rst.MoveNext
Wend
Maliste = Left(Maliste, Len(Maliste) - 1) ' contient sous forme de
liste



les éléments séparés par un ;
Rst.Close
Set Rst = Nothing

End Sub
Te permet de reccuperer sous forme de liste.
A toi de voir ce que tu veux en faire.
Par ex: si c'est la source d'une liste déroulante
Me.maliste.rowsource=Maliste
@+


Maliste = Maliste & Replace(nz(Rst("MonChamp"),""), vbCrLf, ";")




Salut,

Qu'entend tu par "liste de type requête" ?
Si c'est pour imprimer cette liste tu peux faire la même manip et
attribuer la valeur Maliste à un contrôle présent sur ton état.
Pour éviter les doublons dans la liste tu fait
Sub Extrait()
Dim Rst As DAO.Recordset
Dim MonTableau as variant
Dim Maliste As String
Dim I as Integer
Set Rst = CurrentDb.OpenRecordset("MaTable")
'On parcourt Matable
While Not Rst.EOF
'pour chaque Champs text MonChamp on remplace le retour chariot
par un ; et on concatène dans Maliste
Montableau = split(Replace(nz(Rst("MonChamp"),""), vbCrLf, ";"),";") '
on créé un tableau avec les éléments
For I= 0 to Ubound(MonTableau) ' On parcourt le tableau en testant la
présence de l'élément dans maListe
If Montableau(I)<>"" then
If Instr(1,Maliste,Montableau(I))=0 then
Maliste = Maliste & MonTableau(I) & ";"
EndIf
Endif
Next I
Rst.MoveNext
Wend
Maliste = Left(Maliste, Len(Maliste) - 1) ' contient sous forme de
liste
les éléments séparés par un ;
Rst.Close
Set Rst = Nothing

End Sub





@+










Avatar
Fabien
Merci, Fabien,
Ca fonctionne bien en plaçant le contenu dans un controle texte,
les mots étaient en ligne, séparés par ; et j'ai mis en colonne en
Maliste = Maliste & MonTableau(I) & vbCrLf,
J'ai donc une liste très longue en colonne.
Mais, si tu résistes, cette liste est très longue, sans tri bien sûr.
Est ce possible de placer mot par mot dans un champ de table, afin ensuite
d'en faire une requête pour gérer tris et impression ??
dans tous les cas merci pour la patience



"Fabien" a écrit dans le message de news:
47aff65a$0$832$
Merci Fabien,
Ca fonctionne très bien et je retrouve tout dans la liste déroulante,
mais je bute pour passer ce contenu dans une liste de type requête, car
cette liste doit être imprimée, et de puls vidée de ses lignes vides et
doublons.
merci d'avance si tu as encore un peu de patience

"Fabien" a écrit dans le message de news:
47ac7f6f$0$901$
Merci Fabien pour la contribution.
Ca coince à la ligne ou j'ai pointé le message d'erreur'utilisation
incorrecte de Null

Remplace

Maliste = Maliste & Replace(Rst("Motscleserie1"), vbCrLf, ";") &
";"


par
Maliste = Maliste & Replace(nz(Rst("Motscleserie1"),""),
vbCrLf,




";") & ";"
dans certain enreg le champs motscleserie1 est vide

Pour la destination de cette liste, c'est une sortie papier au final,
alors


ça peut être placé dans uene requête, ou une table..
Merci pour tes réponses

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




47ac5ac1$0$884$
Merci pour l'aide, les mots sont séparés par des sauts à la ligne
(entrée)
Je place ce code sur un bouton de commande ?
Machaine signifie le no mde mon champ conteant le texte à extraire?
Dois je créer une table avec un champ "Montableau" ?
Merci d'avance

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





47ac29a2$0$876$
Bonjour,
je cherche le moyen d'extraire mot par mot, chaque mot d'un champ
texte





qui
en contient plusieurs par enregistrement :
ex: " famille, culture, confiance, etc...)
le but est de faire une liste, un mot par ligne dans une requête
ou









un
nouveau champ.
Merci pour les conseils
Sylvere


Bonjour Sylvere

Si tes mot sont séparé par des , alors utilise la fonction split
Dim Montableau as variant
Dim I As Integer
Montableau=split(Machaine,",")
For I=0 to Ubound(MonTableau)
.
.
.
Next I
@+
Reprenons :


Tu as une table. Dans cette table un champ texte qui contient
plusieurs




mots séparés par un retour chariot et tu veux extraire ces mots pour
en




faire une liste?
J'ai bon là ?
Si j'ai bon alors

Sub Extrait()
Dim Rst As DAO.Recordset
Dim Maliste As String
Set Rst = CurrentDb.OpenRecordset("MaTable")
'>On parcourt Matable
While Not Rst.EOF
'pour chaque Champs text MonChamp on remplace le retour chariot
par



un ; et on concatène dans Maliste
Maliste = Maliste & Replace(Rst("MonChamp"), vbCrLf, ";") & ";"
Rst.MoveNext
Wend
Maliste = Left(Maliste, Len(Maliste) - 1) ' contient sous forme de
liste



les éléments séparés par un ;
Rst.Close
Set Rst = Nothing

End Sub
Te permet de reccuperer sous forme de liste.
A toi de voir ce que tu veux en faire.
Par ex: si c'est la source d'une liste déroulante
Me.maliste.rowsource=Maliste
@+
Maliste = Maliste & Replace(nz(Rst("MonChamp"),""), vbCrLf, ";")




Salut,

Qu'entend tu par "liste de type requête" ?
Si c'est pour imprimer cette liste tu peux faire la même manip et
attribuer la valeur Maliste à un contrôle présent sur ton état.
Pour éviter les doublons dans la liste tu fait
Sub Extrait()
Dim Rst As DAO.Recordset
Dim MonTableau as variant
Dim Maliste As String
Dim I as Integer
Set Rst = CurrentDb.OpenRecordset("MaTable")
'On parcourt Matable
While Not Rst.EOF
'pour chaque Champs text MonChamp on remplace le retour chariot
par un ; et on concatène dans Maliste
Montableau = split(Replace(nz(Rst("MonChamp"),""), vbCrLf, ";"),";") '
on créé un tableau avec les éléments
For I= 0 to Ubound(MonTableau) ' On parcourt le tableau en testant la
présence de l'élément dans maListe
If Montableau(I)<>"" then
If Instr(1,Maliste,Montableau(I))=0 then
Maliste = Maliste & MonTableau(I) & ";"
EndIf
Endif
Next I
Rst.MoveNext
Wend
Maliste = Left(Maliste, Len(Maliste) - 1) ' contient sous forme de
liste
les éléments séparés par un ;
Rst.Close
Set Rst = Nothing

End Sub





@+



Avec un


Dim Rst As DAO.Recordset
Dim MonTableau as variant
Dim Maliste As String
Dim I as Integer
Set Rst = CurrentDb.OpenRecordset("MaTable")
Docmd.setwarnings = false


'On parcourt Matable
While Not Rst.EOF
'pour chaque Champs text MonChamp on remplace le retour chariot
par un ; et on concatène dans Maliste
Montableau = split(Replace(nz(Rst("MonChamp"),""), vbCrLf, ";"),";") '
on créé un tableau avec les éléments
For I= 0 to Ubound(MonTableau) ' On parcourt le tableau en testant la
présence de l'élément dans maListe
If Montableau(I)<>"" then
If Instr(1,Maliste,Montableau(I))=0 then
'On ajoute le mot dans le champs Mot de la Table TMots


Docmd.runsql "INSERT INTO TMots ( Mot )
SELECT '" & Rst("MonChamp") & "' AS Mot;"


EndIf
Endif
Next I
Rst.MoveNext
Wend
Maliste = Left(Maliste, Len(Maliste) - 1) ' contient sous forme de
liste
les éléments séparés par un ;
Rst.Close
Set Rst = Nothing
DoCmd.Setwarnings = true







End Sub







Il faut donc une table Mots qui existe et qui à un champs Mot.
Peut-être faudrait-il vider la table avant de la remplir: DoCmd.RunSql
"DELETE * FROM Mots ;" avant d'attaquer la boucle while ... Wend
@+
@+










1 2