Dans la première colonne on saisie la langue par exemple 'anglais' et dans
la 2ème le niveau de connaissances de cette même langue et ainsi de suite
pour les autres langues.
Il faut que je copie dans une autre table
composée de champs suivants
LANGUE, LANGUENIVEAU
LANGUE2, LANGUE2NIVEAU
Dans 'Langue2' et 'LANGUE2NIVEAU' ont doit trouver exactement la même chose
que dans 'Langue' et 'LANGUENIVEAU'
Au fait c'est une double copie.
J'ai fait cette procédure:
Dim Db As DAO.Database
Dim TableCand As Recordset
Dim TableLang As Recordset
Dim LANGUEDEFINITIVE As Integer, InfoLANGUEDEFINITIVE As Integer,
IndiceLANGUEDEFINITIVE As Integer
Function SetLanguesConnues()
Set Db = CurrentDb
Set TableCand = Db.OpenRecordset("SELECT IDCANDIDAT, [languematernelle],
[maternelle], [1ère langue], [1parlé/écrit], [2ème langue], [2parlé/écrit],
[3ème langue], [3parlé/écrit], [4ème langue], [4parlé/écrit], [5ème langue],
[5parlé/écrit] FROM CANDIDATS WHERE IDCANDIDAT =" & Forms![TOUS
CANDIDATS].IDCANDIDAT)
Set TableLang = Db.OpenRecordset("SELECT IDCANDIDAT, LANGUE, LANGUENIVEAU,
LANGUE2, LANGUE2NIVEAU FROM LANGUESCONNUES ORDER BY IDCANDIDAT;")
If Not (TableCand.BOF And TableCand.EOF) Then
TableLang.FindFirst ("IDCANDIDAT=" & TableCand!IDCANDIDAT)
If TableLang.NoMatch Then
For LANGUEdef = 1 To 6
GoSub AjouterLANGUEDEFINITIVE
GoSub EcrireLANGUEDEFINITIVE
Next LANGUEdef
Else
For LANGUEdef = 1 To 6
If TableLang.EOF Then
GoSub AjouterLANGUEDEFINITIVE
Else
If TableLang!IDCANDIDAT <> TableCand!IDCANDIDAT Then
GoSub AjouterLANGUEDEFINITIVE
Else
TableLang.Edit
End If
End If
GoSub EcrireLANGUEDEFINITIVE
If Not TableLang.EOF Then TableLang.MoveNext
Next LANGUEdef
End If
End If
TableCand.Close
TableLang.Close
Exit Function
Dans la première colonne on saisie la langue par exemple 'anglais' et dans la 2ème le niveau de connaissances de cette même langue et ainsi de suite pour les autres langues.
Il faut que je copie dans une autre table composée de champs suivants
LANGUE, LANGUENIVEAU LANGUE2, LANGUE2NIVEAU
Dans 'Langue2' et 'LANGUE2NIVEAU' ont doit trouver exactement la même chose que dans 'Langue' et 'LANGUENIVEAU'
Au fait c'est une double copie.
J'ai fait cette procédure:
Dim Db As DAO.Database Dim TableCand As Recordset Dim TableLang As Recordset Dim LANGUEDEFINITIVE As Integer, InfoLANGUEDEFINITIVE As Integer, IndiceLANGUEDEFINITIVE As Integer
Function SetLanguesConnues()
Set Db = CurrentDb Set TableCand = Db.OpenRecordset("SELECT IDCANDIDAT, [languematernelle], [maternelle], [1ère langue], [1parlé/écrit], [2ème langue], [2parlé/écrit], [3ème langue], [3parlé/écrit], [4ème langue], [4parlé/écrit], [5ème langue], [5parlé/écrit] FROM CANDIDATS WHERE IDCANDIDAT =" & Forms![TOUS CANDIDATS].IDCANDIDAT)
Set TableLang = Db.OpenRecordset("SELECT IDCANDIDAT, LANGUE, LANGUENIVEAU, LANGUE2, LANGUE2NIVEAU FROM LANGUESCONNUES ORDER BY IDCANDIDAT;")
If Not (TableCand.BOF And TableCand.EOF) Then TableLang.FindFirst ("IDCANDIDAT=" & TableCand!IDCANDIDAT) If TableLang.NoMatch Then For LANGUEdef = 1 To 6 GoSub AjouterLANGUEDEFINITIVE GoSub EcrireLANGUEDEFINITIVE Next LANGUEdef Else For LANGUEdef = 1 To 6 If TableLang.EOF Then GoSub AjouterLANGUEDEFINITIVE Else If TableLang!IDCANDIDAT <> TableCand!IDCANDIDAT Then GoSub AjouterLANGUEDEFINITIVE Else TableLang.Edit End If End If GoSub EcrireLANGUEDEFINITIVE
If Not TableLang.EOF Then TableLang.MoveNext
Next LANGUEdef End If End If TableCand.Close TableLang.Close Exit Function
Dans la première colonne on saisie la langue par exemple 'anglais' et dans
la 2ème le niveau de connaissances de cette même langue et ainsi de suite
pour les autres langues.
Il faut que je copie dans une autre table
composée de champs suivants
LANGUE, LANGUENIVEAU
LANGUE2, LANGUE2NIVEAU
Dans 'Langue2' et 'LANGUE2NIVEAU' ont doit trouver exactement la même chose
que dans 'Langue' et 'LANGUENIVEAU'
Au fait c'est une double copie.
J'ai fait cette procédure:
Dim Db As DAO.Database
Dim TableCand As Recordset
Dim TableLang As Recordset
Dim LANGUEDEFINITIVE As Integer, InfoLANGUEDEFINITIVE As Integer,
IndiceLANGUEDEFINITIVE As Integer
Function SetLanguesConnues()
Set Db = CurrentDb
Set TableCand = Db.OpenRecordset("SELECT IDCANDIDAT, [languematernelle],
[maternelle], [1ère langue], [1parlé/écrit], [2ème langue], [2parlé/écrit],
[3ème langue], [3parlé/écrit], [4ème langue], [4parlé/écrit], [5ème langue],
[5parlé/écrit] FROM CANDIDATS WHERE IDCANDIDAT =" & Forms![TOUS
CANDIDATS].IDCANDIDAT)
Set TableLang = Db.OpenRecordset("SELECT IDCANDIDAT, LANGUE, LANGUENIVEAU,
LANGUE2, LANGUE2NIVEAU FROM LANGUESCONNUES ORDER BY IDCANDIDAT;")
If Not (TableCand.BOF And TableCand.EOF) Then
TableLang.FindFirst ("IDCANDIDAT=" & TableCand!IDCANDIDAT)
If TableLang.NoMatch Then
For LANGUEdef = 1 To 6
GoSub AjouterLANGUEDEFINITIVE
GoSub EcrireLANGUEDEFINITIVE
Next LANGUEdef
Else
For LANGUEdef = 1 To 6
If TableLang.EOF Then
GoSub AjouterLANGUEDEFINITIVE
Else
If TableLang!IDCANDIDAT <> TableCand!IDCANDIDAT Then
GoSub AjouterLANGUEDEFINITIVE
Else
TableLang.Edit
End If
End If
GoSub EcrireLANGUEDEFINITIVE
If Not TableLang.EOF Then TableLang.MoveNext
Next LANGUEdef
End If
End If
TableCand.Close
TableLang.Close
Exit Function
Dans la première colonne on saisie la langue par exemple 'anglais' et dans la 2ème le niveau de connaissances de cette même langue et ainsi de suite pour les autres langues.
Il faut que je copie dans une autre table composée de champs suivants
LANGUE, LANGUENIVEAU LANGUE2, LANGUE2NIVEAU
Dans 'Langue2' et 'LANGUE2NIVEAU' ont doit trouver exactement la même chose que dans 'Langue' et 'LANGUENIVEAU'
Au fait c'est une double copie.
J'ai fait cette procédure:
Dim Db As DAO.Database Dim TableCand As Recordset Dim TableLang As Recordset Dim LANGUEDEFINITIVE As Integer, InfoLANGUEDEFINITIVE As Integer, IndiceLANGUEDEFINITIVE As Integer
Function SetLanguesConnues()
Set Db = CurrentDb Set TableCand = Db.OpenRecordset("SELECT IDCANDIDAT, [languematernelle], [maternelle], [1ère langue], [1parlé/écrit], [2ème langue], [2parlé/écrit], [3ème langue], [3parlé/écrit], [4ème langue], [4parlé/écrit], [5ème langue], [5parlé/écrit] FROM CANDIDATS WHERE IDCANDIDAT =" & Forms![TOUS CANDIDATS].IDCANDIDAT)
Set TableLang = Db.OpenRecordset("SELECT IDCANDIDAT, LANGUE, LANGUENIVEAU, LANGUE2, LANGUE2NIVEAU FROM LANGUESCONNUES ORDER BY IDCANDIDAT;")
If Not (TableCand.BOF And TableCand.EOF) Then TableLang.FindFirst ("IDCANDIDAT=" & TableCand!IDCANDIDAT) If TableLang.NoMatch Then For LANGUEdef = 1 To 6 GoSub AjouterLANGUEDEFINITIVE GoSub EcrireLANGUEDEFINITIVE Next LANGUEdef Else For LANGUEdef = 1 To 6 If TableLang.EOF Then GoSub AjouterLANGUEDEFINITIVE Else If TableLang!IDCANDIDAT <> TableCand!IDCANDIDAT Then GoSub AjouterLANGUEDEFINITIVE Else TableLang.Edit End If End If GoSub EcrireLANGUEDEFINITIVE
If Not TableLang.EOF Then TableLang.MoveNext
Next LANGUEdef End If End If TableCand.Close TableLang.Close Exit Function
EcrireLANGUEDEFINITIVE: For InfoLANGUEDEFINITIVE = 1 To 2 IndiceLANGUEDEFINITIVE = 2 * (LANGUEdef - 1) + InfoLANGUEDEFINITIVE TableLang.Fields.Item(InfoLANGUEDEFINITIVE) = TableCand.Fields.Item(IndiceLANGUEDEFINITIVE)
Next InfoLANGUEDEFINITIVE TableLang.Update Return End Function
Le problème c'est que la copie ne se fait que dans 'LANGUE', 'LANGUENIVEAU' et rien ne se copie dans 'LANGUE2', 'LANGUE2NIVEAU'.
Je n'arrive pas à trouver ou est mon erreur. Merci pour votre aide.
Luis
Luis
Bonjour Ilan, Je te remercie pour ta solution, elle fonctionne parfaitement. Si tu pouvais m'éclairer car là je fais sans comprendre. Si par exemple la 2ème table avait LANGUE, LANGUENIVEAU LANGUE2, LANGUE2NIVEAU LANGUE3, LANGUE3NIVEAU LANGUE4, LANGUE4NIVEAU Et que l'on veuille copier les données des champs de la première table dans les champs de la 2ème, toujours sur le même principe. Quelle serait la solution? Tu n'es pas obligé de me répondre, mais ça m'aiderai peut-être à comprendre le principe.
Bonsoir, je crois qu'il manque une boucle dans ta procédure EcrireLangueDefinitive
Dim Langue As integer
EcrireLANGUEDEFINITIVE: For Langue = 0 To 1 For InfoLANGUEDEFINITIVE = 1 To 2 IndiceLANGUEDEFINITIVE = 2 * (LANGUEdef - 1) + InfoLANGUEDEFINITIVE TableLang.Fields.Item(InfoLANGUEDEFINITIVE + 2 * Langue) = TableCand.Fields.ItemIndiceLANGUEDEFINITIVE)
Dans la première colonne on saisie la langue par exemple 'anglais' et dans la 2ème le niveau de connaissances de cette même langue et ainsi de suite pour les autres langues.
Il faut que je copie dans une autre table composée de champs suivants
LANGUE, LANGUENIVEAU LANGUE2, LANGUE2NIVEAU
Dans 'Langue2' et 'LANGUE2NIVEAU' ont doit trouver exactement la même chose que dans 'Langue' et 'LANGUENIVEAU'
Au fait c'est une double copie.
J'ai fait cette procédure:
Dim Db As DAO.Database Dim TableCand As Recordset Dim TableLang As Recordset Dim LANGUEDEFINITIVE As Integer, InfoLANGUEDEFINITIVE As Integer, IndiceLANGUEDEFINITIVE As Integer
Function SetLanguesConnues()
Set Db = CurrentDb Set TableCand = Db.OpenRecordset("SELECT IDCANDIDAT, [languematernelle], [maternelle], [1ère langue], [1parlé/écrit], [2ème langue], [2parlé/écrit], [3ème langue], [3parlé/écrit], [4ème langue], [4parlé/écrit], [5ème langue], [5parlé/écrit] FROM CANDIDATS WHERE IDCANDIDAT =" & Forms![TOUS CANDIDATS].IDCANDIDAT)
Set TableLang = Db.OpenRecordset("SELECT IDCANDIDAT, LANGUE, LANGUENIVEAU, LANGUE2, LANGUE2NIVEAU FROM LANGUESCONNUES ORDER BY IDCANDIDAT;")
If Not (TableCand.BOF And TableCand.EOF) Then TableLang.FindFirst ("IDCANDIDAT=" & TableCand!IDCANDIDAT) If TableLang.NoMatch Then For LANGUEdef = 1 To 6 GoSub AjouterLANGUEDEFINITIVE GoSub EcrireLANGUEDEFINITIVE Next LANGUEdef Else For LANGUEdef = 1 To 6 If TableLang.EOF Then GoSub AjouterLANGUEDEFINITIVE Else If TableLang!IDCANDIDAT <> TableCand!IDCANDIDAT Then GoSub AjouterLANGUEDEFINITIVE Else TableLang.Edit End If End If GoSub EcrireLANGUEDEFINITIVE
If Not TableLang.EOF Then TableLang.MoveNext
Next LANGUEdef End If End If TableCand.Close TableLang.Close Exit Function
EcrireLANGUEDEFINITIVE: For InfoLANGUEDEFINITIVE = 1 To 2 IndiceLANGUEDEFINITIVE = 2 * (LANGUEdef - 1) + InfoLANGUEDEFINITIVE TableLang.Fields.Item(InfoLANGUEDEFINITIVE) = TableCand.Fields.Item(IndiceLANGUEDEFINITIVE)
Next InfoLANGUEDEFINITIVE TableLang.Update Return End Function
Le problème c'est que la copie ne se fait que dans 'LANGUE', 'LANGUENIVEAU' et rien ne se copie dans 'LANGUE2', 'LANGUE2NIVEAU'.
Je n'arrive pas à trouver ou est mon erreur. Merci pour votre aide.
Luis
Bonjour Ilan,
Je te remercie pour ta solution, elle fonctionne parfaitement.
Si tu pouvais m'éclairer car là je fais sans comprendre.
Si par exemple la 2ème table avait
LANGUE, LANGUENIVEAU
LANGUE2, LANGUE2NIVEAU
LANGUE3, LANGUE3NIVEAU
LANGUE4, LANGUE4NIVEAU
Et que l'on veuille copier les données des champs de la première table dans
les champs de la 2ème, toujours sur le même principe.
Quelle serait la solution?
Tu n'es pas obligé de me répondre, mais ça m'aiderai peut-être à comprendre
le principe.
Bonsoir, je crois qu'il manque une boucle dans ta procédure
EcrireLangueDefinitive
Dim Langue As integer
EcrireLANGUEDEFINITIVE:
For Langue = 0 To 1
For InfoLANGUEDEFINITIVE = 1 To 2
IndiceLANGUEDEFINITIVE = 2 * (LANGUEdef - 1) + InfoLANGUEDEFINITIVE
TableLang.Fields.Item(InfoLANGUEDEFINITIVE + 2 * Langue) =
TableCand.Fields.ItemIndiceLANGUEDEFINITIVE)
Dans la première colonne on saisie la langue par exemple 'anglais' et dans
la 2ème le niveau de connaissances de cette même langue et ainsi de suite
pour les autres langues.
Il faut que je copie dans une autre table
composée de champs suivants
LANGUE, LANGUENIVEAU
LANGUE2, LANGUE2NIVEAU
Dans 'Langue2' et 'LANGUE2NIVEAU' ont doit trouver exactement la même chose
que dans 'Langue' et 'LANGUENIVEAU'
Au fait c'est une double copie.
J'ai fait cette procédure:
Dim Db As DAO.Database
Dim TableCand As Recordset
Dim TableLang As Recordset
Dim LANGUEDEFINITIVE As Integer, InfoLANGUEDEFINITIVE As Integer,
IndiceLANGUEDEFINITIVE As Integer
Function SetLanguesConnues()
Set Db = CurrentDb
Set TableCand = Db.OpenRecordset("SELECT IDCANDIDAT, [languematernelle],
[maternelle], [1ère langue], [1parlé/écrit], [2ème langue], [2parlé/écrit],
[3ème langue], [3parlé/écrit], [4ème langue], [4parlé/écrit], [5ème langue],
[5parlé/écrit] FROM CANDIDATS WHERE IDCANDIDAT =" & Forms![TOUS
CANDIDATS].IDCANDIDAT)
Set TableLang = Db.OpenRecordset("SELECT IDCANDIDAT, LANGUE, LANGUENIVEAU,
LANGUE2, LANGUE2NIVEAU FROM LANGUESCONNUES ORDER BY IDCANDIDAT;")
If Not (TableCand.BOF And TableCand.EOF) Then
TableLang.FindFirst ("IDCANDIDAT=" & TableCand!IDCANDIDAT)
If TableLang.NoMatch Then
For LANGUEdef = 1 To 6
GoSub AjouterLANGUEDEFINITIVE
GoSub EcrireLANGUEDEFINITIVE
Next LANGUEdef
Else
For LANGUEdef = 1 To 6
If TableLang.EOF Then
GoSub AjouterLANGUEDEFINITIVE
Else
If TableLang!IDCANDIDAT <> TableCand!IDCANDIDAT Then
GoSub AjouterLANGUEDEFINITIVE
Else
TableLang.Edit
End If
End If
GoSub EcrireLANGUEDEFINITIVE
If Not TableLang.EOF Then TableLang.MoveNext
Next LANGUEdef
End If
End If
TableCand.Close
TableLang.Close
Exit Function
Bonjour Ilan, Je te remercie pour ta solution, elle fonctionne parfaitement. Si tu pouvais m'éclairer car là je fais sans comprendre. Si par exemple la 2ème table avait LANGUE, LANGUENIVEAU LANGUE2, LANGUE2NIVEAU LANGUE3, LANGUE3NIVEAU LANGUE4, LANGUE4NIVEAU Et que l'on veuille copier les données des champs de la première table dans les champs de la 2ème, toujours sur le même principe. Quelle serait la solution? Tu n'es pas obligé de me répondre, mais ça m'aiderai peut-être à comprendre le principe.
Bonsoir, je crois qu'il manque une boucle dans ta procédure EcrireLangueDefinitive
Dim Langue As integer
EcrireLANGUEDEFINITIVE: For Langue = 0 To 1 For InfoLANGUEDEFINITIVE = 1 To 2 IndiceLANGUEDEFINITIVE = 2 * (LANGUEdef - 1) + InfoLANGUEDEFINITIVE TableLang.Fields.Item(InfoLANGUEDEFINITIVE + 2 * Langue) = TableCand.Fields.ItemIndiceLANGUEDEFINITIVE)
Dans la première colonne on saisie la langue par exemple 'anglais' et dans la 2ème le niveau de connaissances de cette même langue et ainsi de suite pour les autres langues.
Il faut que je copie dans une autre table composée de champs suivants
LANGUE, LANGUENIVEAU LANGUE2, LANGUE2NIVEAU
Dans 'Langue2' et 'LANGUE2NIVEAU' ont doit trouver exactement la même chose que dans 'Langue' et 'LANGUENIVEAU'
Au fait c'est une double copie.
J'ai fait cette procédure:
Dim Db As DAO.Database Dim TableCand As Recordset Dim TableLang As Recordset Dim LANGUEDEFINITIVE As Integer, InfoLANGUEDEFINITIVE As Integer, IndiceLANGUEDEFINITIVE As Integer
Function SetLanguesConnues()
Set Db = CurrentDb Set TableCand = Db.OpenRecordset("SELECT IDCANDIDAT, [languematernelle], [maternelle], [1ère langue], [1parlé/écrit], [2ème langue], [2parlé/écrit], [3ème langue], [3parlé/écrit], [4ème langue], [4parlé/écrit], [5ème langue], [5parlé/écrit] FROM CANDIDATS WHERE IDCANDIDAT =" & Forms![TOUS CANDIDATS].IDCANDIDAT)
Set TableLang = Db.OpenRecordset("SELECT IDCANDIDAT, LANGUE, LANGUENIVEAU, LANGUE2, LANGUE2NIVEAU FROM LANGUESCONNUES ORDER BY IDCANDIDAT;")
If Not (TableCand.BOF And TableCand.EOF) Then TableLang.FindFirst ("IDCANDIDAT=" & TableCand!IDCANDIDAT) If TableLang.NoMatch Then For LANGUEdef = 1 To 6 GoSub AjouterLANGUEDEFINITIVE GoSub EcrireLANGUEDEFINITIVE Next LANGUEdef Else For LANGUEdef = 1 To 6 If TableLang.EOF Then GoSub AjouterLANGUEDEFINITIVE Else If TableLang!IDCANDIDAT <> TableCand!IDCANDIDAT Then GoSub AjouterLANGUEDEFINITIVE Else TableLang.Edit End If End If GoSub EcrireLANGUEDEFINITIVE
If Not TableLang.EOF Then TableLang.MoveNext
Next LANGUEdef End If End If TableCand.Close TableLang.Close Exit Function