OVH Cloud OVH Cloud

Copie d'une table à l'autre

23 réponses
Avatar
Luis
Bonjour,
Dans une table j'ai des champs correspondants =E0 des=20
contacts, group=E9s dans un formulaire comme suit:
Contact1:
DEPARTEMENT1
POLITESSE1
RESPONSABLE1
FONCTION1
TELDIRECT1
MOBILE1
FAX1
e-mail1
Contact2
DEPARTEMENT2
POLITESSE2

etc et ainsi de suite pour tous les groupes de contacts
J'ai cr=E9=E9 une autre table pour regrouper tous les=20
contacts, mais j'ai deux probl=E8mes.
1: le regroupement se fait pour chaque contact sur 8 lignes
2: lorsque je delete un champ le renseignement reste dans=20
la deuxi=E8me table.
L'=E9criture d'une table sur l'autre je la fait comme =E7a:

Private Sub RESPONSABLE_LostFocus()

Dim Crit=E8re As String, MaBD As Database, MaTable As=20
Recordset
SendKeys "+{ENTER}"

NUMCLIENT =3D [NClient]
CAT1 =3D RESPONSABLE
Set MaBD =3D DBEngine.Workspaces(0).Databases(0)
Set MaTable =3D MaBD.OpenRecordset("CONTACTS_CLIENTS",=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!NClient
If TESTER =3D NUMCLIENT Then
CONTACT =3D MaTable!CONTACT
If CONTACT =3D CAT1 Then
trouve =3D 1
Exit Do
Else
trouve =3D 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If

Loop =20


If trouve =3D 0 Then
MaTable.AddNew
MaTable!NClient =3D NClient
MaTable!CONTACT =3D RESPONSABLE
MaTable.Update
MaTable.Close
Else
'matable.Close
End If

End Sub

Private Sub POLITESSE_LostFocus()
Dim Crit=E8re As String, MaBD As Database, MaTable As=20
Recordset
SendKeys "+{ENTER}"

NUMCLIENT =3D [NClient]
CAT2 =3D POLITESSE

Set MaBD =3D DBEngine.Workspaces(0).Databases(0)
Set MaTable =3D MaBD.OpenRecordset("CONTACTS_CLIENTS",=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!NClient
If TESTER =3D NUMCLIENT Then
Mme_Mlle_M =3D MaTable!Mme_Mlle_M
If Mme_Mlle_M =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!NClient =3D NClient
MaTable!Mme_Mlle_M =3D POLITESSE
MaTable.Update
MaTable.Close
Else
'matable.Close
End If

End Sub

et comme =E7a avec chaque champ

N=B0Contact
NCLIENT / NOM /POLITESSE
/FONCTION /DEPARTEMENT
/TELDIRECT
/ Mail/MOBILE1/FAX
13 / 3298 / Pierre Gros =09
=09
15 / 3298 / Monsieur =09
=09
28 / 3298 / Comptable =09
=09
29 / 3298 / Direction Financi=E8re =09
=09
37 / 3298 /0408197719 =09
=09
39 / 3298 /jg@namr.com =09
=09
44 / 3298 / 0696755432=09
=09
49 / 3298 / 0225678889=09
=09
D=E9sol=E9 pour la mise en page, mais il est dificile d'=E9crire=20
une table, j'esp=E8re que je me fais tout de m=EAme comprendre.

Que dois-je modifier pour que tous les renseignements=20
concernant un contact s'=E9crivent sur la m=EAme liqne et que=20
lorsque je delete l'information sur le formulaire l'info=20
s'efface dans la table?

J'ep=E8re avoir des infos, merci.
Luis

10 réponses

1 2 3
Avatar
Ilan
Bonjour Luis,

Le probleme est que tu fais un MaTable.AddNew partout.
Le AddNew cree un nouvel enregistrement (ici un nouveau contact) alors que
tu n'affectes qu'un seul champ a la fois.

si tu as tu deja une table existante tu peux ecrire directement d'une table
à l'autre
en une seule fois.
Quelque chose comme :

Dim Db as Database
Dim TABLE1,TABLE2 as recordset

Function SETContact ()
set db=currentdb
set TABLE1Û.openrecorset(nomanciennetable)
set TABLE2Û.openrecordset(nomnouvelletable)
TABLE1.MoveFirst
While NOT TABLE1.EOF
TABLE2.findfirst("NClient=" & TABLE1.Nclient)
If TABLE2.nomatch then
For i=1 to 3
TABLE2.AddNew
TABLE2!NCLient=TABLE1!NCLient
TABLE2!CONTACT=TABLE1.Fields("Contact" & i)
TABLE2!POlitesse=TABLE1.Fields("Politesse" & i)
....
....
TABLE2!Email=TABLE1.Fields("Email" & i)
TABLE2.UpDate
Next i
endif
TABLE1.MoveNext
Wend
TABLE2.Close
TABLE1.Close
End Func

il est preferable que TABLE2 soit vide avant d'operer.


Bonjour,
Dans une table j'ai des champs correspondants à des
contacts, groupés dans un formulaire comme suit:
Contact1:
DEPARTEMENT1
POLITESSE1
RESPONSABLE1
FONCTION1
TELDIRECT1
MOBILE1
FAX1
e-mail1
Contact2
DEPARTEMENT2
POLITESSE2

etc et ainsi de suite pour tous les groupes de contacts
J'ai créé une autre table pour regrouper tous les
contacts, mais j'ai deux problèmes.
1: le regroupement se fait pour chaque contact sur 8 lignes
2: lorsque je delete un champ le renseignement reste dans
la deuxième table.
L'écriture d'une table sur l'autre je la fait comme ça:

Private Sub RESPONSABLE_LostFocus()

Dim Critère As String, MaBD As Database, MaTable As
Recordset
SendKeys "+{ENTER}"

NUMCLIENT = [NClient]
CAT1 = RESPONSABLE
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("CONTACTS_CLIENTS",
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!NClient
If TESTER = NUMCLIENT Then
CONTACT = MaTable!CONTACT
If CONTACT = CAT1 Then
trouve = 1
Exit Do
Else
trouve = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If

Loop


If trouve = 0 Then
MaTable.AddNew
MaTable!NClient = NClient
MaTable!CONTACT = RESPONSABLE
MaTable.Update
MaTable.Close
Else
'matable.Close
End If

End Sub

Private Sub POLITESSE_LostFocus()
Dim Critère As String, MaBD As Database, MaTable As
Recordset
SendKeys "+{ENTER}"

NUMCLIENT = [NClient]
CAT2 = POLITESSE

Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("CONTACTS_CLIENTS",
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!NClient
If TESTER = NUMCLIENT Then
Mme_Mlle_M = MaTable!Mme_Mlle_M
If Mme_Mlle_M = 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!NClient = NClient
MaTable!Mme_Mlle_M = POLITESSE
MaTable.Update
MaTable.Close
Else
'matable.Close
End If

End Sub

et comme ça avec chaque champ

N°Contact
NCLIENT / NOM /POLITESSE
/FONCTION /DEPARTEMENT
/TELDIRECT
/ Mail/MOBILE1/FAX
13 / 3298 / Pierre Gros

15 / 3298 / Monsieur

28 / 3298 / Comptable

29 / 3298 / Direction Financière

37 / 3298 /0408197719

39 / 3298 /

44 / 3298 / 0696755432

49 / 3298 / 0225678889

Désolé pour la mise en page, mais il est dificile d'écrire
une table, j'espère que je me fais tout de même comprendre.

Que dois-je modifier pour que tous les renseignements
concernant un contact s'écrivent sur la même liqne et que
lorsque je delete l'information sur le formulaire l'info
s'efface dans la table?

J'epère avoir des infos, merci.
Luis




Avatar
Ilan
Pardon, j'oubliais qu'il faut prevoir que les Clients n'ont pas tous 3 Contacts
Il faut alors remplacer la boucle For ... Next par Do While ... Loop comme :

i=1
Do While not(isnull(TABLE1.Fields("CONTACT" & i")) OR TABLE1.Fields

("CONTACT" & i)="")
if i>3 then Exit Do
TABLE2.AddNew
TABLE2!NCLient=TABLE1!NCLient
TABLE2!CONTACT=TABLE1.Fields("Contact" & i)
TABLE2!POlitesse=TABLE1.Fields("Politesse" & i)
....
....
TABLE2!Email=TABLE1.Fields("Email" & i)
TABLE2.UpDate
i=i+1
Loop
Avatar
Luis
Bonjour Ilan,
Je te remercie pour ton tuyaux, dans:
Do While not (isnull(TABLE1.Fields("CONTACT" & i"))OR
TABLE1.Fields("CONTACT" & i)="")
J'ai une erreur de compilation
Luis
-----Message d'origine-----
Pardon, j'oubliais qu'il faut prevoir que les Clients
n'ont pas tous 3 Contacts

Il faut alors remplacer la boucle For ... Next par Do
While ... Loop comme :


i=1
Do While not(isnull(TABLE1.Fields("CONTACT" & i")) OR
TABLE1.Fields



("CONTACT" & i)="")
if i>3 then Exit Do
TABLE2.AddNew
TABLE2!NCLient=TABLE1!NCLient
TABLE2!CONTACT=TABLE1.Fields("Contact" & i)
TABLE2!POlitesse=TABLE1.Fields("Politesse" & i)
....
....
TABLE2!Email=TABLE1.Fields("Email" & i)
TABLE2.UpDate
i=i+1
Loop



.



Avatar
Ilan
Bonjour Luis,

je pense qu'il s'agit du guillement en trop derriere le premier i.



Bonjour Ilan,
Je te remercie pour ton tuyaux, dans:
Do While not (isnull(TABLE1.Fields("CONTACT" & i"))OR
TABLE1.Fields("CONTACT" & i)="")
J'ai une erreur de compilation
Luis
-----Message d'origine-----
Pardon, j'oubliais qu'il faut prevoir que les Clients
n'ont pas tous 3 Contacts

Il faut alors remplacer la boucle For ... Next par Do
While ... Loop comme :


i=1
Do While not(isnull(TABLE1.Fields("CONTACT" & i")) OR
TABLE1.Fields



("CONTACT" & i)="")
if i>3 then Exit Do
TABLE2.AddNew
TABLE2!NCLient=TABLE1!NCLient
TABLE2!CONTACT=TABLE1.Fields("Contact" & i)
TABLE2!POlitesse=TABLE1.Fields("Politesse" & i)
....
....
TABLE2!Email=TABLE1.Fields("Email" & i)
TABLE2.UpDate
i=i+1
Loop



.






Avatar
Bonjour,
Désolé je n'avais pas remarqué qu'il y avait un " de trop
dans ("CONTACT" & i"))
Merci, je vais essayer et je te dis.
Luis
-----Message d'origine-----
Bonjour Ilan,
Je te remercie pour ton tuyaux, dans:
Do While not (isnull(TABLE1.Fields("CONTACT" & i"))OR
TABLE1.Fields("CONTACT" & i)="")
J'ai une erreur de compilation
Luis
-----Message d'origine-----
Pardon, j'oubliais qu'il faut prevoir que les Clients
n'ont pas tous 3 Contacts

Il faut alors remplacer la boucle For ... Next par Do
While ... Loop comme :


i=1
Do While not(isnull(TABLE1.Fields("CONTACT" & i")) OR
TABLE1.Fields





("CONTACT" & i)="")
if i>3 then Exit Do
TABLE2.AddNew
TABLE2!NCLient=TABLE1!NCLient
TABLE2!CONTACT=TABLE1.Fields("Contact" & i)
TABLE2!POlitesse=TABLE1.Fields("Politesse" & i)
....
....
TABLE2!Email=TABLE1.Fields("Email" & i)
TABLE2.UpDate
i=i+1
Loop



.

.





Avatar
lUIS
Bonjour Ilan,
Je viens d'essayer mais j'ai une erreur bizarre:
Erreur d'exécution '3078'
Le moteur de base de donées Microsoft Jet ne peut pas
trouver la table ou la requête source.

et j'ai cette ligne en surbrillance

Set TABLE1 = Db.OpenRecordset(Clients)
Pourtant la table 'Clients' existe et elle est bien
orthographiée.
Je ne comprend pas.
Luis

-----Message d'origine-----
Bonjour Luis,

je pense qu'il s'agit du guillement en trop derriere le
premier i.




Bonjour Ilan,
Je te remercie pour ton tuyaux, dans:
Do While not (isnull(TABLE1.Fields("CONTACT" & i"))OR
TABLE1.Fields("CONTACT" & i)="")
J'ai une erreur de compilation
Luis
-----Message d'origine-----
Pardon, j'oubliais qu'il faut prevoir que les Clients
n'ont pas tous 3 Contacts

Il faut alors remplacer la boucle For ... Next par Do
While ... Loop comme :


i=1
Do While not(isnull(TABLE1.Fields("CONTACT" & i")) OR
TABLE1.Fields




("CONTACT" & i)="")
if i>3 then Exit Do
TABLE2.AddNew
TABLE2!NCLient=TABLE1!NCLient
TABLE2!CONTACT=TABLE1.Fields("Contact" & i)
TABLE2!POlitesse=TABLE1.Fields("Politesse" & i)
....
....
TABLE2!Email=TABLE1.Fields("Email" & i)
TABLE2.UpDate
i=i+1
Loop



.



.






Avatar
Pierre CFI [mvp]
bonjour
avec des "
Set TABLE1 = Db.OpenRecordset("Clients")

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"lUIS" a écrit dans le message de news:3f9801c4ab88$036f8a40$
Bonjour Ilan,
Je viens d'essayer mais j'ai une erreur bizarre:
Erreur d'exécution '3078'
Le moteur de base de donées Microsoft Jet ne peut pas
trouver la table ou la requête source.

et j'ai cette ligne en surbrillance

Set TABLE1 = Db.OpenRecordset(Clients)
Pourtant la table 'Clients' existe et elle est bien
orthographiée.
Je ne comprend pas.
Luis

-----Message d'origine-----
Bonjour Luis,

je pense qu'il s'agit du guillement en trop derriere le
premier i.




Bonjour Ilan,
Je te remercie pour ton tuyaux, dans:
Do While not (isnull(TABLE1.Fields("CONTACT" & i"))OR
TABLE1.Fields("CONTACT" & i)="")
J'ai une erreur de compilation
Luis
-----Message d'origine-----
Pardon, j'oubliais qu'il faut prevoir que les Clients
n'ont pas tous 3 Contacts

Il faut alors remplacer la boucle For ... Next par Do
While ... Loop comme :


i=1
Do While not(isnull(TABLE1.Fields("CONTACT" & i")) OR
TABLE1.Fields




("CONTACT" & i)="")
if i>3 then Exit Do
TABLE2.AddNew
TABLE2!NCLient=TABLE1!NCLient
TABLE2!CONTACT=TABLE1.Fields("Contact" & i)
TABLE2!POlitesse=TABLE1.Fields("Politesse" & i)
....
....
TABLE2!Email=TABLE1.Fields("Email" & i)
TABLE2.UpDate
i=i+1
Loop



.



.






Avatar
Luis
Bonjour Pierre CFI,
Merci pour les "
Maintenant j'ai une autre erreur:
Erreur d'exécution '3265'
Elément non trouvé dans la collection.
Avec cette ligne en surbrillance
Do While Not (IsNull(TABLE1.Fields("RESPONSABLE" & i)) Or
TABLE1.Fields("RESPONSABLE" & i) = "")
Dès que je sort de ce que je connais, je suis perdu.
Luis
-----Message d'origine-----
bonjour
avec des "
Set TABLE1 = Db.OpenRecordset("Clients")

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"lUIS" a écrit dans
le message de news:3f9801c4ab88$036f8a40

$
Bonjour Ilan,
Je viens d'essayer mais j'ai une erreur bizarre:
Erreur d'exécution '3078'
Le moteur de base de donées Microsoft Jet ne peut pas
trouver la table ou la requête source.

et j'ai cette ligne en surbrillance

Set TABLE1 = Db.OpenRecordset(Clients)
Pourtant la table 'Clients' existe et elle est bien
orthographiée.
Je ne comprend pas.
Luis

-----Message d'origine-----
Bonjour Luis,

je pense qu'il s'agit du guillement en trop derriere le
premier i.




Bonjour Ilan,
Je te remercie pour ton tuyaux, dans:
Do While not (isnull(TABLE1.Fields("CONTACT" & i"))OR
TABLE1.Fields("CONTACT" & i)="")
J'ai une erreur de compilation
Luis
-----Message d'origine-----
Pardon, j'oubliais qu'il faut prevoir que les Clients
n'ont pas tous 3 Contacts

Il faut alors remplacer la boucle For ... Next par Do
While ... Loop comme :


i=1
Do While not(isnull(TABLE1.Fields("CONTACT" & i")) OR
TABLE1.Fields




("CONTACT" & i)="")
if i>3 then Exit Do
TABLE2.AddNew
TABLE2!NCLient=TABLE1!NCLient
TABLE2!CONTACT=TABLE1.Fields("Contact" & i)
TABLE2!POlitesse=TABLE1.Fields("Politesse" & i)
....
....
TABLE2!Email=TABLE1.Fields("Email" & i)
TABLE2.UpDate
i=i+1
Loop



.



.





.






Avatar
Ilan
Ok Luis,

Pour eviter toute erreur de compilation tu vas devoir ecrire plus de ligne
de code


While Not TABLE1.EOF
TABLE2.FindFirst ("Nclient=" & TABLE1!nclient)
If TABLE1.NoMatch Then
If Not (IsNull(TABLE1!contact1) Or TABLE1!contact1 = "") Then
TABLE2.AddNew
TABLE2!nclient = TABLE1!nclient
TABLE2!Contact = TABLE1!contact1
...

TABLE2.Update
End If
If Not (IsNull(TABLE1!contact2) Or TABLE1!contact2 = "") Then
TABLE2.AddNew
TABLE2!nclient = TABLE1!nclient
TABLE2!Contact = TABLE1!contact2
...
TABLE2.Update
End If
If Not (IsNull(TABLE1!contact3) Or TABLE1!contact3 = "") Then
TABLE2.AddNew
TABLE2!nclient = TABLE1!nclient
TABLE2!Contact = TABLE1!contact2
....

TABLE2.Update
End If
End If
TABLE1.MoveNext
Wend
TABLE1.Close
TABLE2.Close


Bonjour Pierre CFI,
Merci pour les "
Maintenant j'ai une autre erreur:
Erreur d'exécution '3265'
Elément non trouvé dans la collection.
Avec cette ligne en surbrillance
Do While Not (IsNull(TABLE1.Fields("RESPONSABLE" & i)) Or
TABLE1.Fields("RESPONSABLE" & i) = "")
Dès que je sort de ce que je connais, je suis perdu.
Luis
-----Message d'origine-----
bonjour
avec des "
Set TABLE1 = Db.OpenRecordset("Clients")

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"lUIS" a écrit dans
le message de news:3f9801c4ab88$036f8a40

$
Bonjour Ilan,
Je viens d'essayer mais j'ai une erreur bizarre:
Erreur d'exécution '3078'
Le moteur de base de donées Microsoft Jet ne peut pas
trouver la table ou la requête source.

et j'ai cette ligne en surbrillance

Set TABLE1 = Db.OpenRecordset(Clients)
Pourtant la table 'Clients' existe et elle est bien
orthographiée.
Je ne comprend pas.
Luis

-----Message d'origine-----
Bonjour Luis,

je pense qu'il s'agit du guillement en trop derriere le
premier i.




Bonjour Ilan,
Je te remercie pour ton tuyaux, dans:
Do While not (isnull(TABLE1.Fields("CONTACT" & i"))OR
TABLE1.Fields("CONTACT" & i)="")
J'ai une erreur de compilation
Luis
-----Message d'origine-----
Pardon, j'oubliais qu'il faut prevoir que les Clients
n'ont pas tous 3 Contacts

Il faut alors remplacer la boucle For ... Next par Do
While ... Loop comme :


i=1
Do While not(isnull(TABLE1.Fields("CONTACT" & i")) OR
TABLE1.Fields




("CONTACT" & i)="")
if i>3 then Exit Do
TABLE2.AddNew
TABLE2!NCLient=TABLE1!NCLient
TABLE2!CONTACT=TABLE1.Fields("Contact" & i)
TABLE2!POlitesse=TABLE1.Fields("Politesse" & i)
....
....
TABLE2!Email=TABLE1.Fields("Email" & i)
TABLE2.UpDate
i=i+1
Loop



.



.





.









Avatar
Luis
Re-bonjour,

Voilà j'ai fini d'écrire ça donne ce qui suit, mais rien
ne va s'inscrire dans la table2:

Dim Db As Database
Dim TABLE1, TABLE2 As Recordset

Set Db = CurrentDb
Set TABLE1 = Db.OpenRecordset("Clients")
Set TABLE2 = Db.OpenRecordset("CONTACTS_CLIENTS")
TABLE1.MoveFirst
While Not TABLE1.EOF
TABLE2.FindFirst ("Nclient=" & TABLE1!NClient)
If TABLE1.NoMatch Then
If Not (IsNull(TABLE1!RESPONSABLE) Or TABLE1!
RESPONSABLE = "") Then

TABLE2.AddNew
TABLE2!NClient = TABLE1!NClient
TABLE2!CONTACT = TABLE1!RESPONSABLE
TABLE2!Mme_Mlle_M = TABLE1!POLITESSE
TABLE2!DEPARTEMENT = TABLE1!DEPARTEMENT
TABLE2!TELDIRECT = TABLE1!TELDIRECT1
TABLE2!NATELDIRECT = TABLE1!NATEL
TABLE2!FAXDIRECT = TABLE1!FAX1
TABLE2!MAILDIRECT = TABLE1![e-mail1]
TABLE2!FONCTION = TABLE1!FONCTION
TABLE2.Update

End If
If Not (IsNull(TABLE1!RESPONSABLE2) Or TABLE1!
RESPONSABLE2 = "") Then
TABLE2.AddNew
TABLE2!NClient = TABLE1!NClient
TABLE2!CONTACT = TABLE1!RESPONSABLE2
TABLE2!Mme_Mlle_M = TABLE1!POLITESSE2
TABLE2!DEPARTEMENT = TABLE1!DEPARTEMENT2
TABLE2!TELDIRECT = TABLE1!TELDIRECT2
TABLE2!NATELDIRECT = TABLE1!NATEL2
TABLE2!FAXDIRECT = TABLE1!FAX2
TABLE2!MAILDIRECT = TABLE1![e-mail2]
TABLE2!FONCTION = TABLE1!FONCTION2

TABLE2.Update
End If
If Not (IsNull(TABLE1!RESPONSABLE3) Or TABLE1!
RESPONSABLE3 = "") Then
TABLE2.AddNew
TABLE2!NClient = TABLE1!NClient
TABLE2!CONTACT = TABLE1!RESPONSABLE3
TABLE2!Mme_Mlle_M = TABLE1!POLITESSE3
TABLE2!DEPARTEMENT = TABLE1!DEPARTEMENT3
TABLE2!TELDIRECT = TABLE1!TELEDIRECT3
TABLE2!NATELDIRECT = TABLE1!NATEL3
TABLE2!FAXDIRECT = TABLE1!FAX3
TABLE2!MAILDIRECT = TABLE1![e-mail3]
TABLE2!FONCTION = TABLE1!FONCTION3

TABLE2.Update
End If
End If
TABLE1.MoveNext
Wend
TABLE2.Close
TABLE1.Close


-----Message d'origine-----
Ok Luis,

Pour eviter toute erreur de compilation tu vas devoir
ecrire plus de ligne

de code


While Not TABLE1.EOF
TABLE2.FindFirst ("Nclient=" & TABLE1!nclient)
If TABLE1.NoMatch Then
If Not (IsNull(TABLE1!contact1) Or TABLE1!
contact1 = "") Then

TABLE2.AddNew
TABLE2!nclient = TABLE1!nclient
TABLE2!Contact = TABLE1!contact1
...

TABLE2.Update
End If
If Not (IsNull(TABLE1!contact2) Or TABLE1!
contact2 = "") Then

TABLE2.AddNew
TABLE2!nclient = TABLE1!nclient
TABLE2!Contact = TABLE1!contact2
...
TABLE2.Update
End If
If Not (IsNull(TABLE1!contact3) Or TABLE1!
contact3 = "") Then

TABLE2.AddNew
TABLE2!nclient = TABLE1!nclient
TABLE2!Contact = TABLE1!contact2
....

TABLE2.Update
End If
End If
TABLE1.MoveNext
Wend
TABLE1.Close
TABLE2.Close


Bonjour Pierre CFI,
Merci pour les "
Maintenant j'ai une autre erreur:
Erreur d'exécution '3265'
Elément non trouvé dans la collection.
Avec cette ligne en surbrillance
Do While Not (IsNull(TABLE1.Fields("RESPONSABLE" & i))
Or


TABLE1.Fields("RESPONSABLE" & i) = "")
Dès que je sort de ce que je connais, je suis perdu.
Luis
-----Message d'origine-----
bonjour
avec des "
Set TABLE1 = Db.OpenRecordset("Clients")

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"lUIS" a écrit
dans



le message de news:3f9801c4ab88$036f8a40
$
Bonjour Ilan,
Je viens d'essayer mais j'ai une erreur bizarre:
Erreur d'exécution '3078'
Le moteur de base de donées Microsoft Jet ne peut pas
trouver la table ou la requête source.

et j'ai cette ligne en surbrillance

Set TABLE1 = Db.OpenRecordset(Clients)
Pourtant la table 'Clients' existe et elle est bien
orthographiée.
Je ne comprend pas.
Luis

-----Message d'origine-----
Bonjour Luis,

je pense qu'il s'agit du guillement en trop derriere
le




premier i.



Bonjour Ilan,
Je te remercie pour ton tuyaux, dans:
Do While not (isnull(TABLE1.Fields("CONTACT" & i"))
OR





TABLE1.Fields("CONTACT" & i)="")
J'ai une erreur de compilation
Luis
-----Message d'origine-----
Pardon, j'oubliais qu'il faut prevoir que les
Clients






n'ont pas tous 3 Contacts
Il faut alors remplacer la boucle For ... Next par
Do






While ... Loop comme :

i=1
Do While not(isnull(TABLE1.Fields("CONTACT" & i"))
OR






TABLE1.Fields



("CONTACT" & i)="")
if i>3 then Exit Do
TABLE2.AddNew
TABLE2!NCLient=TABLE1!NCLient
TABLE2!CONTACT=TABLE1.Fields("Contact" & i)
TABLE2!POlitesse=TABLE1.Fields("Politesse" & i)
....
....
TABLE2!Email=TABLE1.Fields("Email" & i)
TABLE2.UpDate
i=i+1
Loop



.



.





.



.









1 2 3