OVH Cloud OVH Cloud

Extraire mot directeur

2 réponses
Avatar
yann2
Bonjour,

J'ai une table couleurs comportant dix couleurs (bleu, vert, rouge...)

J'ai une seconde table comportant un champ couleur, mais là le contenu
comporte une couleur avec d'autres mots (ex : PP21 ROUGE , BLEU352, PP11
NOIR...). Je cherche un moyen de faire ressortir le mot directeur de ce
champ à l'aide de ma première table
Exemple : PP21 ROUGE c'est ROUGE.

yann

2 réponses

Avatar
The_Team
Il faut tout simplement créer un champ commun aux 2 tables, avec une
relation de 1 à 1 ou de 1 à plusieurs selon le cas.

le champ commun peut être le champ couleur.

La Table 1 comportera donc se champ unique, la Table 2, ce champ plus un
deuxième champ comportant la couleur plus autre chose.

Lucky_Team

http://www.access-developpement.com

"yann2" a écrit dans le message de news:
%
Bonjour,

J'ai une table couleurs comportant dix couleurs (bleu, vert, rouge...)

J'ai une seconde table comportant un champ couleur, mais là le contenu
comporte une couleur avec d'autres mots (ex : PP21 ROUGE , BLEU352, PP11
NOIR...). Je cherche un moyen de faire ressortir le mot directeur de ce
champ à l'aide de ma première table
Exemple : PP21 ROUGE c'est ROUGE.

yann






Avatar
Eric
Bonjour Yann2,

Ne sachant pas ce que tu entends par :
"Je cherche un moyen de faire ressortir le mot directeur de ce
champ à l'aide de ma première table", je te propose 2 solutions.
Mais, encore faut-il que tu n'aies pas de situation du genre
ROUGE-MARRON PP456

La 1ere consiste à créer une fonction qui recherche à l'aide de ta table
des "vraies" couleurs la couleur associée à chacun des enregistrements de
la table contenant des références du genre PP21 Rouge et la couleur
retournée s'affiche dans un champ Texte de formulaire.

En supposant que la table des "vraies couleurs" s'appelle Table2, celle
contenant les couleurs "codées" Table2BIS, sur laquelle tu fondes ton
formulaire.

la fonction, à écrire dans le module du formulaire, pourrait être du
style :

Function RenvoiCouleur()
Dim TROUVE As Boolean, rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("Table2")
While Not rst.EOF And TROUVE = False
If InStr(Me.COULEUR2, rst(0)) > 0 Then
' Me.COULEUR2 contient les couleurs "codées"
TROUVE = True
RenvoiCouleur = rst(0)
End If
rst.MoveNext
Wend
Set rst = Nothing
End Function

et cette fonction serait définie comme source d'un controle indépendant
du formulaire. { =RenvoiCouleur() }

Variante : définir dans un module global la fonction, ainsi tu peux
l'utiliser AUSSI dans une requête. Ca donne:

<-- Mon choix -->
Function RenvoiCouleur2(strChamp As String) As String
Dim TROUVE As Boolean, rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("Table2")
While Not rst.EOF And TROUVE = False
If InStr(strChamp, rst(0)) > 0 Then
TROUVE = True
RenvoiCouleur2 = rst(0)
End If
rst.MoveNext
Wend
Set rst = Nothing
End Function


2ème solution : Créer un 2eme champ dans la table2Bis qui recevrait la
"vraie" couleur associée. !!! Mais est-ce une bonne solution ??? puisque
tu as déjà une table des couleurs, donc redondance.

Je te donne le code, à tout hasard:
Sub TestCouleur()
Dim TROUVE As Boolean, rst1 As DAO.Recordset, rst2 As DAO.Recordset
Set rst1 = CurrentDb.OpenRecordset("Table2BIS")
Set rst2 = CurrentDb.OpenRecordset("Table2")
While Not rst1.EOF
TROUVE = False
While Not rst2.EOF And TROUVE = False
If InStr(rst1(0), rst2(0)) > 0 Then
TROUVE = True
rst1.Edit
rst1(1) = rst2(0)
rst1.Update
End If
rst2.MoveNext
Wend
rst1.MoveNext
Wend
Set rst1 = Nothing
Set rst2 = Nothing
End Sub


Voila

A+
Eric



"yann2" écrivait news:#XUCPe1wEHA.2172
@TK2MSFTNGP14.phx.gbl:

Bonjour,

J'ai une table couleurs comportant dix couleurs (bleu, vert, rouge...)

J'ai une seconde table comportant un champ couleur, mais là le contenu
comporte une couleur avec d'autres mots (ex : PP21 ROUGE , BLEU352,
PP11

NOIR...). Je cherche un moyen de faire ressortir le mot directeur de ce
champ à l'aide de ma première table
Exemple : PP21 ROUGE c'est ROUGE.

yann