extraire mot par mot d'un champ texte

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fabien
Le #6364251
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
@+

sylvere
Le #6364221
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" 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
@+



Fabien
Le #6364211
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" 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à ?



Fabien
Le #6364201
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" 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
@+




sylvere
Le #6364181
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" 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" 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
@+






Fabien
Le #6364171
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" 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" 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, ";")






sylvere
Le #6364161
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" 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" 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" 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, ";")








Fabien
Le #6364071
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" 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" 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" 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





@+








sylvere
Le #6364031
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" 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" 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" 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" 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





@+










Fabien
Le #6364021
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" 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" 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" 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" 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
@+
@+










Publicité
Poster une réponse
Anonyme