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

Ecrire valeur d'un champ d'un formulaire dans une table indépendante

11 réponses
Avatar
Luis
Bonjour,
J'ai un formulaire de prise de commande dans lequel on=20
rente la qualification demand=E9e dans un champ.
Cette qualification est s=E9lectionn=E9e dans une zone liste=20
d=E9roulante, avec une source requette

Ex.: M=E9canique_M=E9canicien

J'ai une table "COMPETENCESCOMMANDES" avec un=20
champ "NUMCOMMANDE" un champ "COMPETENCE" et un=20
champ "DOMAINECOMPETENCE"

J'ai bien trouv=E9 comment remplir "NUMCOMMANDE"=20
et "COMPETENCE"=20
Ce qui donne par exemple :2457 (R=E9fCommande)
:M=E9canique
:M=E9canicien =20

Par contre dans le champ DOMAINECOMPETENCE je n'arrive pas=20
=E0 inscrire M=E9canique_M=E9canicien.

Je me suis cass=E9 la t=EAte pour touver comment s=E9parer les=20
deux mots pour qu'ils s'inscrivent dans COMPETANCE et=20
maintenant je s=E8che.
Est-ce vous pouver me dire quoi rajouter, voici mon code:
Dim mot
mot =3D Me![Qualification]

If IsNull(mot) Then
MsgBox "La qualification ne peut =EAtre absente"
[Qualification].SetFocus
=20
Exit Sub
End If
'---------

posesp1 =3D InStr(1, mot, "_") ' Recherche le _.
If posesp1 =3D 0 Then

Exp=E9rience =3D mot
Else

LongueurMot =3D posesp1 - 1 ' Calcule la longueur du=20
deuxi=E8me mot.
Motdebut =3D Mid(mot, 1, LongueurMot)
' Retourne le premier mot.
Exp=E9rience =3D Motdebut
'---------
Cha=EEneTest =3D Qualification
'posesp1 =3D InStr(1, Cha=EEneTest, "_") 'position du _

If Not (posesp1 =3D "") Or Not IsNull(posesp1) Then

motMilieu =3D Mid$(Cha=EEneTest, posesp1 + 1)
' Retourne le deuxi=E8me mot.
Else
End If
Me![Qualification] =3D motMilieu

End If
SendKeys "+{ENTER}"

NUMCOMMANDE =3D R=E9fCommande
CAT1 =3D Exp=E9rience
=20
Dim Crit=E8re As String, MaBD As Database, MaTable As=20
Recordset


Set MaBD =3D DBEngine.Workspaces(0).Databases(0)
Set MaTable =3D MaBD.OpenRecordset("COMPETENCESCOMMANDES",=20
DB_OPEN_DYNASET) ' Cr=E9e la feuille de r=E9ponses dynamique.
MaTable.MoveFirst ' Recherche la premi=E8re occurence.
Do Until MaTable.EOF ' Boucle jusqu'=E0 ce qu'il n'y ait=20
plus d'enregistrement correspondant.
=20
TESTER =3D MaTable!R=E9fCommande
If TESTER =3D NUMCOMMANDE Then
COMPE =3D MaTable!COMPETENCE
If COMPE =3D CAT1 Then
trouve =3D 1
Exit Do
Else
trouve =3D 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve =3D 0 Then
MaTable.AddNew
MaTable!R=E9fCommande =3D NUMCOMMANDE
MaTable!COMPETENCE =3D CAT1
MaTable.Update
MaTable.Close
Else
'matable.Close
End If
'--
CAT2 =3D Qualification
Set MaTable =3D MaBD.OpenRecordset
("COMPETENCESCOMMANDES", DB_OPEN_DYNASET)
MaTable.MoveFirst ' Recherche la premi=E8re occurence.
Do Until MaTable.EOF ' Boucle jusqu'=E0 ce qu'il n'y ait=20
plus d'enregistrement correspondant.
=20
TESTER =3D MaTable!R=E9fCommande
If TESTER =3D NUMCOMMANDE Then
COMPE =3D MaTable!COMPETENCE
If COMPE =3D CAT2 Then
trouve =3D 1
Exit Do
Else
trouve =3D 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve =3D 0 Then
MaTable.AddNew
MaTable!R=E9fCommande =3D NUMCOMMANDE
MaTable!COMPETENCE =3D CAT2
MaTable.Update
MaTable.Close
Else
'matable.Close
End If

fintz:
Exit Sub
If IsNull(mot) Then
ertz:
MsgBox " Une Qualification principale ne peut pas rester=20
vide"

Qualification.SetFocus
Resume fintz
End If

Merci.
Luis

10 réponses

1 2
Avatar
Gilbert
Bonjour,

J'ai du mal à comprendre ce que tu as au départ et ce que tu veux obtenir
exactement.
Un complément d'infos serait le bienvenu.

Gilbert


"Luis" a écrit dans le message de
news: 026501c3a945$4c57b5c0$
Bonjour,
J'ai un formulaire de prise de commande dans lequel on
rente la qualification demandée dans un champ.
Cette qualification est sélectionnée dans une zone liste
déroulante, avec une source requette

Ex.: Mécanique_Mécanicien

J'ai une table "COMPETENCESCOMMANDES" avec un
champ "NUMCOMMANDE" un champ "COMPETENCE" et un
champ "DOMAINECOMPETENCE"

J'ai bien trouvé comment remplir "NUMCOMMANDE"
et "COMPETENCE"
Ce qui donne par exemple :2457 (RéfCommande)
:Mécanique
:Mécanicien

Par contre dans le champ DOMAINECOMPETENCE je n'arrive pas
à inscrire Mécanique_Mécanicien.

Je me suis cassé la tête pour touver comment séparer les
deux mots pour qu'ils s'inscrivent dans COMPETANCE et
maintenant je sèche.
Est-ce vous pouver me dire quoi rajouter, voici mon code:
Dim mot
mot = Me![Qualification]

If IsNull(mot) Then
MsgBox "La qualification ne peut être absente"
[Qualification].SetFocus

Exit Sub
End If
'---------

posesp1 = InStr(1, mot, "_") ' Recherche le _.
If posesp1 = 0 Then

Expérience = mot
Else

LongueurMot = posesp1 - 1 ' Calcule la longueur du
deuxième mot.
Motdebut = Mid(mot, 1, LongueurMot)
' Retourne le premier mot.
Expérience = Motdebut
'---------
ChaîneTest = Qualification
'posesp1 = InStr(1, ChaîneTest, "_") 'position du _

If Not (posesp1 = "") Or Not IsNull(posesp1) Then

motMilieu = Mid$(ChaîneTest, posesp1 + 1)
' Retourne le deuxième mot.
Else
End If
Me![Qualification] = motMilieu

End If
SendKeys "+{ENTER}"

NUMCOMMANDE = RéfCommande
CAT1 = Expérience

Dim Critère As String, MaBD As Database, MaTable As
Recordset


Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("COMPETENCESCOMMANDES",
DB_OPEN_DYNASET) ' Crée la feuille de réponses dynamique.
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT1 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT1
MaTable.Update
MaTable.Close
Else
'matable.Close
End If
'--
CAT2 = Qualification
Set MaTable = MaBD.OpenRecordset
("COMPETENCESCOMMANDES", DB_OPEN_DYNASET)
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT2 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT2
MaTable.Update
MaTable.Close
Else
'matable.Close
End If

fintz:
Exit Sub
If IsNull(mot) Then
ertz:
MsgBox " Une Qualification principale ne peut pas rester
vide"

Qualification.SetFocus
Resume fintz
End If

Merci.
Luis
Avatar
Luis
Bonjour,
Au départ j'ai un formulaire avec plusieurs champs dont
un est une liste déroulante (source de cette liste
déroulante une requêtte avec tous les domaines de métiers
et à chaque domaine les métiers, ex.:

Banques_Conseiller à la clientèle
Mécanique_Outilleur
Mécanique_Monteur de machines outils
Mécanique_Mécanicien

Après la sélection et à la sortie de ce champs, il ne
reste que par exemple "Mécanicien" dans ce champ du
formulaire, car c'est la seule information importante
dans le formulaire.

Pour des raisons de sélection dans un autre formulaire je
dois récupérer dans une table indépendante:
Dans le 1er champ "IDCOMMANDE" (appelée RéfCommande)
Dans le 2ème champ "Mécanique" (C'est à dire le mot placé
avant le _)
Dans le 2ème champ "Mécanicien" (c'est à dire le mot
placé après le_)
De là le code que j'ai envoyé dans mon méssage.
CECI MARCHE BIEN.
Ce que je n'arrive pas à faire:
Ecrire dans le 3ème champ de cette table indépendante le
tout c'est à dire le "Mot avant le _ et le mot après le _"
formaté telle que dans la liste déroulante.
Je ne sais pas si j'ai réussi à répondre à ta ?
Merci, à bientôt.
Luis
-----Message d'origine-----
Bonjour,

J'ai du mal à comprendre ce que tu as au départ et ce
que tu veux obtenir

exactement.
Un complément d'infos serait le bienvenu.

Gilbert


"Luis" a écrit
dans le message de

news: 026501c3a945$4c57b5c0$
Bonjour,
J'ai un formulaire de prise de commande dans lequel on
rente la qualification demandée dans un champ.
Cette qualification est sélectionnée dans une zone liste
déroulante, avec une source requette

Ex.: Mécanique_Mécanicien

J'ai une table "COMPETENCESCOMMANDES" avec un
champ "NUMCOMMANDE" un champ "COMPETENCE" et un
champ "DOMAINECOMPETENCE"

J'ai bien trouvé comment remplir "NUMCOMMANDE"
et "COMPETENCE"
Ce qui donne par exemple :2457 (RéfCommande)
:Mécanique
:Mécanicien

Par contre dans le champ DOMAINECOMPETENCE je n'arrive
pas

à inscrire Mécanique_Mécanicien.

Je me suis cassé la tête pour touver comment séparer les
deux mots pour qu'ils s'inscrivent dans COMPETANCE et
maintenant je sèche.
Est-ce vous pouver me dire quoi rajouter, voici mon code:
Dim mot
mot = Me![Qualification]

If IsNull(mot) Then
MsgBox "La qualification ne peut être absente"
[Qualification].SetFocus

Exit Sub
End If
'---------

posesp1 = InStr(1, mot, "_") ' Recherche le _.
If posesp1 = 0 Then

Expérience = mot
Else

LongueurMot = posesp1 - 1 ' Calcule la longueur du
deuxième mot.
Motdebut = Mid(mot, 1, LongueurMot)
' Retourne le premier mot.
Expérience = Motdebut
'---------
ChaîneTest = Qualification
'posesp1 = InStr(1, ChaîneTest, "_") 'position du _

If Not (posesp1 = "") Or Not IsNull(posesp1) Then

motMilieu = Mid$(ChaîneTest, posesp1 + 1)
' Retourne le deuxième mot.
Else
End If
Me![Qualification] = motMilieu

End If
SendKeys "+{ENTER}"

NUMCOMMANDE = RéfCommande
CAT1 = Expérience

Dim Critère As String, MaBD As Database, MaTable As
Recordset


Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("COMPETENCESCOMMANDES",
DB_OPEN_DYNASET) ' Crée la feuille de réponses dynamique.
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT1 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT1
MaTable.Update
MaTable.Close
Else
'matable.Close
End If
'--
CAT2 = Qualification
Set MaTable = MaBD.OpenRecordset
("COMPETENCESCOMMANDES", DB_OPEN_DYNASET)
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT2 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT2
MaTable.Update
MaTable.Close
Else
'matable.Close
End If

fintz:
Exit Sub
If IsNull(mot) Then
ertz:
MsgBox " Une Qualification principale ne peut pas rester
vide"

Qualification.SetFocus
Resume fintz
End If

Merci.
Luis


.



Avatar
Gilbert
Voilà ce que je te propose, mais je n'ai peut-être pas bien saisi ce que tu
veux.

Dim Critère As String
Dim MaBD As Database
Dim MaTable As Recordset

If IsNull(Me.Qualification) Then
MsgBox "La qualification ne peut être absente"
[Qualification].SetFocus
Exit Sub
End If

posesp1 = InStr(1, Me.Qualification, "_") ' Recherche le _.
If posesp1 = 0 Then
Expérience = Me.Qualification
Else
LongueurMot = posesp1 - 1 ' Calcule la longueur du deuxième mot.
Expérience = Left(Me.Qualification, posesp1 - 1) ' Retourne le
premier mot.
motMilieu = Mid(Me.Qualification, posesp1 + 1) ' Retourne le
deuxième mot.

Me.Qualification = motMilieu '??????????????????????????????????

End If
SendKeys "+{ENTER}" '??????????????????????????????????

Set MaTable = MaBD.OpenRecordset("select COMPETENCESCOMMANDES.Refcommande,
COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES where
COMPETENCESCOMMANDES.COMPETENCE='" & Expérience & "';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If

Set MaTable = MaBD.OpenRecordset("select COMPETENCESCOMMANDES.Refcommande,
COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES where
COMPETENCESCOMMANDES.COMPETENCE='" & Qualification & "';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If

Set MaTable = MaBD.OpenRecordset("select COMPETENCESCOMMANDES.Refcommande,
COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES where
COMPETENCESCOMMANDES.COMPETENCE='" & Expérience & "_" & Qualification &
"';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If


Tiens-moi au courant
Cordialement

Gilbert

"Luis" a écrit dans le message de
news: 0d0001c3a9f0$3e3aec40$
Bonjour,
Au départ j'ai un formulaire avec plusieurs champs dont
un est une liste déroulante (source de cette liste
déroulante une requêtte avec tous les domaines de métiers
et à chaque domaine les métiers, ex.:

Banques_Conseiller à la clientèle
Mécanique_Outilleur
Mécanique_Monteur de machines outils
Mécanique_Mécanicien

Après la sélection et à la sortie de ce champs, il ne
reste que par exemple "Mécanicien" dans ce champ du
formulaire, car c'est la seule information importante
dans le formulaire.

Pour des raisons de sélection dans un autre formulaire je
dois récupérer dans une table indépendante:
Dans le 1er champ "IDCOMMANDE" (appelée RéfCommande)
Dans le 2ème champ "Mécanique" (C'est à dire le mot placé
avant le _)
Dans le 2ème champ "Mécanicien" (c'est à dire le mot
placé après le_)
De là le code que j'ai envoyé dans mon méssage.
CECI MARCHE BIEN.
Ce que je n'arrive pas à faire:
Ecrire dans le 3ème champ de cette table indépendante le
tout c'est à dire le "Mot avant le _ et le mot après le _"
formaté telle que dans la liste déroulante.
Je ne sais pas si j'ai réussi à répondre à ta ?
Merci, à bientôt.
Luis
-----Message d'origine-----
Bonjour,

J'ai du mal à comprendre ce que tu as au départ et ce
que tu veux obtenir

exactement.
Un complément d'infos serait le bienvenu.

Gilbert


"Luis" a écrit
dans le message de

news: 026501c3a945$4c57b5c0$
Bonjour,
J'ai un formulaire de prise de commande dans lequel on
rente la qualification demandée dans un champ.
Cette qualification est sélectionnée dans une zone liste
déroulante, avec une source requette

Ex.: Mécanique_Mécanicien

J'ai une table "COMPETENCESCOMMANDES" avec un
champ "NUMCOMMANDE" un champ "COMPETENCE" et un
champ "DOMAINECOMPETENCE"

J'ai bien trouvé comment remplir "NUMCOMMANDE"
et "COMPETENCE"
Ce qui donne par exemple :2457 (RéfCommande)
:Mécanique
:Mécanicien

Par contre dans le champ DOMAINECOMPETENCE je n'arrive
pas

à inscrire Mécanique_Mécanicien.

Je me suis cassé la tête pour touver comment séparer les
deux mots pour qu'ils s'inscrivent dans COMPETANCE et
maintenant je sèche.
Est-ce vous pouver me dire quoi rajouter, voici mon code:
Dim mot
mot = Me![Qualification]

If IsNull(mot) Then
MsgBox "La qualification ne peut être absente"
[Qualification].SetFocus

Exit Sub
End If
'---------

posesp1 = InStr(1, mot, "_") ' Recherche le _.
If posesp1 = 0 Then

Expérience = mot
Else

LongueurMot = posesp1 - 1 ' Calcule la longueur du
deuxième mot.
Motdebut = Mid(mot, 1, LongueurMot)
' Retourne le premier mot.
Expérience = Motdebut
'---------
ChaîneTest = Qualification
'posesp1 = InStr(1, ChaîneTest, "_") 'position du _

If Not (posesp1 = "") Or Not IsNull(posesp1) Then

motMilieu = Mid$(ChaîneTest, posesp1 + 1)
' Retourne le deuxième mot.
Else
End If
Me![Qualification] = motMilieu

End If
SendKeys "+{ENTER}"

NUMCOMMANDE = RéfCommande
CAT1 = Expérience

Dim Critère As String, MaBD As Database, MaTable As
Recordset


Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("COMPETENCESCOMMANDES",
DB_OPEN_DYNASET) ' Crée la feuille de réponses dynamique.
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT1 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT1
MaTable.Update
MaTable.Close
Else
'matable.Close
End If
'--
CAT2 = Qualification
Set MaTable = MaBD.OpenRecordset
("COMPETENCESCOMMANDES", DB_OPEN_DYNASET)
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT2 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT2
MaTable.Update
MaTable.Close
Else
'matable.Close
End If

fintz:
Exit Sub
If IsNull(mot) Then
ertz:
MsgBox " Une Qualification principale ne peut pas rester
vide"

Qualification.SetFocus
Resume fintz
End If

Merci.
Luis


.



Avatar
Luis
Bonjour,
A première vu, il me semble que tu as compris mon problème.
Avant d'aller plus loin que veut dire les ?
dans:
Me.Qualification = MotMilieu '??????????????????????????
et dans:
SendKeys "+{ENTER}" '??????????????????????????????????

Autre question à quoi fait référence: Expérience dans:
COMPETENCESCOMMANDES.COMPETENCE='" & Expérience & "';")
Merci pour ton magnifique boulot.
Luis
-----Message d'origine-----
Voilà ce que je te propose, mais je n'ai peut-être pas
bien saisi ce que tu

veux.

Dim Critère As String
Dim MaBD As Database
Dim MaTable As Recordset

If IsNull(Me.Qualification) Then
MsgBox "La qualification ne peut être absente"
[Qualification].SetFocus
Exit Sub
End If

posesp1 = InStr(1, Me.Qualification, "_") ' Recherche le
_.

If posesp1 = 0 Then
Expérience = Me.Qualification
Else
LongueurMot = posesp1 - 1 ' Calcule la longueur du
deuxième mot.

Expérience = Left(Me.Qualification, posesp1 - 1) '
Retourne le

premier mot.
motMilieu = Mid(Me.Qualification, posesp1 + 1) '
Retourne le

deuxième mot.

Me.Qualification =
motMilieu '??????????????????????????????????


End If
SendKeys "+{ENTER}" '??????????????????????????????????

Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where

COMPETENCESCOMMANDES.COMPETENCE='" & Expérience & "';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If

Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where

COMPETENCESCOMMANDES.COMPETENCE='" & Qualification & "';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If

Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where

COMPETENCESCOMMANDES.COMPETENCE='" & Expérience & "_" &
Qualification &

"';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If


Tiens-moi au courant
Cordialement

Gilbert

"Luis" a écrit dans
le message de

news: 0d0001c3a9f0$3e3aec40$
Bonjour,
Au départ j'ai un formulaire avec plusieurs champs dont
un est une liste déroulante (source de cette liste
déroulante une requêtte avec tous les domaines de métiers
et à chaque domaine les métiers, ex.:

Banques_Conseiller à la clientèle
Mécanique_Outilleur
Mécanique_Monteur de machines outils
Mécanique_Mécanicien

Après la sélection et à la sortie de ce champs, il ne
reste que par exemple "Mécanicien" dans ce champ du
formulaire, car c'est la seule information importante
dans le formulaire.

Pour des raisons de sélection dans un autre formulaire je
dois récupérer dans une table indépendante:
Dans le 1er champ "IDCOMMANDE" (appelée RéfCommande)
Dans le 2ème champ "Mécanique" (C'est à dire le mot placé
avant le _)
Dans le 2ème champ "Mécanicien" (c'est à dire le mot
placé après le_)
De là le code que j'ai envoyé dans mon méssage.
CECI MARCHE BIEN.
Ce que je n'arrive pas à faire:
Ecrire dans le 3ème champ de cette table indépendante le
tout c'est à dire le "Mot avant le _ et le mot après le _"
formaté telle que dans la liste déroulante.
Je ne sais pas si j'ai réussi à répondre à ta ?
Merci, à bientôt.
Luis
-----Message d'origine-----
Bonjour,

J'ai du mal à comprendre ce que tu as au départ et ce
que tu veux obtenir

exactement.
Un complément d'infos serait le bienvenu.

Gilbert


"Luis" a écrit
dans le message de

news: 026501c3a945$4c57b5c0$
Bonjour,
J'ai un formulaire de prise de commande dans lequel on
rente la qualification demandée dans un champ.
Cette qualification est sélectionnée dans une zone liste
déroulante, avec une source requette

Ex.: Mécanique_Mécanicien

J'ai une table "COMPETENCESCOMMANDES" avec un
champ "NUMCOMMANDE" un champ "COMPETENCE" et un
champ "DOMAINECOMPETENCE"

J'ai bien trouvé comment remplir "NUMCOMMANDE"
et "COMPETENCE"
Ce qui donne par exemple :2457 (RéfCommande)
:Mécanique
:Mécanicien

Par contre dans le champ DOMAINECOMPETENCE je n'arrive
pas

à inscrire Mécanique_Mécanicien.

Je me suis cassé la tête pour touver comment séparer les
deux mots pour qu'ils s'inscrivent dans COMPETANCE et
maintenant je sèche.
Est-ce vous pouver me dire quoi rajouter, voici mon code:
Dim mot
mot = Me![Qualification]

If IsNull(mot) Then
MsgBox "La qualification ne peut être absente"
[Qualification].SetFocus

Exit Sub
End If
'---------

posesp1 = InStr(1, mot, "_") ' Recherche le _.
If posesp1 = 0 Then

Expérience = mot
Else

LongueurMot = posesp1 - 1 ' Calcule la longueur du
deuxième mot.
Motdebut = Mid(mot, 1, LongueurMot)
' Retourne le premier mot.
Expérience = Motdebut
'---------
ChaîneTest = Qualification
'posesp1 = InStr(1, ChaîneTest, "_") 'position du _

If Not (posesp1 = "") Or Not IsNull(posesp1) Then

motMilieu = Mid$(ChaîneTest, posesp1 + 1)
' Retourne le deuxième mot.
Else
End If
Me![Qualification] = motMilieu

End If
SendKeys "+{ENTER}"

NUMCOMMANDE = RéfCommande
CAT1 = Expérience

Dim Critère As String, MaBD As Database, MaTable As
Recordset


Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("COMPETENCESCOMMANDES",
DB_OPEN_DYNASET) ' Crée la feuille de réponses dynamique.
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT1 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT1
MaTable.Update
MaTable.Close
Else
'matable.Close
End If
'--
CAT2 = Qualification
Set MaTable = MaBD.OpenRecordset
("COMPETENCESCOMMANDES", DB_OPEN_DYNASET)
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT2 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT2
MaTable.Update
MaTable.Close
Else
'matable.Close
End If

fintz:
Exit Sub
If IsNull(mot) Then
ertz:
MsgBox " Une Qualification principale ne peut pas rester
vide"

Qualification.SetFocus
Resume fintz
End If

Merci.
Luis


.





.




Avatar
Luis
Bonjour,
Désolé, je t'ai répondu à une première lecture, en te
demandant ce que voulait dire Expérience, je crois que
j'avais encore la tête dans l'oreiller.
Luis
-----Message d'origine-----
Voilà ce que je te propose, mais je n'ai peut-être pas
bien saisi ce que tu

veux.

Dim Critère As String
Dim MaBD As Database
Dim MaTable As Recordset

If IsNull(Me.Qualification) Then
MsgBox "La qualification ne peut être absente"
[Qualification].SetFocus
Exit Sub
End If

posesp1 = InStr(1, Me.Qualification, "_") ' Recherche le
_.

If posesp1 = 0 Then
Expérience = Me.Qualification
Else
LongueurMot = posesp1 - 1 ' Calcule la longueur du
deuxième mot.

Expérience = Left(Me.Qualification, posesp1 - 1) '
Retourne le

premier mot.
motMilieu = Mid(Me.Qualification, posesp1 + 1) '
Retourne le

deuxième mot.

Me.Qualification =
motMilieu '??????????????????????????????????


End If
SendKeys "+{ENTER}" '??????????????????????????????????

Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where

COMPETENCESCOMMANDES.COMPETENCE='" & Expérience & "';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If

Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where

COMPETENCESCOMMANDES.COMPETENCE='" & Qualification & "';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If

Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where

COMPETENCESCOMMANDES.COMPETENCE='" & Expérience & "_" &
Qualification &

"';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If


Tiens-moi au courant
Cordialement

Gilbert

"Luis" a écrit dans
le message de

news: 0d0001c3a9f0$3e3aec40$
Bonjour,
Au départ j'ai un formulaire avec plusieurs champs dont
un est une liste déroulante (source de cette liste
déroulante une requêtte avec tous les domaines de métiers
et à chaque domaine les métiers, ex.:

Banques_Conseiller à la clientèle
Mécanique_Outilleur
Mécanique_Monteur de machines outils
Mécanique_Mécanicien

Après la sélection et à la sortie de ce champs, il ne
reste que par exemple "Mécanicien" dans ce champ du
formulaire, car c'est la seule information importante
dans le formulaire.

Pour des raisons de sélection dans un autre formulaire je
dois récupérer dans une table indépendante:
Dans le 1er champ "IDCOMMANDE" (appelée RéfCommande)
Dans le 2ème champ "Mécanique" (C'est à dire le mot placé
avant le _)
Dans le 2ème champ "Mécanicien" (c'est à dire le mot
placé après le_)
De là le code que j'ai envoyé dans mon méssage.
CECI MARCHE BIEN.
Ce que je n'arrive pas à faire:
Ecrire dans le 3ème champ de cette table indépendante le
tout c'est à dire le "Mot avant le _ et le mot après le _"
formaté telle que dans la liste déroulante.
Je ne sais pas si j'ai réussi à répondre à ta ?
Merci, à bientôt.
Luis
-----Message d'origine-----
Bonjour,

J'ai du mal à comprendre ce que tu as au départ et ce
que tu veux obtenir

exactement.
Un complément d'infos serait le bienvenu.

Gilbert


"Luis" a écrit
dans le message de

news: 026501c3a945$4c57b5c0$
Bonjour,
J'ai un formulaire de prise de commande dans lequel on
rente la qualification demandée dans un champ.
Cette qualification est sélectionnée dans une zone liste
déroulante, avec une source requette

Ex.: Mécanique_Mécanicien

J'ai une table "COMPETENCESCOMMANDES" avec un
champ "NUMCOMMANDE" un champ "COMPETENCE" et un
champ "DOMAINECOMPETENCE"

J'ai bien trouvé comment remplir "NUMCOMMANDE"
et "COMPETENCE"
Ce qui donne par exemple :2457 (RéfCommande)
:Mécanique
:Mécanicien

Par contre dans le champ DOMAINECOMPETENCE je n'arrive
pas

à inscrire Mécanique_Mécanicien.

Je me suis cassé la tête pour touver comment séparer les
deux mots pour qu'ils s'inscrivent dans COMPETANCE et
maintenant je sèche.
Est-ce vous pouver me dire quoi rajouter, voici mon code:
Dim mot
mot = Me![Qualification]

If IsNull(mot) Then
MsgBox "La qualification ne peut être absente"
[Qualification].SetFocus

Exit Sub
End If
'---------

posesp1 = InStr(1, mot, "_") ' Recherche le _.
If posesp1 = 0 Then

Expérience = mot
Else

LongueurMot = posesp1 - 1 ' Calcule la longueur du
deuxième mot.
Motdebut = Mid(mot, 1, LongueurMot)
' Retourne le premier mot.
Expérience = Motdebut
'---------
ChaîneTest = Qualification
'posesp1 = InStr(1, ChaîneTest, "_") 'position du _

If Not (posesp1 = "") Or Not IsNull(posesp1) Then

motMilieu = Mid$(ChaîneTest, posesp1 + 1)
' Retourne le deuxième mot.
Else
End If
Me![Qualification] = motMilieu

End If
SendKeys "+{ENTER}"

NUMCOMMANDE = RéfCommande
CAT1 = Expérience

Dim Critère As String, MaBD As Database, MaTable As
Recordset


Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("COMPETENCESCOMMANDES",
DB_OPEN_DYNASET) ' Crée la feuille de réponses dynamique.
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT1 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT1
MaTable.Update
MaTable.Close
Else
'matable.Close
End If
'--
CAT2 = Qualification
Set MaTable = MaBD.OpenRecordset
("COMPETENCESCOMMANDES", DB_OPEN_DYNASET)
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT2 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT2
MaTable.Update
MaTable.Close
Else
'matable.Close
End If

fintz:
Exit Sub
If IsNull(mot) Then
ertz:
MsgBox " Une Qualification principale ne peut pas rester
vide"

Qualification.SetFocus
Resume fintz
End If

Merci.
Luis


.





.




Avatar
Luis
Bonjour,
J'ai fais du copier-coller de ton code, rien ne fonctionne.
Devines-tu pourquoi? Car moi là je suis encore plus perdu
qu'avant.
J'ai un avertissement sonore en sortant du champ du
formulaire (pas bon signe) et dans la table rien ne s'est
écrit.
A bientôt.
Luis
-----Message d'origine-----
Voilà ce que je te propose, mais je n'ai peut-être pas
bien saisi ce que tu

veux.

Dim Critère As String
Dim MaBD As Database
Dim MaTable As Recordset

If IsNull(Me.Qualification) Then
MsgBox "La qualification ne peut être absente"
[Qualification].SetFocus
Exit Sub
End If

posesp1 = InStr(1, Me.Qualification, "_") ' Recherche le
_.

If posesp1 = 0 Then
Expérience = Me.Qualification
Else
LongueurMot = posesp1 - 1 ' Calcule la longueur du
deuxième mot.

Expérience = Left(Me.Qualification, posesp1 - 1) '
Retourne le

premier mot.
motMilieu = Mid(Me.Qualification, posesp1 + 1) '
Retourne le

deuxième mot.

Me.Qualification =
motMilieu '??????????????????????????????????


End If
SendKeys "+{ENTER}" '??????????????????????????????????

Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where

COMPETENCESCOMMANDES.COMPETENCE='" & Expérience & "';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If

Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where

COMPETENCESCOMMANDES.COMPETENCE='" & Qualification & "';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If

Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where

COMPETENCESCOMMANDES.COMPETENCE='" & Expérience & "_" &
Qualification &

"';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If


Tiens-moi au courant
Cordialement

Gilbert

"Luis" a écrit dans
le message de

news: 0d0001c3a9f0$3e3aec40$
Bonjour,
Au départ j'ai un formulaire avec plusieurs champs dont
un est une liste déroulante (source de cette liste
déroulante une requêtte avec tous les domaines de métiers
et à chaque domaine les métiers, ex.:

Banques_Conseiller à la clientèle
Mécanique_Outilleur
Mécanique_Monteur de machines outils
Mécanique_Mécanicien

Après la sélection et à la sortie de ce champs, il ne
reste que par exemple "Mécanicien" dans ce champ du
formulaire, car c'est la seule information importante
dans le formulaire.

Pour des raisons de sélection dans un autre formulaire je
dois récupérer dans une table indépendante:
Dans le 1er champ "IDCOMMANDE" (appelée RéfCommande)
Dans le 2ème champ "Mécanique" (C'est à dire le mot placé
avant le _)
Dans le 2ème champ "Mécanicien" (c'est à dire le mot
placé après le_)
De là le code que j'ai envoyé dans mon méssage.
CECI MARCHE BIEN.
Ce que je n'arrive pas à faire:
Ecrire dans le 3ème champ de cette table indépendante le
tout c'est à dire le "Mot avant le _ et le mot après le _"
formaté telle que dans la liste déroulante.
Je ne sais pas si j'ai réussi à répondre à ta ?
Merci, à bientôt.
Luis
-----Message d'origine-----
Bonjour,

J'ai du mal à comprendre ce que tu as au départ et ce
que tu veux obtenir

exactement.
Un complément d'infos serait le bienvenu.

Gilbert


"Luis" a écrit
dans le message de

news: 026501c3a945$4c57b5c0$
Bonjour,
J'ai un formulaire de prise de commande dans lequel on
rente la qualification demandée dans un champ.
Cette qualification est sélectionnée dans une zone liste
déroulante, avec une source requette

Ex.: Mécanique_Mécanicien

J'ai une table "COMPETENCESCOMMANDES" avec un
champ "NUMCOMMANDE" un champ "COMPETENCE" et un
champ "DOMAINECOMPETENCE"

J'ai bien trouvé comment remplir "NUMCOMMANDE"
et "COMPETENCE"
Ce qui donne par exemple :2457 (RéfCommande)
:Mécanique
:Mécanicien

Par contre dans le champ DOMAINECOMPETENCE je n'arrive
pas

à inscrire Mécanique_Mécanicien.

Je me suis cassé la tête pour touver comment séparer les
deux mots pour qu'ils s'inscrivent dans COMPETANCE et
maintenant je sèche.
Est-ce vous pouver me dire quoi rajouter, voici mon code:
Dim mot
mot = Me![Qualification]

If IsNull(mot) Then
MsgBox "La qualification ne peut être absente"
[Qualification].SetFocus

Exit Sub
End If
'---------

posesp1 = InStr(1, mot, "_") ' Recherche le _.
If posesp1 = 0 Then

Expérience = mot
Else

LongueurMot = posesp1 - 1 ' Calcule la longueur du
deuxième mot.
Motdebut = Mid(mot, 1, LongueurMot)
' Retourne le premier mot.
Expérience = Motdebut
'---------
ChaîneTest = Qualification
'posesp1 = InStr(1, ChaîneTest, "_") 'position du _

If Not (posesp1 = "") Or Not IsNull(posesp1) Then

motMilieu = Mid$(ChaîneTest, posesp1 + 1)
' Retourne le deuxième mot.
Else
End If
Me![Qualification] = motMilieu

End If
SendKeys "+{ENTER}"

NUMCOMMANDE = RéfCommande
CAT1 = Expérience

Dim Critère As String, MaBD As Database, MaTable As
Recordset


Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("COMPETENCESCOMMANDES",
DB_OPEN_DYNASET) ' Crée la feuille de réponses dynamique.
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT1 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT1
MaTable.Update
MaTable.Close
Else
'matable.Close
End If
'--
CAT2 = Qualification
Set MaTable = MaBD.OpenRecordset
("COMPETENCESCOMMANDES", DB_OPEN_DYNASET)
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT2 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT2
MaTable.Update
MaTable.Close
Else
'matable.Close
End If

fintz:
Exit Sub
If IsNull(mot) Then
ertz:
MsgBox " Une Qualification principale ne peut pas rester
vide"

Qualification.SetFocus
Resume fintz
End If

Merci.
Luis


.





.




Avatar
Vié Gilbert
Salut

Les ??????? sont pour dire que je n'ai pas compris à quoi te servait cette
ligne.

Si le code ne fonctionne pas, il te faut le compiler pour vérifier qu'il n'y
a pas d'erreur de syntaxe.
Eventuellement mettre un point d'arrêt au début de ta procédure, puis
exécuter pas à pas avec la touche F8 afin de pouvoir vérifier le bon
déroulement.

N.B. Les lignes suivantes ne sont qu'une commande. Elles doivent être soit
sur la même ligne, soit raccordées par **** " & _*** (tout ce qui est entre
les **)
Set MaTable = MaBD.OpenRecordset("select COMPETENCESCOMMANDES.Refcommande,
COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where COMPETENCESCOMMANDES.COMPETENCE='" & Expérience & "';")


Gilbert


"Luis" a écrit dans le message de
news:0b2701c3aaa4$015cc000$
Bonjour,
J'ai fais du copier-coller de ton code, rien ne fonctionne.
Devines-tu pourquoi? Car moi là je suis encore plus perdu
qu'avant.
J'ai un avertissement sonore en sortant du champ du
formulaire (pas bon signe) et dans la table rien ne s'est
écrit.
A bientôt.
Luis
-----Message d'origine-----
Voilà ce que je te propose, mais je n'ai peut-être pas
bien saisi ce que tu

veux.

Dim Critère As String
Dim MaBD As Database
Dim MaTable As Recordset

If IsNull(Me.Qualification) Then
MsgBox "La qualification ne peut être absente"
[Qualification].SetFocus
Exit Sub
End If

posesp1 = InStr(1, Me.Qualification, "_") ' Recherche le
_.

If posesp1 = 0 Then
Expérience = Me.Qualification
Else
LongueurMot = posesp1 - 1 ' Calcule la longueur du
deuxième mot.

Expérience = Left(Me.Qualification, posesp1 - 1) '
Retourne le

premier mot.
motMilieu = Mid(Me.Qualification, posesp1 + 1) '
Retourne le

deuxième mot.

Me.Qualification motMilieu '??????????????????????????????????

End If
SendKeys "+{ENTER}" '??????????????????????????????????

Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where

COMPETENCESCOMMANDES.COMPETENCE='" & Expérience & "';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If

Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where

COMPETENCESCOMMANDES.COMPETENCE='" & Qualification & "';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If

Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where

COMPETENCESCOMMANDES.COMPETENCE='" & Expérience & "_" &
Qualification &

"';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If


Tiens-moi au courant
Cordialement

Gilbert

"Luis" a écrit dans
le message de

news: 0d0001c3a9f0$3e3aec40$
Bonjour,
Au départ j'ai un formulaire avec plusieurs champs dont
un est une liste déroulante (source de cette liste
déroulante une requêtte avec tous les domaines de métiers
et à chaque domaine les métiers, ex.:

Banques_Conseiller à la clientèle
Mécanique_Outilleur
Mécanique_Monteur de machines outils
Mécanique_Mécanicien

Après la sélection et à la sortie de ce champs, il ne
reste que par exemple "Mécanicien" dans ce champ du
formulaire, car c'est la seule information importante
dans le formulaire.

Pour des raisons de sélection dans un autre formulaire je
dois récupérer dans une table indépendante:
Dans le 1er champ "IDCOMMANDE" (appelée RéfCommande)
Dans le 2ème champ "Mécanique" (C'est à dire le mot placé
avant le _)
Dans le 2ème champ "Mécanicien" (c'est à dire le mot
placé après le_)
De là le code que j'ai envoyé dans mon méssage.
CECI MARCHE BIEN.
Ce que je n'arrive pas à faire:
Ecrire dans le 3ème champ de cette table indépendante le
tout c'est à dire le "Mot avant le _ et le mot après le _"
formaté telle que dans la liste déroulante.
Je ne sais pas si j'ai réussi à répondre à ta ?
Merci, à bientôt.
Luis
-----Message d'origine-----
Bonjour,

J'ai du mal à comprendre ce que tu as au départ et ce
que tu veux obtenir

exactement.
Un complément d'infos serait le bienvenu.

Gilbert


"Luis" a écrit
dans le message de

news: 026501c3a945$4c57b5c0$
Bonjour,
J'ai un formulaire de prise de commande dans lequel on
rente la qualification demandée dans un champ.
Cette qualification est sélectionnée dans une zone liste
déroulante, avec une source requette

Ex.: Mécanique_Mécanicien

J'ai une table "COMPETENCESCOMMANDES" avec un
champ "NUMCOMMANDE" un champ "COMPETENCE" et un
champ "DOMAINECOMPETENCE"

J'ai bien trouvé comment remplir "NUMCOMMANDE"
et "COMPETENCE"
Ce qui donne par exemple :2457 (RéfCommande)
:Mécanique
:Mécanicien

Par contre dans le champ DOMAINECOMPETENCE je n'arrive
pas

à inscrire Mécanique_Mécanicien.

Je me suis cassé la tête pour touver comment séparer les
deux mots pour qu'ils s'inscrivent dans COMPETANCE et
maintenant je sèche.
Est-ce vous pouver me dire quoi rajouter, voici mon code:
Dim mot
mot = Me![Qualification]

If IsNull(mot) Then
MsgBox "La qualification ne peut être absente"
[Qualification].SetFocus

Exit Sub
End If
'---------

posesp1 = InStr(1, mot, "_") ' Recherche le _.
If posesp1 = 0 Then

Expérience = mot
Else

LongueurMot = posesp1 - 1 ' Calcule la longueur du
deuxième mot.
Motdebut = Mid(mot, 1, LongueurMot)
' Retourne le premier mot.
Expérience = Motdebut
'---------
ChaîneTest = Qualification
'posesp1 = InStr(1, ChaîneTest, "_") 'position du _

If Not (posesp1 = "") Or Not IsNull(posesp1) Then

motMilieu = Mid$(ChaîneTest, posesp1 + 1)
' Retourne le deuxième mot.
Else
End If
Me![Qualification] = motMilieu

End If
SendKeys "+{ENTER}"

NUMCOMMANDE = RéfCommande
CAT1 = Expérience

Dim Critère As String, MaBD As Database, MaTable As
Recordset


Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("COMPETENCESCOMMANDES",
DB_OPEN_DYNASET) ' Crée la feuille de réponses dynamique.
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT1 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT1
MaTable.Update
MaTable.Close
Else
'matable.Close
End If
'--
CAT2 = Qualification
Set MaTable = MaBD.OpenRecordset
("COMPETENCESCOMMANDES", DB_OPEN_DYNASET)
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT2 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT2
MaTable.Update
MaTable.Close
Else
'matable.Close
End If

fintz:
Exit Sub
If IsNull(mot) Then
ertz:
MsgBox " Une Qualification principale ne peut pas rester
vide"

Qualification.SetFocus
Resume fintz
End If

Merci.
Luis


.





.




Avatar
Luis
Bonjour,
Voilà ce que j'ai trouvé et qui fonctionne:

Dim mot
mot = Me![Qualification]

If IsNull(mot) Then
MsgBox "La qualification ne peut être absente"
[Qualification].SetFocus

Exit Sub
End If
'-----
CAT1 = Me![Qualification]

Dim Critère As String, MaBD As Database, MaTable As
Recordset
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("COMPETENCESCOMMANDES",
DB_OPEN_DYNASET)
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!DOMAINECOMPETENCE
If COMPE = CAT1 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!DOMAINECOMPETENCE = CAT1
MaTable.Update
MaTable.Close
Else
'matable.Close
End If

'---------

posesp1 = InStr(1, mot, "_") ' Recherche le _.
If posesp1 = 0 Then

Expérience = mot
Else

LongueurMot = posesp1 - 1 ' Calcule la longueur du
deuxième mot.
Motdebut = Mid(mot, 1, LongueurMot)
' Retourne le premier mot.
Expérience = Motdebut
'---------
ChaîneTest = Qualification
'posesp1 = InStr(1, ChaîneTest, "_") 'position du _

If Not (posesp1 = "") Or Not IsNull(posesp1) Then

motMilieu = Mid$(ChaîneTest, posesp1 + 1)
' Retourne le deuxième mot.
Else
End If
Me![Qualification] = motMilieu

End If
SendKeys "+{ENTER}"

NUMCOMMANDE = RéfCommande
CAT2 = Expérience


Set MaTable = MaBD.OpenRecordset("COMPETENCESCOMMANDES",
DB_OPEN_DYNASET) ' Crée la feuille de réponses dynamique.
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT2 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT2
MaTable.Update
MaTable.Close
Else
'matable.Close
End If
'--
CAT3 = Qualification
Set MaTable = MaBD.OpenRecordset("COMPETENCESCOMMANDES",
DB_OPEN_DYNASET)
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT3 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT3
MaTable.Update
MaTable.Close
Else
'matable.Close
End If

Mais si tu as quelque chose de plus élégant, je préfère
(car je suis passé de Access 2 à 97'quelques jours' et
maintenant sur Xp et il est vrais que je ne suis pas à
jour et que j'ai appris seul avec des bouquins...alors
voilà le problème. JE NE SUIS PAS BON DU TOUT)

!!!TRèS IMPORTANT!!!!, Le formulaire n'est pas Option
Explicit, car j'ai une quirielle de variables que je
devrais justifier.
A bientôt.
Luis
-----Message d'origine-----
Voilà ce que je te propose, mais je n'ai peut-être pas
bien saisi ce que tu

veux.

Dim Critère As String
Dim MaBD As Database
Dim MaTable As Recordset

If IsNull(Me.Qualification) Then
MsgBox "La qualification ne peut être absente"
[Qualification].SetFocus
Exit Sub
End If

posesp1 = InStr(1, Me.Qualification, "_") ' Recherche le
_.

If posesp1 = 0 Then
Expérience = Me.Qualification
Else
LongueurMot = posesp1 - 1 ' Calcule la longueur du
deuxième mot.

Expérience = Left(Me.Qualification, posesp1 - 1) '
Retourne le

premier mot.
motMilieu = Mid(Me.Qualification, posesp1 + 1) '
Retourne le

deuxième mot.

Me.Qualification =
motMilieu '??????????????????????????????????


End If
SendKeys "+{ENTER}" '??????????????????????????????????

Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where

COMPETENCESCOMMANDES.COMPETENCE='" & Expérience & "';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If

Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where

COMPETENCESCOMMANDES.COMPETENCE='" & Qualification & "';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If

Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where

COMPETENCESCOMMANDES.COMPETENCE='" & Expérience & "_" &
Qualification &

"';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If


Tiens-moi au courant
Cordialement

Gilbert

"Luis" a écrit dans
le message de

news: 0d0001c3a9f0$3e3aec40$
Bonjour,
Au départ j'ai un formulaire avec plusieurs champs dont
un est une liste déroulante (source de cette liste
déroulante une requêtte avec tous les domaines de métiers
et à chaque domaine les métiers, ex.:

Banques_Conseiller à la clientèle
Mécanique_Outilleur
Mécanique_Monteur de machines outils
Mécanique_Mécanicien

Après la sélection et à la sortie de ce champs, il ne
reste que par exemple "Mécanicien" dans ce champ du
formulaire, car c'est la seule information importante
dans le formulaire.

Pour des raisons de sélection dans un autre formulaire je
dois récupérer dans une table indépendante:
Dans le 1er champ "IDCOMMANDE" (appelée RéfCommande)
Dans le 2ème champ "Mécanique" (C'est à dire le mot placé
avant le _)
Dans le 2ème champ "Mécanicien" (c'est à dire le mot
placé après le_)
De là le code que j'ai envoyé dans mon méssage.
CECI MARCHE BIEN.
Ce que je n'arrive pas à faire:
Ecrire dans le 3ème champ de cette table indépendante le
tout c'est à dire le "Mot avant le _ et le mot après le _"
formaté telle que dans la liste déroulante.
Je ne sais pas si j'ai réussi à répondre à ta ?
Merci, à bientôt.
Luis
-----Message d'origine-----
Bonjour,

J'ai du mal à comprendre ce que tu as au départ et ce
que tu veux obtenir

exactement.
Un complément d'infos serait le bienvenu.

Gilbert


"Luis" a écrit
dans le message de

news: 026501c3a945$4c57b5c0$
Bonjour,
J'ai un formulaire de prise de commande dans lequel on
rente la qualification demandée dans un champ.
Cette qualification est sélectionnée dans une zone liste
déroulante, avec une source requette

Ex.: Mécanique_Mécanicien

J'ai une table "COMPETENCESCOMMANDES" avec un
champ "NUMCOMMANDE" un champ "COMPETENCE" et un
champ "DOMAINECOMPETENCE"

J'ai bien trouvé comment remplir "NUMCOMMANDE"
et "COMPETENCE"
Ce qui donne par exemple :2457 (RéfCommande)
:Mécanique
:Mécanicien

Par contre dans le champ DOMAINECOMPETENCE je n'arrive
pas

à inscrire Mécanique_Mécanicien.

Je me suis cassé la tête pour touver comment séparer les
deux mots pour qu'ils s'inscrivent dans COMPETANCE et
maintenant je sèche.
Est-ce vous pouver me dire quoi rajouter, voici mon code:
Dim mot
mot = Me![Qualification]

If IsNull(mot) Then
MsgBox "La qualification ne peut être absente"
[Qualification].SetFocus

Exit Sub
End If
'---------

posesp1 = InStr(1, mot, "_") ' Recherche le _.
If posesp1 = 0 Then

Expérience = mot
Else

LongueurMot = posesp1 - 1 ' Calcule la longueur du
deuxième mot.
Motdebut = Mid(mot, 1, LongueurMot)
' Retourne le premier mot.
Expérience = Motdebut
'---------
ChaîneTest = Qualification
'posesp1 = InStr(1, ChaîneTest, "_") 'position du _

If Not (posesp1 = "") Or Not IsNull(posesp1) Then

motMilieu = Mid$(ChaîneTest, posesp1 + 1)
' Retourne le deuxième mot.
Else
End If
Me![Qualification] = motMilieu

End If
SendKeys "+{ENTER}"

NUMCOMMANDE = RéfCommande
CAT1 = Expérience

Dim Critère As String, MaBD As Database, MaTable As
Recordset


Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("COMPETENCESCOMMANDES",
DB_OPEN_DYNASET) ' Crée la feuille de réponses dynamique.
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT1 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT1
MaTable.Update
MaTable.Close
Else
'matable.Close
End If
'--
CAT2 = Qualification
Set MaTable = MaBD.OpenRecordset
("COMPETENCESCOMMANDES", DB_OPEN_DYNASET)
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT2 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT2
MaTable.Update
MaTable.Close
Else
'matable.Close
End If

fintz:
Exit Sub
If IsNull(mot) Then
ertz:
MsgBox " Une Qualification principale ne peut pas rester
vide"

Qualification.SetFocus
Resume fintz
End If

Merci.
Luis


.





.




Avatar
Luis
Bonjour,
Si je mets un point d'arrêt et exécuter le pas à pas j'ai
un signal d'erreur à:
Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,
COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where
COMPETENCESCOMMANDES.COMPETENCE='" & Expérience & "';")

Erreur d'exécution '91':
Variable Objet ou variable de bloc With non définie.

Le problème vient d'Option explicit que je ne veux pas
utiliser dans ce formulaire car, j'ai trop de variables à
définir et que je ne sais pas comment le faire.
Merci.
Luis
-----Message d'origine-----
Salut

Les ??????? sont pour dire que je n'ai pas compris à quoi
te servait cette

ligne.

Si le code ne fonctionne pas, il te faut le compiler pour
vérifier qu'il n'y

a pas d'erreur de syntaxe.
Eventuellement mettre un point d'arrêt au début de ta
procédure, puis

exécuter pas à pas avec la touche F8 afin de pouvoir
vérifier le bon

déroulement.

N.B. Les lignes suivantes ne sont qu'une commande. Elles
doivent être soit

sur la même ligne, soit raccordées par **** " & _***
(tout ce qui est entre

les **)
Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where COMPETENCESCOMMANDES.COMPETENCE='" & Expérience
& "';")



Gilbert


"Luis" a écrit dans
le message de

news:0b2701c3aaa4$015cc000$
Bonjour,
J'ai fais du copier-coller de ton code, rien ne
fonctionne.

Devines-tu pourquoi? Car moi là je suis encore plus perdu
qu'avant.
J'ai un avertissement sonore en sortant du champ du
formulaire (pas bon signe) et dans la table rien ne s'est
écrit.
A bientôt.
Luis
-----Message d'origine-----
Voilà ce que je te propose, mais je n'ai peut-être pas
bien saisi ce que tu

veux.

Dim Critère As String
Dim MaBD As Database
Dim MaTable As Recordset

If IsNull(Me.Qualification) Then
MsgBox "La qualification ne peut être absente"
[Qualification].SetFocus
Exit Sub
End If

posesp1 = InStr(1, Me.Qualification, "_") ' Recherche le
_.

If posesp1 = 0 Then
Expérience = Me.Qualification
Else
LongueurMot = posesp1 - 1 ' Calcule la longueur du
deuxième mot.

Expérience = Left(Me.Qualification, posesp1 - 1) '
Retourne le

premier mot.
motMilieu = Mid(Me.Qualification, posesp1 + 1) '
Retourne le

deuxième mot.

Me.Qualification =
motMilieu '??????????????????????????????????


End If
SendKeys "+{ENTER}" '??????????????????????????????????

Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where

COMPETENCESCOMMANDES.COMPETENCE='" & Expérience & "';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If

Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where

COMPETENCESCOMMANDES.COMPETENCE='" & Qualification
& "';")


If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If

Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where

COMPETENCESCOMMANDES.COMPETENCE='" & Expérience & "_" &
Qualification &

"';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If


Tiens-moi au courant
Cordialement

Gilbert

"Luis" a écrit dans
le message de

news: 0d0001c3a9f0$3e3aec40$
Bonjour,
Au départ j'ai un formulaire avec plusieurs champs dont
un est une liste déroulante (source de cette liste
déroulante une requêtte avec tous les domaines de métiers
et à chaque domaine les métiers, ex.:

Banques_Conseiller à la clientèle
Mécanique_Outilleur
Mécanique_Monteur de machines outils
Mécanique_Mécanicien

Après la sélection et à la sortie de ce champs, il ne
reste que par exemple "Mécanicien" dans ce champ du
formulaire, car c'est la seule information importante
dans le formulaire.

Pour des raisons de sélection dans un autre formulaire je
dois récupérer dans une table indépendante:
Dans le 1er champ "IDCOMMANDE" (appelée RéfCommande)
Dans le 2ème champ "Mécanique" (C'est à dire le mot placé
avant le _)
Dans le 2ème champ "Mécanicien" (c'est à dire le mot
placé après le_)
De là le code que j'ai envoyé dans mon méssage.
CECI MARCHE BIEN.
Ce que je n'arrive pas à faire:
Ecrire dans le 3ème champ de cette table indépendante le
tout c'est à dire le "Mot avant le _ et le mot après le
_"


formaté telle que dans la liste déroulante.
Je ne sais pas si j'ai réussi à répondre à ta ?
Merci, à bientôt.
Luis
-----Message d'origine-----
Bonjour,

J'ai du mal à comprendre ce que tu as au départ et ce
que tu veux obtenir

exactement.
Un complément d'infos serait le bienvenu.

Gilbert


"Luis" a écrit
dans le message de

news: 026501c3a945$4c57b5c0$
Bonjour,
J'ai un formulaire de prise de commande dans lequel on
rente la qualification demandée dans un champ.
Cette qualification est sélectionnée dans une zone liste
déroulante, avec une source requette

Ex.: Mécanique_Mécanicien

J'ai une table "COMPETENCESCOMMANDES" avec un
champ "NUMCOMMANDE" un champ "COMPETENCE" et un
champ "DOMAINECOMPETENCE"

J'ai bien trouvé comment remplir "NUMCOMMANDE"
et "COMPETENCE"
Ce qui donne par exemple :2457 (RéfCommande)
:Mécanique
:Mécanicien

Par contre dans le champ DOMAINECOMPETENCE je n'arrive
pas

à inscrire Mécanique_Mécanicien.

Je me suis cassé la tête pour touver comment séparer les
deux mots pour qu'ils s'inscrivent dans COMPETANCE et
maintenant je sèche.
Est-ce vous pouver me dire quoi rajouter, voici mon
code:



Dim mot
mot = Me![Qualification]

If IsNull(mot) Then
MsgBox "La qualification ne peut être absente"
[Qualification].SetFocus

Exit Sub
End If
'---------

posesp1 = InStr(1, mot, "_") ' Recherche le _.
If posesp1 = 0 Then

Expérience = mot
Else

LongueurMot = posesp1 - 1 ' Calcule la longueur du
deuxième mot.
Motdebut = Mid(mot, 1, LongueurMot)
' Retourne le premier mot.
Expérience = Motdebut
'---------
ChaîneTest = Qualification
'posesp1 = InStr(1, ChaîneTest, "_") 'position du _

If Not (posesp1 = "") Or Not IsNull(posesp1) Then

motMilieu = Mid$(ChaîneTest, posesp1 + 1)
' Retourne le deuxième mot.
Else
End If
Me![Qualification] = motMilieu

End If
SendKeys "+{ENTER}"

NUMCOMMANDE = RéfCommande
CAT1 = Expérience

Dim Critère As String, MaBD As Database, MaTable As
Recordset


Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("COMPETENCESCOMMANDES",
DB_OPEN_DYNASET) ' Crée la feuille de réponses
dynamique.



MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT1 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT1
MaTable.Update
MaTable.Close
Else
'matable.Close
End If
'--
CAT2 = Qualification
Set MaTable = MaBD.OpenRecordset
("COMPETENCESCOMMANDES", DB_OPEN_DYNASET)
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT2 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT2
MaTable.Update
MaTable.Close
Else
'matable.Close
End If

fintz:
Exit Sub
If IsNull(mot) Then
ertz:
MsgBox " Une Qualification principale ne peut pas rester
vide"

Qualification.SetFocus
Resume fintz
End If

Merci.
Luis


.





.




.





Avatar
Gilbert
Salut,
si tu veux que j'essaie de déboguer ton module, envoie-moi une copie de ta
base avec simplement la ou les tables nécessaires ainsi que le formulaire
concerné. Compacte le tout et zippe-le (si possible). Mon adresse se trouve
dans la signature (enlever les majuscules).




"Luis" a écrit dans le message de
news: 0b3e01c3aaad$ffed45f0$
Bonjour,
Voilà ce que j'ai trouvé et qui fonctionne:

Dim mot
mot = Me![Qualification]

If IsNull(mot) Then
MsgBox "La qualification ne peut être absente"
[Qualification].SetFocus

Exit Sub
End If
'-----
CAT1 = Me![Qualification]

Dim Critère As String, MaBD As Database, MaTable As
Recordset
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("COMPETENCESCOMMANDES",
DB_OPEN_DYNASET)
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!DOMAINECOMPETENCE
If COMPE = CAT1 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!DOMAINECOMPETENCE = CAT1
MaTable.Update
MaTable.Close
Else
'matable.Close
End If

'---------

posesp1 = InStr(1, mot, "_") ' Recherche le _.
If posesp1 = 0 Then

Expérience = mot
Else

LongueurMot = posesp1 - 1 ' Calcule la longueur du
deuxième mot.
Motdebut = Mid(mot, 1, LongueurMot)
' Retourne le premier mot.
Expérience = Motdebut
'---------
ChaîneTest = Qualification
'posesp1 = InStr(1, ChaîneTest, "_") 'position du _

If Not (posesp1 = "") Or Not IsNull(posesp1) Then

motMilieu = Mid$(ChaîneTest, posesp1 + 1)
' Retourne le deuxième mot.
Else
End If
Me![Qualification] = motMilieu

End If
SendKeys "+{ENTER}"

NUMCOMMANDE = RéfCommande
CAT2 = Expérience


Set MaTable = MaBD.OpenRecordset("COMPETENCESCOMMANDES",
DB_OPEN_DYNASET) ' Crée la feuille de réponses dynamique.
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT2 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT2
MaTable.Update
MaTable.Close
Else
'matable.Close
End If
'--
CAT3 = Qualification
Set MaTable = MaBD.OpenRecordset("COMPETENCESCOMMANDES",
DB_OPEN_DYNASET)
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT3 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT3
MaTable.Update
MaTable.Close
Else
'matable.Close
End If

Mais si tu as quelque chose de plus élégant, je préfère
(car je suis passé de Access 2 à 97'quelques jours' et
maintenant sur Xp et il est vrais que je ne suis pas à
jour et que j'ai appris seul avec des bouquins...alors
voilà le problème. JE NE SUIS PAS BON DU TOUT)

!!!TRèS IMPORTANT!!!!, Le formulaire n'est pas Option
Explicit, car j'ai une quirielle de variables que je
devrais justifier.
A bientôt.
Luis
-----Message d'origine-----
Voilà ce que je te propose, mais je n'ai peut-être pas
bien saisi ce que tu

veux.

Dim Critère As String
Dim MaBD As Database
Dim MaTable As Recordset

If IsNull(Me.Qualification) Then
MsgBox "La qualification ne peut être absente"
[Qualification].SetFocus
Exit Sub
End If

posesp1 = InStr(1, Me.Qualification, "_") ' Recherche le
_.

If posesp1 = 0 Then
Expérience = Me.Qualification
Else
LongueurMot = posesp1 - 1 ' Calcule la longueur du
deuxième mot.

Expérience = Left(Me.Qualification, posesp1 - 1) '
Retourne le

premier mot.
motMilieu = Mid(Me.Qualification, posesp1 + 1) '
Retourne le

deuxième mot.

Me.Qualification motMilieu '??????????????????????????????????

End If
SendKeys "+{ENTER}" '??????????????????????????????????

Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where

COMPETENCESCOMMANDES.COMPETENCE='" & Expérience & "';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If

Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where

COMPETENCESCOMMANDES.COMPETENCE='" & Qualification & "';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If

Set MaTable = MaBD.OpenRecordset("select
COMPETENCESCOMMANDES.Refcommande,

COMPETENCESCOMMANDES.COMPETENCE from COMPETENCESCOMMANDES
where

COMPETENCESCOMMANDES.COMPETENCE='" & Expérience & "_" &
Qualification &

"';")
If MaTable.RecordCount = 0 Then
'ajouter l'enregistrement
End If


Tiens-moi au courant
Cordialement

Gilbert

"Luis" a écrit dans
le message de

news: 0d0001c3a9f0$3e3aec40$
Bonjour,
Au départ j'ai un formulaire avec plusieurs champs dont
un est une liste déroulante (source de cette liste
déroulante une requêtte avec tous les domaines de métiers
et à chaque domaine les métiers, ex.:

Banques_Conseiller à la clientèle
Mécanique_Outilleur
Mécanique_Monteur de machines outils
Mécanique_Mécanicien

Après la sélection et à la sortie de ce champs, il ne
reste que par exemple "Mécanicien" dans ce champ du
formulaire, car c'est la seule information importante
dans le formulaire.

Pour des raisons de sélection dans un autre formulaire je
dois récupérer dans une table indépendante:
Dans le 1er champ "IDCOMMANDE" (appelée RéfCommande)
Dans le 2ème champ "Mécanique" (C'est à dire le mot placé
avant le _)
Dans le 2ème champ "Mécanicien" (c'est à dire le mot
placé après le_)
De là le code que j'ai envoyé dans mon méssage.
CECI MARCHE BIEN.
Ce que je n'arrive pas à faire:
Ecrire dans le 3ème champ de cette table indépendante le
tout c'est à dire le "Mot avant le _ et le mot après le _"
formaté telle que dans la liste déroulante.
Je ne sais pas si j'ai réussi à répondre à ta ?
Merci, à bientôt.
Luis
-----Message d'origine-----
Bonjour,

J'ai du mal à comprendre ce que tu as au départ et ce
que tu veux obtenir

exactement.
Un complément d'infos serait le bienvenu.

Gilbert


"Luis" a écrit
dans le message de

news: 026501c3a945$4c57b5c0$
Bonjour,
J'ai un formulaire de prise de commande dans lequel on
rente la qualification demandée dans un champ.
Cette qualification est sélectionnée dans une zone liste
déroulante, avec une source requette

Ex.: Mécanique_Mécanicien

J'ai une table "COMPETENCESCOMMANDES" avec un
champ "NUMCOMMANDE" un champ "COMPETENCE" et un
champ "DOMAINECOMPETENCE"

J'ai bien trouvé comment remplir "NUMCOMMANDE"
et "COMPETENCE"
Ce qui donne par exemple :2457 (RéfCommande)
:Mécanique
:Mécanicien

Par contre dans le champ DOMAINECOMPETENCE je n'arrive
pas

à inscrire Mécanique_Mécanicien.

Je me suis cassé la tête pour touver comment séparer les
deux mots pour qu'ils s'inscrivent dans COMPETANCE et
maintenant je sèche.
Est-ce vous pouver me dire quoi rajouter, voici mon code:
Dim mot
mot = Me![Qualification]

If IsNull(mot) Then
MsgBox "La qualification ne peut être absente"
[Qualification].SetFocus

Exit Sub
End If
'---------

posesp1 = InStr(1, mot, "_") ' Recherche le _.
If posesp1 = 0 Then

Expérience = mot
Else

LongueurMot = posesp1 - 1 ' Calcule la longueur du
deuxième mot.
Motdebut = Mid(mot, 1, LongueurMot)
' Retourne le premier mot.
Expérience = Motdebut
'---------
ChaîneTest = Qualification
'posesp1 = InStr(1, ChaîneTest, "_") 'position du _

If Not (posesp1 = "") Or Not IsNull(posesp1) Then

motMilieu = Mid$(ChaîneTest, posesp1 + 1)
' Retourne le deuxième mot.
Else
End If
Me![Qualification] = motMilieu

End If
SendKeys "+{ENTER}"

NUMCOMMANDE = RéfCommande
CAT1 = Expérience

Dim Critère As String, MaBD As Database, MaTable As
Recordset


Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("COMPETENCESCOMMANDES",
DB_OPEN_DYNASET) ' Crée la feuille de réponses dynamique.
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT1 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT1
MaTable.Update
MaTable.Close
Else
'matable.Close
End If
'--
CAT2 = Qualification
Set MaTable = MaBD.OpenRecordset
("COMPETENCESCOMMANDES", DB_OPEN_DYNASET)
MaTable.MoveFirst ' Recherche la première occurence.
Do Until MaTable.EOF ' Boucle jusqu'à ce qu'il n'y ait
plus d'enregistrement correspondant.

TESTER = MaTable!RéfCommande
If TESTER = NUMCOMMANDE Then
COMPE = MaTable!COMPETENCE
If COMPE = CAT2 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If trouve = 0 Then
MaTable.AddNew
MaTable!RéfCommande = NUMCOMMANDE
MaTable!COMPETENCE = CAT2
MaTable.Update
MaTable.Close
Else
'matable.Close
End If

fintz:
Exit Sub
If IsNull(mot) Then
ertz:
MsgBox " Une Qualification principale ne peut pas rester
vide"

Qualification.SetFocus
Resume fintz
End If

Merci.
Luis


.





.




1 2