OVH Cloud OVH Cloud

Copier d'une table à l'autre

23 réponses
Avatar
Luis
Bonjour,
Je reviens sur un probl=E8me que Ilan m'a tr=E8s gentillement=20
aid=E9 =E0 r=E9soudre.
Mais j'ai toujours un probl=E8me.
J'ai un formulaire 'Clients' dans lequel il y a 24 champs=20
pour noter les contacts qui sont [RESPONSABLE];=20
[RESPONSABLE1]; [RESPONSABLE2]; [POLITESSE];=20
[POLITESSE1];...etc

La saisi dans ces champs se passe tr=E8s bien.
Je veux selon le cas copier toutes ces donn=E9es 'Contacts'=20
d'un client dans une autre table=20
appel=E9e 'Contacts_Clients' en utilisant la fonction=20
suivante:
Dim Db As Database
Dim TABLE1, TABLE2 As Recordset
Dim CONTACT, INFOCONTACT, INDICEINFO As Integer

Function SetContact()
Set Db =3D CurrentDb

Chaine =3D "SELECT NClient, RESPONSABLE, RESPONSABLE2,=20
RESPONSABLE3, NATEL, fonction, POLITESSE, POLITESSE2,=20
POLITESSE3, FONCTION2, FONCTION3, TELDIRECT1, TELDIRECT2,=20
TELEDIRECT3, e-mail1, e-mail2, e-mail3, NATEL2, NATEL3,=20
FAX1, FAX2, FAX3, DEPARTEMENT1, DEPARTEMENT2, DEPARTEMENT3=20
FROM Clients ORDER BY NClient"
Set TABLE1 =3D Db.OpenRecordset(Chaine)
Set TABLE2 =3D Db.OpenRecordset("SELECT * FROM=20
Contacts_Clients ORDER BY NClient,")

If Not (TABLE1.BOF Or TABLE1.EOF) Then

TABLE2.FindFirst ("NClient=3D" & TABLE1!NClient)
If TABLE2.NoMatch Then
For CONTACT =3D 1 To 3
GoSub AjouterContact
GoSub EcrireInfo
Next CONTACT
Else
For CONTACT =3D 1 To 3
If (TABLE2.EOF Or TABLE2!NClient <> TABLE1!NClient) Then
GoSub AjouterContact
Else
TABLE2.Edit
Contact,Politesse,....,Email
End If
GoSub EcrireInfo
TABLE2.MoveNext
Next CONTACT
End If
End If
TABLE1.Close
TABLE2.Close
Exit Function

AjouterContact:
TABLE2.AddNew
TABLE2!NClient =3D TABLE1!NClient
Return

EcrireInfo:
For INFOCONTACT =3D 1 To 8
INDICEINFO =3D 8 * (CONTACT - 1) + INFOCONTACT
TABLE2.Fields.Item(INFOCONTACT + 1) =3D=20
TABLE1.Fields.Item(INDICEINFO)
Next INFOCONTACT
TABLE2.Update
Return
End Function

Malheuresement j'ai: Erreur d'ex=E9cution '3061'
Trop peu de param=E8tres. 4 attendu

Et dans le code:
Set TABLE1 =3D Db.OpenRecordset(Chaine) en surbrillance.

Si vous pouvez continuer =E0 m'aider.
Luis

10 réponses

1 2 3
Avatar
Luis
Bonjour Ilan,
C'est justement la que se pose le problème car:
J'ai 27 champs (3x9)dans la table1 et 9 champs dans la
table2.
Donc pourquoi cette erreur?
Luis
-----Message d'origine-----
Luis, je pense qu'il est important que tu comprennes le
code.


L'erreur t'indique que :
soit INFOCONTACT+1 est superieur au nombre de champs
dans TABLE2

soit INDICEINFO est superieur au nombre de champ dans
TABLE1






Re-bonjour,
J'ai remplacé les 5 lignes par les 9 nouvelles et j'ai
encore une erreur:
Elément non trouvé dans la collection.
et en surbrillance:
TABLE2.Fields.Item(INFOCONTACT + 1) = TABLE1.Fields.Item
(INDICEINFO)

Désolé en général je fais du copier/coller, je ne
sais pas


comment j'ai fais cette erreur.
Luis
-----Message d'origine-----
si ca ne marchera pas chez toi Remplace les 5 lignes
suivantes


If (TABLE2.EOF or TABLE2!NClient<>TABLE1!NClient) then
gosub AjouterContact
else
TABLE2.Edit
endif

par ces 9 lignes

If TABLE2.EOF Then
Gosub AjouterContact
else
If TABLE2!NClient<>TABLE1!NClient then
Gosub AjouterContact
else
TABLE2.Edit
endif
endif

.



.






Avatar
Ilan
M'ouais
TABLE1 :
3 contacts qui ont chacun 8 champs + 1 Numero pour le client
3*8 + 1 = 25 champs (quels sont les champs supplementaires ?)
TABLE2:
1 Numero Contact + 1 Numero Client + 8 champs = 10 champs

Si tu n'as pas de numero de contact dans TABLE2 remplace la ligne

TABLE2.Fields.item(INFOCONTACT + 1) par
TABLE.Fields.item(INFOCONTACT)









Bonjour Ilan,
C'est justement la que se pose le problème car:
J'ai 27 champs (3x9)dans la table1 et 9 champs dans la
table2.
Donc pourquoi cette erreur?
Luis
-----Message d'origine-----
Luis, je pense qu'il est important que tu comprennes le
code.


L'erreur t'indique que :
soit INFOCONTACT+1 est superieur au nombre de champs
dans TABLE2

soit INDICEINFO est superieur au nombre de champ dans
TABLE1






Re-bonjour,
J'ai remplacé les 5 lignes par les 9 nouvelles et j'ai
encore une erreur:
Elément non trouvé dans la collection.
et en surbrillance:
TABLE2.Fields.Item(INFOCONTACT + 1) = TABLE1.Fields.Item
(INDICEINFO)

Désolé en général je fais du copier/coller, je ne
sais pas


comment j'ai fais cette erreur.
Luis
-----Message d'origine-----
si ca ne marchera pas chez toi Remplace les 5 lignes
suivantes


If (TABLE2.EOF or TABLE2!NClient<>TABLE1!NClient) then
gosub AjouterContact
else
TABLE2.Edit
endif

par ces 9 lignes

If TABLE2.EOF Then
Gosub AjouterContact
else
If TABLE2!NClient<>TABLE1!NClient then
Gosub AjouterContact
else
TABLE2.Edit
endif
endif

.



.









Avatar
Luis
Bonjour Ilan,
Bien sur j'ai pris tous les contacts1 de la table1 + le
NClient et j'ai multiplié par 3 ce qui donne 27.
J'ai remplacé TABLE2.Fields.item(INFOCONTACT + 1) par
TABLE2.Fields.item(INFOCONTACT) 'car je supose que dans
l'expression TABLE.Fields.item(INFOCONTACT)que tu me
donnes TABLE=TABLE2.
Il y a encore une erreur:
Erreur d'exécution '3021'
Aucun enregistrement en cours.
Et en surbrillance:
GoSub EcrireInfo
TABLE2.MoveNext

Luis
-----Message d'origine-----
M'ouais
TABLE1 :
3 contacts qui ont chacun 8 champs + 1 Numero pour le
client

3*8 + 1 = 25 champs (quels sont les champs
supplementaires ?)

TABLE2:
1 Numero Contact + 1 Numero Client + 8 champs = 10
champs


Si tu n'as pas de numero de contact dans TABLE2 remplace
la ligne


TABLE2.Fields.item(INFOCONTACT + 1) par
TABLE.Fields.item(INFOCONTACT)









Bonjour Ilan,
C'est justement la que se pose le problème car:
J'ai 27 champs (3x9)dans la table1 et 9 champs dans la
table2.
Donc pourquoi cette erreur?
Luis
-----Message d'origine-----
Luis, je pense qu'il est important que tu comprennes
le



code.

L'erreur t'indique que :
soit INFOCONTACT+1 est superieur au nombre de champs
dans TABLE2

soit INDICEINFO est superieur au nombre de champ dans
TABLE1






Re-bonjour,
J'ai remplacÃf© les 5 lignes par les 9 nouvelles et
j'ai




encore une erreur:
ElÃf©ment non trouvÃf© dans la collection.
et en surbrillance:
TABLE2.Fields.Item(INFOCONTACT + 1) =
TABLE1.Fields.Item




(INDICEINFO)

DÃf©solÃf© en gÃf©nÃf©ral je fais du
copier/coller, je ne




sais pas
comment j'ai fais cette erreur.
Luis
-----Message d'origine-----
si ca ne marchera pas chez toi Remplace les 5
lignes





suivantes

If (TABLE2.EOF or TABLE2!NClient<>TABLE1!NClient)
then





gosub AjouterContact
else
TABLE2.Edit
endif

par ces 9 lignes

If TABLE2.EOF Then
Gosub AjouterContact
else
If TABLE2!NClient<>TABLE1!NClient then
Gosub AjouterContact
else
TABLE2.Edit
endif
endif

.



.




.








Avatar
Luis
Oui, là j'ai dit une con..., car j'ai NCONTACT donc
TABLE2.Fields.item(INFOCONTACT + 1)
Mis j'ai toujours la même erreur.
Luis
-----Message d'origine-----
Bonjour Ilan,
Bien sur j'ai pris tous les contacts1 de la table1 + le
NClient et j'ai multiplié par 3 ce qui donne 27.
J'ai remplacé TABLE2.Fields.item(INFOCONTACT + 1) par
TABLE2.Fields.item(INFOCONTACT) 'car je supose que dans
l'expression TABLE.Fields.item(INFOCONTACT)que tu me
donnes TABLE=TABLE2.
Il y a encore une erreur:
Erreur d'exécution '3021'
Aucun enregistrement en cours.
Et en surbrillance:
GoSub EcrireInfo
TABLE2.MoveNext

Luis
-----Message d'origine-----
M'ouais
TABLE1 :
3 contacts qui ont chacun 8 champs + 1 Numero pour le
client

3*8 + 1 = 25 champs (quels sont les champs
supplementaires ?)

TABLE2:
1 Numero Contact + 1 Numero Client + 8 champs = 10
champs


Si tu n'as pas de numero de contact dans TABLE2 remplace
la ligne


TABLE2.Fields.item(INFOCONTACT + 1) par
TABLE.Fields.item(INFOCONTACT)









Bonjour Ilan,
C'est justement la que se pose le problème car:
J'ai 27 champs (3x9)dans la table1 et 9 champs dans la
table2.
Donc pourquoi cette erreur?
Luis
-----Message d'origine-----
Luis, je pense qu'il est important que tu comprennes
le



code.

L'erreur t'indique que :
soit INFOCONTACT+1 est superieur au nombre de champs
dans TABLE2

soit INDICEINFO est superieur au nombre de champ
dans




TABLE1





Re-bonjour,
J'ai remplacÃf© les 5 lignes par les 9 nouvelles
et





j'ai
encore une erreur:
ElÃf©ment non trouvÃf© dans la collection.
et en surbrillance:
TABLE2.Fields.Item(INFOCONTACT + 1) =
TABLE1.Fields.Item




(INDICEINFO)

DÃf©solÃf© en gÃf©nÃf©ral je fais du
copier/coller, je ne




sais pas
comment j'ai fais cette erreur.
Luis
-----Message d'origine-----
si ca ne marchera pas chez toi Remplace les 5
lignes





suivantes

If (TABLE2.EOF or TABLE2!NClient<>TABLE1!NClient)
then





gosub AjouterContact
else
TABLE2.Edit
endif

par ces 9 lignes

If TABLE2.EOF Then
Gosub AjouterContact
else
If TABLE2!NClient<>TABLE1!NClient then
Gosub AjouterContact
else
TABLE2.Edit
endif
endif

.



.




.


.









Avatar
Ilan
Essaie en remplacant la ligne
TABLE2.MoveNext
par
If Not TABLE2.EOF then TABLE2.MoveNext




Oui, là j'ai dit une con..., car j'ai NCONTACT donc
TABLE2.Fields.item(INFOCONTACT + 1)
Mis j'ai toujours la même erreur.
Luis
-----Message d'origine-----
Bonjour Ilan,
Bien sur j'ai pris tous les contacts1 de la table1 + le
NClient et j'ai multiplié par 3 ce qui donne 27.
J'ai remplacé TABLE2.Fields.item(INFOCONTACT + 1) par
TABLE2.Fields.item(INFOCONTACT) 'car je supose que dans
l'expression TABLE.Fields.item(INFOCONTACT)que tu me
donnes TABLE=TABLE2.
Il y a encore une erreur:
Erreur d'exécution '3021'
Aucun enregistrement en cours.
Et en surbrillance:
GoSub EcrireInfo
TABLE2.MoveNext

Luis
-----Message d'origine-----
M'ouais
TABLE1 :
3 contacts qui ont chacun 8 champs + 1 Numero pour le
client

3*8 + 1 = 25 champs (quels sont les champs
supplementaires ?)

TABLE2:
1 Numero Contact + 1 Numero Client + 8 champs = 10
champs


Si tu n'as pas de numero de contact dans TABLE2 remplace
la ligne


TABLE2.Fields.item(INFOCONTACT + 1) par
TABLE.Fields.item(INFOCONTACT)









Bonjour Ilan,
C'est justement la que se pose le problème car:
J'ai 27 champs (3x9)dans la table1 et 9 champs dans la
table2.
Donc pourquoi cette erreur?
Luis
-----Message d'origine-----
Luis, je pense qu'il est important que tu comprennes
le



code.

L'erreur t'indique que :
soit INFOCONTACT+1 est superieur au nombre de champs
dans TABLE2

soit INDICEINFO est superieur au nombre de champ
dans




TABLE1





Re-bonjour,
J'ai remplacÃf© les 5 lignes par les 9 nouvelles
et





j'ai
encore une erreur:
ElÃf©ment non trouvÃf© dans la collection.
et en surbrillance:
TABLE2.Fields.Item(INFOCONTACT + 1) =
TABLE1.Fields.Item




(INDICEINFO)

DÃf©solÃf© en gÃf©nÃf©ral je fais du
copier/coller, je ne




sais pas
comment j'ai fais cette erreur.
Luis
-----Message d'origine-----
si ca ne marchera pas chez toi Remplace les 5
lignes





suivantes

If (TABLE2.EOF or TABLE2!NClient<>TABLE1!NClient)
then





gosub AjouterContact
else
TABLE2.Edit
endif

par ces 9 lignes

If TABLE2.EOF Then
Gosub AjouterContact
else
If TABLE2!NClient<>TABLE1!NClient then
Gosub AjouterContact
else
TABLE2.Edit
endif
endif

.



.




.


.












Avatar
Luis
Bonjour Ilan,
Même, j'ai toujours
Erreur d'exécution '3265'
Elément introuvable dans cette collection.

D'autre part lorsque je passe la sourie sur:
If Not TABLE2.EOF Then TABLE2.MoveNext

En commentaries j'ai: TABLE2.EOF= FAUX

Je ne sais pas si ça peut t'aider
Luis
-----Message d'origine-----
Essaie en remplacant la ligne
TABLE2.MoveNext
par
If Not TABLE2.EOF then TABLE2.MoveNext




Oui, là j'ai dit une con..., car j'ai NCONTACT donc
TABLE2.Fields.item(INFOCONTACT + 1)
Mis j'ai toujours la même erreur.
Luis
-----Message d'origine-----
Bonjour Ilan,
Bien sur j'ai pris tous les contacts1 de la table1 +
le



NClient et j'ai multiplié par 3 ce qui donne 27.
J'ai remplacé TABLE2.Fields.item(INFOCONTACT + 1) par
TABLE2.Fields.item(INFOCONTACT) 'car je supose que
dans



l'expression TABLE.Fields.item(INFOCONTACT)que tu me
donnes TABLE=TABLE2.
Il y a encore une erreur:
Erreur d'exécution '3021'
Aucun enregistrement en cours.
Et en surbrillance:
GoSub EcrireInfo
TABLE2.MoveNext

Luis
-----Message d'origine-----
M'ouais
TABLE1 :
3 contacts qui ont chacun 8 champs + 1 Numero pour
le




client
3*8 + 1 = 25 champs (quels sont les champs
supplementaires ?)

TABLE2:
1 Numero Contact + 1 Numero Client + 8 champs = 10
champs


Si tu n'as pas de numero de contact dans TABLE2
remplace




la ligne

TABLE2.Fields.item(INFOCONTACT + 1) par
TABLE.Fields.item(INFOCONTACT)









Bonjour Ilan,
C'est justement la que se pose le problÃf¨me car:
J'ai 27 champs (3x9)dans la table1 et 9 champs dans
la





table2.
Donc pourquoi cette erreur?
Luis
-----Message d'origine-----
Luis, je pense qu'il est important que tu
comprennes






le
code.

L'erreur t'indique que :
soit INFOCONTACT+1 est superieur au nombre de
champs






dans TABLE2
soit INDICEINFO est superieur au nombre de champ
dans




TABLE1





Re-bonjour,
J'ai remplacÃffÃ,© les 5 lignes par les 9
nouvelles







et
j'ai
encore une erreur:
ElÃffÃ,©ment non trouvÃffÃ,© dans la
collection.







et en surbrillance:
TABLE2.Fields.Item(INFOCONTACT + 1) =
TABLE1.Fields.Item




(INDICEINFO)

DÃffÃ,©solÃffÃ,© en gÃffÃ,©nÃffÃ,©ral je
fais du







copier/coller, je ne
sais pas
comment j'ai fais cette erreur.
Luis
-----Message d'origine-----
si ca ne marchera pas chez toi Remplace les 5
lignes





suivantes

If (TABLE2.EOF or TABLE2!NClient<>TABLE1!
NClient)








then
gosub AjouterContact
else
TABLE2.Edit
endif

par ces 9 lignes

If TABLE2.EOF Then
Gosub AjouterContact
else
If TABLE2!NClient<>TABLE1!NClient then
Gosub AjouterContact
else
TABLE2.Edit
endif
endif

.



.




.


.




.











Avatar
Ilan
L'erreur qu'il manque au moins un champ dans table2 ou dans table1.
Ca fait deux jours que tu as la meme erreur.

S'il te plait renvoie-moi tout le code tel que tu l'as ecrit.


Bonjour Ilan,
Même, j'ai toujours
Erreur d'exécution '3265'
Elément introuvable dans cette collection.

D'autre part lorsque je passe la sourie sur:
If Not TABLE2.EOF Then TABLE2.MoveNext

En commentaries j'ai: TABLE2.EOF= FAUX

Je ne sais pas si ça peut t'aider
Luis
-----Message d'origine-----
Essaie en remplacant la ligne
TABLE2.MoveNext
par
If Not TABLE2.EOF then TABLE2.MoveNext




Oui, là j'ai dit une con..., car j'ai NCONTACT donc
TABLE2.Fields.item(INFOCONTACT + 1)
Mis j'ai toujours la même erreur.
Luis
-----Message d'origine-----
Bonjour Ilan,
Bien sur j'ai pris tous les contacts1 de la table1 +
le



NClient et j'ai multiplié par 3 ce qui donne 27.
J'ai remplacé TABLE2.Fields.item(INFOCONTACT + 1) par
TABLE2.Fields.item(INFOCONTACT) 'car je supose que
dans



l'expression TABLE.Fields.item(INFOCONTACT)que tu me
donnes TABLE=TABLE2.
Il y a encore une erreur:
Erreur d'exécution '3021'
Aucun enregistrement en cours.
Et en surbrillance:
GoSub EcrireInfo
TABLE2.MoveNext

Luis
-----Message d'origine-----
M'ouais
TABLE1 :
3 contacts qui ont chacun 8 champs + 1 Numero pour
le




client
3*8 + 1 = 25 champs (quels sont les champs
supplementaires ?)

TABLE2:
1 Numero Contact + 1 Numero Client + 8 champs = 10
champs


Si tu n'as pas de numero de contact dans TABLE2
remplace




la ligne

TABLE2.Fields.item(INFOCONTACT + 1) par
TABLE.Fields.item(INFOCONTACT)









Bonjour Ilan,
C'est justement la que se pose le problÃf¨me car:
J'ai 27 champs (3x9)dans la table1 et 9 champs dans
la





table2.
Donc pourquoi cette erreur?
Luis
-----Message d'origine-----
Luis, je pense qu'il est important que tu
comprennes






le
code.

L'erreur t'indique que :
soit INFOCONTACT+1 est superieur au nombre de
champs






dans TABLE2
soit INDICEINFO est superieur au nombre de champ
dans




TABLE1





Re-bonjour,
J'ai remplacÃffÃ,© les 5 lignes par les 9
nouvelles







et
j'ai
encore une erreur:
ElÃffÃ,©ment non trouvÃffÃ,© dans la
collection.







et en surbrillance:
TABLE2.Fields.Item(INFOCONTACT + 1) =
TABLE1.Fields.Item




(INDICEINFO)

DÃffÃ,©solÃffÃ,© en gÃffÃ,©nÃffÃ,©ral je
fais du







copier/coller, je ne
sais pas
comment j'ai fais cette erreur.
Luis
-----Message d'origine-----
si ca ne marchera pas chez toi Remplace les 5
lignes





suivantes

If (TABLE2.EOF or TABLE2!NClient<>TABLE1!
NClient)








then
gosub AjouterContact
else
TABLE2.Edit
endif

par ces 9 lignes

If TABLE2.EOF Then
Gosub AjouterContact
else
If TABLE2!NClient<>TABLE1!NClient then
Gosub AjouterContact
else
TABLE2.Edit
endif
endif

.



.




.


.




.














Avatar
Luis
Bonjour Ilan,
C'est une bonne idée car à force de modifications j'ai
peut-être rajouté des erreurs. Le voici:
Dim Db As Database
Dim TABLE1, TABLE2 As Recordset
Dim CONTACT, INFOCONTACT, INDICEINFO As Integer

Function SetContact()
Set Db = CurrentDb
Chaine = "SELECT NClient, RESPONSABLE, DEPARTEMENT1,
POLITESSE, TELDIRECT1, NATEL, FAX1, [e-mail1], fonction,
RESPONSABLE2, DEPARTEMENT2, POLITESSE2, TELDIRECT2,
NATEL2, FAX2, [e-mail2], FONCTION2, RESPONSABLE3,
DEPARTEMENT3, POLITESSE3, TELEDIRECT3, NATEL3, FAX3, [e-
mail3], FONCTION3 FROM Clients ORDER BY NClient"
Set TABLE1 = Db.OpenRecordset(Chaine)
Set TABLE2 = Db.OpenRecordset("SELECT NCLIENT, CONTACT,
DEPARTEMENT, Mme_Mlle_M, TELDIRECT, NATELDIRECT,
FAXDIRECT, MAILDIRECT, FONCTION FROM Contacts_Clients
ORDER BY NClient;")

'TABLE1 est-elle vide ?
If Not (TABLE1.BOF Or TABLE1.EOF) Then
TABLE2.FindFirst ("NClient=" & TABLE1!NClient)
'Le client a-t-il été trouvé dans TABLE2?
If TABLE2.NoMatch Then
For CONTACT = 1 To 3
GoSub AjouterContact
GoSub EcrireInfo
Next CONTACT
Else
For CONTACT = 1 To 3
If TABLE2.EOF Then
GoSub AjouterContact
Else
If TABLE2!NClient <> TABLE1!NClient Then
GoSub AjouterContact
Else
TABLE2.Edit

End If
End If

GoSub EcrireInfo
If Not TABLE2.EOF Then TABLE2.MoveNext

Next CONTACT
End If
End If

TABLE1.Close
TABLE2.Close

AjouterContact:
TABLE2.AddNew
TABLE2!NClient = TABLE1!NClient
Return
EcrireInfo:
For INFOCONTACT = 1 To 8
INDICEINFO = 8 * (CONTACT - 1) + INFOCONTACT
TABLE2.Fields.Item(INFOCONTACT + 1) =
TABLE1.Fields.Item(INDICEINFO)
Next INFOCONTACT
TABLE2.Update
Return
Exit Function
End Function
C'est peut-être ce que tu vas trouver.
Luis
-----Message d'origine-----
L'erreur qu'il manque au moins un champ dans table2 ou
dans table1.

Ca fait deux jours que tu as la meme erreur.

S'il te plait renvoie-moi tout le code tel que tu l'as
ecrit.



Bonjour Ilan,
Même, j'ai toujours
Erreur d'exécution '3265'
Elément introuvable dans cette collection.

D'autre part lorsque je passe la sourie sur:
If Not TABLE2.EOF Then TABLE2.MoveNext

En commentaries j'ai: TABLE2.EOF= FAUX

Je ne sais pas si ça peut t'aider
Luis
-----Message d'origine-----
Essaie en remplacant la ligne
TABLE2.MoveNext
par
If Not TABLE2.EOF then TABLE2.MoveNext




Oui, lÃf j'ai dit une con..., car j'ai NCONTACT
donc




TABLE2.Fields.item(INFOCONTACT + 1)
Mis j'ai toujours la mÃfªme erreur.
Luis
-----Message d'origine-----
Bonjour Ilan,
Bien sur j'ai pris tous les contacts1 de la table1
+





le
NClient et j'ai multipliÃf© par 3 ce qui donne 27.
J'ai remplacÃf© TABLE2.Fields.item(INFOCONTACT +
1) par





TABLE2.Fields.item(INFOCONTACT) 'car je supose que
dans



l'expression TABLE.Fields.item(INFOCONTACT)que tu
me





donnes TABLE=TABLE2.
Il y a encore une erreur:
Erreur d'exÃf©cution '3021'
Aucun enregistrement en cours.
Et en surbrillance:
GoSub EcrireInfo
TABLE2.MoveNext

Luis
-----Message d'origine-----
M'ouais
TABLE1 :
3 contacts qui ont chacun 8 champs + 1 Numero
pour






le
client
3*8 + 1 = 25 champs (quels sont les champs
supplementaires ?)

TABLE2:
1 Numero Contact + 1 Numero Client + 8 champs =
10






champs

Si tu n'as pas de numero de contact dans TABLE2
remplace




la ligne

TABLE2.Fields.item(INFOCONTACT + 1) par
TABLE.Fields.item(INFOCONTACT)









Bonjour Ilan,
C'est justement la que se pose le problÃffÃ,¨me
car:







J'ai 27 champs (3x9)dans la table1 et 9 champs
dans







la
table2.
Donc pourquoi cette erreur?
Luis
-----Message d'origine-----
Luis, je pense qu'il est important que tu
comprennes






le
code.

L'erreur t'indique que :
soit INFOCONTACT+1 est superieur au nombre de
champs






dans TABLE2
soit INDICEINFO est superieur au nombre de
champ








dans
TABLE1





Re-bonjour,
J'ai remplacÃfffÃf,Ã,© les 5 lignes par les
9









nouvelles
et
j'ai
encore une erreur:
ElÃfffÃf,Ã,©ment non trouvÃfffÃf,Ã,© dans
la









collection.
et en surbrillance:
TABLE2.Fields.Item(INFOCONTACT + 1) =
TABLE1.Fields.Item




(INDICEINFO)

DÃfffÃf,Ã,©solÃfffÃf,Ã,© en
gÃfffÃf,Ã,©nÃfffÃf,Ã,©ral je









fais du
copier/coller, je ne
sais pas
comment j'ai fais cette erreur.
Luis
-----Message d'origine-----
si ca ne marchera pas chez toi Remplace les
5










lignes
suivantes

If (TABLE2.EOF or TABLE2!NClient<>TABLE1!
NClient)








then
gosub AjouterContact
else
TABLE2.Edit
endif

par ces 9 lignes

If TABLE2.EOF Then
Gosub AjouterContact
else
If TABLE2!NClient<>TABLE1!NClient then
Gosub AjouterContact
else
TABLE2.Edit
endif
endif

.



.




.


.




.




.













Avatar
3stone
Salut Luis,

"Luis"
Dim Db As Database
Dim TABLE1, TABLE2 As Recordset
Dim CONTACT, INFOCONTACT, INDICEINFO As Integer



Depuis le temps, tu aurais *dû* savoir que...


Dim Db As DAO.Database 'par sécurité
Dim Table1 As Recordset, Table2 As Recordset
Dim Contact As Interger, InfoContact As Integer, IndiceInfo As Interger


car toi, tu déclare Table1, Contact et InfoContact comme VARIANT



PS: Je n'ai pas regardé le reste ;-)

PPS: Tu peux "nettoyer" tes messages et ne pas simplement ajouter.



--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome
Avatar
Luis
Bonjour,
Je ne sais pas comment on nettoi les messages.
Tu peux regarder le reste si tu veux.
Luis
-----Message d'origine-----
Salut Luis,

"Luis"
Dim Db As Database
Dim TABLE1, TABLE2 As Recordset
Dim CONTACT, INFOCONTACT, INDICEINFO As Integer



Depuis le temps, tu aurais *dû* savoir que...


Dim Db As DAO.Database 'par sécurité
Dim Table1 As Recordset, Table2 As Recordset
Dim Contact As Interger, InfoContact As Integer,
IndiceInfo As Interger



car toi, tu déclare Table1, Contact et InfoContact
comme VARIANT




PS: Je n'ai pas regardé le reste ;-)

PPS: Tu peux "nettoyer" tes messages et ne pas simplement
ajouter.




--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome




.



1 2 3