OVH Cloud OVH Cloud

Copie d'une table à l'autre

8 réponses
Avatar
Luis
Bonjour,
A la cr=E9ation d'un nouveau client dans la table 'clients',=20
j'aimerai que l'adresse de la table clients se copie=20
directement dans la table 'ADRESSE FACTURATION'.
Si l'adresse de facturation est diff=E9rente un formulaire=20
Facturation permet d'entrer cette adresse dans les champs=20
[B-ADRESFACTURATION] et [B-ADRESSEPRINCIPALE], qui doivent=20
avoir priorit=E9 par rapport =E0 l'adresse principale du=20
client.

Je rencontre deux probl=E8mes :
Le premier : si une modif dans l'adresse de la table=20
clients est saisie la formule me cr=E9e une nouvelle ligne=20
NClient dans la table 'ADRESSE FACTURATION' au lieu de=20
modifier les valeurs existantes.
Le deuxi=E8me probl=E8me : Si dans la table facturation une=20
adresse a d=E9j=E0 =E9t=E9 saisie dans [B-ADRESFACTURATION] et que=20
je fais une modification dans la table clients.
J'ai une erreur d'incompatibilit=E9 de type.

Voil=E0 ce que j'ai fais :
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("ADRESSE FACTURATION",=20
dbOpenDynaset) ' Cr=E9e la feuille de r=E9ponses dynamique.
MaTable.MoveFirst ' Recherche la premi=E8re occurrence.
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 NClient Then
COMPE =3D MaTable!Adressedef
If COMPE =3D Me![B-ADRESSE] Or MaTable![B-
ADRESFACTURATION] Or MaTable![B-ADRESSEPRINCIPALE] 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
=20
MaTable.AddNew
MaTable!NClient =3D NClient
MaTable!Adressedef =3D [B-ADRESSE]
MaTable!NPdef =3D [B-NP]
=20
MaTable.Update
MaTable.Close
Else
'matable.Close
End If
Je rencontre deux probl=E8mes :
Le premier : si une modif dans l'adresse de la table=20
clients est saisie la formule me cr=E9e une nouvelle ligne=20
NClient dans la table 'ADRESSE FACTURATION' au lieu de=20
modifier les valeurs existantes.
Le deuxi=E8me probl=E8me : Si dans la table facturation une=20
adresse a d=E9j=E0 =E9t=E9 saisie dans [B-ADRESFACTURATION] et que=20
je fais une modification dans la table clients.
J'ai une erreur d'incompatibilit=E9 de type.

Est-ce que quelqu'un peut m'aider =E0 rem=E9dier =E0 ces deux=20
probl=E8mes ?
Luis

8 réponses

Avatar
Guile
Salut,
Si j ai bien compris ton probleme pour chaque client tu
as une adresse principale et une adresse facturation qui
peuvent etre les memes ou non.
Personnellement j aurais mis les tables en relation 1-1
et utiliser une requete d'ajout pour inserer une adresse
facturation pour un nouveau client et une requete
actualisation en cas de modification.
Puis creer deux boutons dans ton formulaire:
Un qui utilise ton adresse principale pour ta facturation
ou qui actualiserais les modif. En faisant appel a tes
requetes d action utilisant la fonction "if": Si l
adresse de facturation existe le code lancera la requete
d actualisation sinon il lancera celle d'ajout.

L'autre bouton qui te permettrait d en inserer une
differente, donc ouvrirait tout simplement ton formulaire
en mode nouveau.
C est pas vraiment une reponse directe a ton probleme
mais j'ai fait a peu pres la meme chose dans une de mes
BD et ca marche tres bien.
a+

-----Message d'origine-----
Bonjour,
A la création d'un nouveau client dans la
table 'clients',

j'aimerai que l'adresse de la table clients se copie
directement dans la table 'ADRESSE FACTURATION'.
Si l'adresse de facturation est différente un formulaire
Facturation permet d'entrer cette adresse dans les
champs

[B-ADRESFACTURATION] et [B-ADRESSEPRINCIPALE], qui
doivent

avoir priorité par rapport à l'adresse principale du
client.

Je rencontre deux problèmes :
Le premier : si une modif dans l'adresse de la table
clients est saisie la formule me crée une nouvelle ligne
NClient dans la table 'ADRESSE FACTURATION' au lieu de
modifier les valeurs existantes.
Le deuxième problème : Si dans la table facturation une
adresse a déjà été saisie dans [B-ADRESFACTURATION] et
que

je fais une modification dans la table clients.
J'ai une erreur d'incompatibilité de type.

Voilà ce que j'ai fais :
Dim Critère As String, MaBD As Database, MaTable As
Recordset

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

TESTER = MaTable!NClient
If TESTER = NClient Then
COMPE = MaTable!Adressedef
If COMPE = Me![B-ADRESSE] Or MaTable![B-
ADRESFACTURATION] Or MaTable![B-ADRESSEPRINCIPALE] 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!Adressedef = [B-ADRESSE]
MaTable!NPdef = [B-NP]

MaTable.Update
MaTable.Close
Else
'matable.Close
End If
Je rencontre deux problèmes :
Le premier : si une modif dans l'adresse de la table
clients est saisie la formule me crée une nouvelle ligne
NClient dans la table 'ADRESSE FACTURATION' au lieu de
modifier les valeurs existantes.
Le deuxième problème : Si dans la table facturation une
adresse a déjà été saisie dans [B-ADRESFACTURATION] et
que

je fais une modification dans la table clients.
J'ai une erreur d'incompatibilité de type.

Est-ce que quelqu'un peut m'aider à remédier à ces deux
problèmes ?
Luis

.



Avatar
Luis
Bonjour,
Effectivement c'est une solution, mais j'ai une contreinte
qui m'oblige à faire autrement.
C'est à dire qu'il faut que l'adresse de facturation soit
de suite copiée depuis l'adresse principale et le faire
avec le bouton Valider, ors si aprés avoir enregistré une
autre adresse facturation à travers le formulaire adresse
facturation, il deviendra impossible de faire des
modifications dans le formulaire principal, car la
Validation de la midification se fait avec le même bouton
valider et là l'adresse saisie depuis le formulaire
adresse facturation serai écrasé par celui contenu dans le
formulaire principal.
Luis
-----Message d'origine-----
Salut,
Si j ai bien compris ton probleme pour chaque client tu
as une adresse principale et une adresse facturation qui
peuvent etre les memes ou non.
Personnellement j aurais mis les tables en relation 1-1
et utiliser une requete d'ajout pour inserer une adresse
facturation pour un nouveau client et une requete
actualisation en cas de modification.
Puis creer deux boutons dans ton formulaire:
Un qui utilise ton adresse principale pour ta facturation
ou qui actualiserais les modif. En faisant appel a tes
requetes d action utilisant la fonction "if": Si l
adresse de facturation existe le code lancera la requete
d actualisation sinon il lancera celle d'ajout.

L'autre bouton qui te permettrait d en inserer une
differente, donc ouvrirait tout simplement ton formulaire
en mode nouveau.
C est pas vraiment une reponse directe a ton probleme
mais j'ai fait a peu pres la meme chose dans une de mes
BD et ca marche tres bien.
a+

-----Message d'origine-----
Bonjour,
A la création d'un nouveau client dans la
table 'clients',

j'aimerai que l'adresse de la table clients se copie
directement dans la table 'ADRESSE FACTURATION'.
Si l'adresse de facturation est différente un formulaire
Facturation permet d'entrer cette adresse dans les
champs

[B-ADRESFACTURATION] et [B-ADRESSEPRINCIPALE], qui
doivent

avoir priorité par rapport à l'adresse principale du
client.

Je rencontre deux problèmes :
Le premier : si une modif dans l'adresse de la table
clients est saisie la formule me crée une nouvelle ligne
NClient dans la table 'ADRESSE FACTURATION' au lieu de
modifier les valeurs existantes.
Le deuxième problème : Si dans la table facturation une
adresse a déjà été saisie dans [B-ADRESFACTURATION] et
que

je fais une modification dans la table clients.
J'ai une erreur d'incompatibilité de type.

Voilà ce que j'ai fais :
Dim Critère As String, MaBD As Database, MaTable As
Recordset

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

TESTER = MaTable!NClient
If TESTER = NClient Then
COMPE = MaTable!Adressedef
If COMPE = Me![B-ADRESSE] Or MaTable![B-
ADRESFACTURATION] Or MaTable![B-ADRESSEPRINCIPALE] 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!Adressedef = [B-ADRESSE]
MaTable!NPdef = [B-NP]

MaTable.Update
MaTable.Close
Else
'matable.Close
End If
Je rencontre deux problèmes :
Le premier : si une modif dans l'adresse de la table
clients est saisie la formule me crée une nouvelle ligne
NClient dans la table 'ADRESSE FACTURATION' au lieu de
modifier les valeurs existantes.
Le deuxième problème : Si dans la table facturation une
adresse a déjà été saisie dans [B-ADRESFACTURATION] et
que

je fais une modification dans la table clients.
J'ai une erreur d'incompatibilité de type.

Est-ce que quelqu'un peut m'aider à remédier à ces deux
problèmes ?
Luis

.

.





Avatar
Ilan
Bonsoir,
tu peux peut-etre te contenter d'ajouter une case a cocher dans ton formulaire
client. Cette case aura pour etiquette :
(Adresse de facturation si differente de l'adresse principale)
ainsi que la (ou les) zone de texte (Ex: ADRESSEFACT) pour la saisie
de l'adresse facturation.

Quand cette case est validee, les zones de saisie pour l'adresse de
facturation
deviennent accessibles.
Pour la mise a jour de la table ADRESSE FACTURATION :
Si la case a cocher est validee
Alors B-ADRESFACTURATION = ADRESSEFACT
Sinon B-ADRESFACTURATION = B-ADRESSEPRINCIPALE



Pour la mise a jour, ajouter du code du genre :
Exemple : 1 zone de texte ADRESSEFACT pour l'adresse de facturation


Set MaTable=CurrentDb.OpenRecordset("SELECT * FROM [ADRESSE FACTURATION]
WHERE NumClient=" & controlnumclient.Value)

If MaTable.BOF and MaTable.EOF then
MaTable.AddNew
MaTable!NumClient=controlnumclient.Vlue
End if
End if
MaTable!B-ADRESFACTURATION=B-ADRESSEPRINCIPALE
If CaseaCocher.Value=True And AdresseFact.Value<>"" Then
MaTable!B-ADRESFACTURATION­RESSEFACT.Value
End if
MaTable.UpDate
MaTable.Close


Bonjour,
Effectivement c'est une solution, mais j'ai une contreinte
qui m'oblige à faire autrement.
C'est à dire qu'il faut que l'adresse de facturation soit
de suite copiée depuis l'adresse principale et le faire
avec le bouton Valider, ors si aprés avoir enregistré une
autre adresse facturation à travers le formulaire adresse
facturation, il deviendra impossible de faire des
modifications dans le formulaire principal, car la
Validation de la midification se fait avec le même bouton
valider et là l'adresse saisie depuis le formulaire
adresse facturation serai écrasé par celui contenu dans le
formulaire principal.
Luis
-----Message d'origine-----
Salut,
Si j ai bien compris ton probleme pour chaque client tu
as une adresse principale et une adresse facturation qui
peuvent etre les memes ou non.
Personnellement j aurais mis les tables en relation 1-1
et utiliser une requete d'ajout pour inserer une adresse
facturation pour un nouveau client et une requete
actualisation en cas de modification.
Puis creer deux boutons dans ton formulaire:
Un qui utilise ton adresse principale pour ta facturation
ou qui actualiserais les modif. En faisant appel a tes
requetes d action utilisant la fonction "if": Si l
adresse de facturation existe le code lancera la requete
d actualisation sinon il lancera celle d'ajout.

L'autre bouton qui te permettrait d en inserer une
differente, donc ouvrirait tout simplement ton formulaire
en mode nouveau.
C est pas vraiment une reponse directe a ton probleme
mais j'ai fait a peu pres la meme chose dans une de mes
BD et ca marche tres bien.
a+

-----Message d'origine-----
Bonjour,
A la création d'un nouveau client dans la
table 'clients',

j'aimerai que l'adresse de la table clients se copie
directement dans la table 'ADRESSE FACTURATION'.
Si l'adresse de facturation est différente un formulaire
Facturation permet d'entrer cette adresse dans les
champs

[B-ADRESFACTURATION] et [B-ADRESSEPRINCIPALE], qui
doivent

avoir priorité par rapport à l'adresse principale du
client.

Je rencontre deux problèmes :
Le premier : si une modif dans l'adresse de la table
clients est saisie la formule me crée une nouvelle ligne
NClient dans la table 'ADRESSE FACTURATION' au lieu de
modifier les valeurs existantes.
Le deuxième problème : Si dans la table facturation une
adresse a déjà été saisie dans [B-ADRESFACTURATION] et
que

je fais une modification dans la table clients.
J'ai une erreur d'incompatibilité de type.

Voilà ce que j'ai fais :
Dim Critère As String, MaBD As Database, MaTable As
Recordset

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

TESTER = MaTable!NClient
If TESTER = NClient Then
COMPE = MaTable!Adressedef
If COMPE = Me![B-ADRESSE] Or MaTable![B-
ADRESFACTURATION] Or MaTable![B-ADRESSEPRINCIPALE] 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!Adressedef = [B-ADRESSE]
MaTable!NPdef = [B-NP]

MaTable.Update
MaTable.Close
Else
'matable.Close
End If
Je rencontre deux problèmes :
Le premier : si une modif dans l'adresse de la table
clients est saisie la formule me crée une nouvelle ligne
NClient dans la table 'ADRESSE FACTURATION' au lieu de
modifier les valeurs existantes.
Le deuxième problème : Si dans la table facturation une
adresse a déjà été saisie dans [B-ADRESFACTURATION] et
que

je fais une modification dans la table clients.
J'ai une erreur d'incompatibilité de type.

Est-ce que quelqu'un peut m'aider à remédier à ces deux
problèmes ?
Luis

.

.








Avatar
Luis
Bonjour Ilan,
J'ai trouvé ton idée très bonne.
Alors j'ai ajouté une case à cocher avec valeur par
défaut "0" et ajouté un champ à ma table
appelé 'Facturation', comme ça dès que l'on clique sur
cette case la valeur est "1".
Et j'ai mis ça mais Rien ne se passe:

If Facturation = 0 Then
Exit Sub
Else
If Facturation = 1 Then
MaTable = "ADRESSE FACTURATION"

Set MaTable = CurrentDb.OpenRecordset("SELECT * FROM
CLIENTS WHERE NClient = " & NCLIENT)

If MaTable.BOF And MaTable3.EOF Then
MaTable.AddNew
MaTable!NCLIENT = NCLIENT

MaTable![Adressedef] = Me.[B-ADRESSE]
MaTable![NPdef] = Me.[B-NP]
Exit Sub

MaTable.Update
MaTable.Close
End If
End If
End If
[Adressedef] et [NPdef] sont les champs de la
table "ADRESSE FACTURATION"

[B-ADRESSE] et [B-NP] sont les champs de la table "Clients"
Luis
-----Message d'origine-----
Bonsoir,
tu peux peut-etre te contenter d'ajouter une case a
cocher dans ton formulaire

client. Cette case aura pour etiquette :
(Adresse de facturation si differente de
l'adresse principale)

ainsi que la (ou les) zone de texte (Ex: ADRESSEFACT)
pour la saisie

de l'adresse facturation.

Quand cette case est validee, les zones de saisie pour
l'adresse de

facturation
deviennent accessibles.
Pour la mise a jour de la table ADRESSE FACTURATION :
Si la case a cocher est validee
Alors B-ADRESFACTURATION = ADRESSEFACT
Sinon B-ADRESFACTURATION = B-ADRESSEPRINCIPALE



Pour la mise a jour, ajouter du code du genre :
Exemple : 1 zone de texte ADRESSEFACT pour l'adresse de
facturation



Set MaTable=CurrentDb.OpenRecordset("SELECT * FROM
[ADRESSE FACTURATION]

WHERE NumClient=" & controlnumclient.Value)

If MaTable.BOF and MaTable.EOF then
MaTable.AddNew
MaTable!NumClient=controlnumclient.Vlue
End if
End if
MaTable!B-ADRESFACTURATION=B-ADRESSEPRINCIPALE
If CaseaCocher.Value=True And AdresseFact.Value<>"" Then
MaTable!B-ADRESFACTURATION­RESSEFACT.Value
End if
MaTable.UpDate
MaTable.Close


Bonjour,
Effectivement c'est une solution, mais j'ai une
contreinte


qui m'oblige à faire autrement.
C'est à dire qu'il faut que l'adresse de facturation
soit


de suite copiée depuis l'adresse principale et le
faire


avec le bouton Valider, ors si aprés avoir enregistré
une


autre adresse facturation à travers le formulaire
adresse


facturation, il deviendra impossible de faire des
modifications dans le formulaire principal, car la
Validation de la midification se fait avec le même
bouton


valider et là l'adresse saisie depuis le formulaire
adresse facturation serai écrasé par celui contenu
dans le


formulaire principal.
Luis
-----Message d'origine-----
Salut,
Si j ai bien compris ton probleme pour chaque client
tu



as une adresse principale et une adresse facturation
qui



peuvent etre les memes ou non.
Personnellement j aurais mis les tables en relation 1-
1



et utiliser une requete d'ajout pour inserer une
adresse



facturation pour un nouveau client et une requete
actualisation en cas de modification.
Puis creer deux boutons dans ton formulaire:
Un qui utilise ton adresse principale pour ta
facturation



ou qui actualiserais les modif. En faisant appel a tes
requetes d action utilisant la fonction "if": Si l
adresse de facturation existe le code lancera la
requete



d actualisation sinon il lancera celle d'ajout.

L'autre bouton qui te permettrait d en inserer une
differente, donc ouvrirait tout simplement ton
formulaire



en mode nouveau.
C est pas vraiment une reponse directe a ton probleme
mais j'ai fait a peu pres la meme chose dans une de
mes



BD et ca marche tres bien.
a+

-----Message d'origine-----
Bonjour,
A la création d'un nouveau client dans la
table 'clients',

j'aimerai que l'adresse de la table clients se copie
directement dans la table 'ADRESSE FACTURATION'.
Si l'adresse de facturation est différente un
formulaire




Facturation permet d'entrer cette adresse dans les
champs

[B-ADRESFACTURATION] et [B-ADRESSEPRINCIPALE], qui
doivent

avoir priorité par rapport à l'adresse principale
du




client.

Je rencontre deux problèmes :
Le premier : si une modif dans l'adresse de la table
clients est saisie la formule me crée une nouvelle
ligne




NClient dans la table 'ADRESSE FACTURATION' au lieu
de




modifier les valeurs existantes.
Le deuxième problème : Si dans la table facturation
une




adresse a déjà été saisie dans [B-
ADRESFACTURATION] et




que
je fais une modification dans la table clients.
J'ai une erreur d'incompatibilité de type.

Voilà ce que j'ai fais :
Dim Critère As String, MaBD As Database, MaTable As
Recordset

Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("ADRESSE
FACTURATION",




dbOpenDynaset) ' Crée la feuille de réponses
dynamique.




MaTable.MoveFirst ' Recherche la première occurrence.
Do Until MaTable.EOF ' Boucle jusqu'Ã ce qu'il n'y
ait




plus d'enregistrement correspondant.

TESTER = MaTable!NClient
If TESTER = NClient Then
COMPE = MaTable!Adressedef
If COMPE = Me![B-ADRESSE] Or MaTable![B-
ADRESFACTURATION] Or MaTable![B-ADRESSEPRINCIPALE]
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!Adressedef = [B-ADRESSE]
MaTable!NPdef = [B-NP]

MaTable.Update
MaTable.Close
Else
'matable.Close
End If
Je rencontre deux problèmes :
Le premier : si une modif dans l'adresse de la table
clients est saisie la formule me crée une nouvelle
ligne




NClient dans la table 'ADRESSE FACTURATION' au lieu
de




modifier les valeurs existantes.
Le deuxième problème : Si dans la table facturation
une




adresse a déjà été saisie dans [B-
ADRESFACTURATION] et




que
je fais une modification dans la table clients.
J'ai une erreur d'incompatibilité de type.

Est-ce que quelqu'un peut m'aider à remédier à ces
deux




problèmes ?
Luis

.

.




.







Avatar
Ilan
Bonjour Luis,
Une case à cocher n'accepte que deux valeurs TRUE et FALSE.
En fait TRUE et FALSE sont des constantes numeriques.
TRUE (VRAI)= -1 et FALSE (FAUX) = 0

Je ne comprends rien a ton code :
MaTable3 ??? Kezako
MaTable ??? Contient quoi au juste la table Clients ou
la table AdresseFacturation

Tu ajoutes une nouvelle adresse de facturation systematiquement,
De plus, il y a dans ton code un Exit sub (Sortir de la procedure) avant
d'avoir enregistrer les modifications apportees a la table.

ex:
If Facturationúlse Then Exit Sub
MaTable = "ADRESSE FACTURATION"
Set MaTable = CurrentDb.OpenRecordset("SELECT * FROM
CLIENTS WHERE NClient = " & NCLIENT)
If MaTable.BOF And MaTable3.EOF Then
MaTable.AddNew
MaTable!NCLIENT = NCLIENT
MaTable![Adressedef] = Me.[B-ADRESSE]
MaTable![NPdef] = Me.[B-NP]
Exit Sub

MaTable.Update
MaTable.Close
End If
End If
End If
[Adressedef] et [NPdef] sont les champs de la
table "ADRESSE FACTURATION"

[B-ADRESSE] et [B-NP] sont les champs de la table "Clients"



Bonjour Ilan,
J'ai trouvé ton idée très bonne.
Alors j'ai ajouté une case à cocher avec valeur par
défaut "0" et ajouté un champ à ma table
appelé 'Facturation', comme ça dès que l'on clique sur
cette case la valeur est "1".
Et j'ai mis ça mais Rien ne se passe:

If Facturation = 0 Then
Exit Sub
Else
If Facturation = 1 Then
MaTable = "ADRESSE FACTURATION"

Set MaTable = CurrentDb.OpenRecordset("SELECT * FROM
CLIENTS WHERE NClient = " & NCLIENT)

If MaTable.BOF And MaTable3.EOF Then
MaTable.AddNew
MaTable!NCLIENT = NCLIENT

MaTable![Adressedef] = Me.[B-ADRESSE]
MaTable![NPdef] = Me.[B-NP]
Exit Sub

MaTable.Update
MaTable.Close
End If
End If
End If
[Adressedef] et [NPdef] sont les champs de la
table "ADRESSE FACTURATION"

[B-ADRESSE] et [B-NP] sont les champs de la table "Clients"
Luis
-----Message d'origine-----
Bonsoir,
tu peux peut-etre te contenter d'ajouter une case a
cocher dans ton formulaire

client. Cette case aura pour etiquette :
(Adresse de facturation si differente de
l'adresse principale)

ainsi que la (ou les) zone de texte (Ex: ADRESSEFACT)
pour la saisie

de l'adresse facturation.

Quand cette case est validee, les zones de saisie pour
l'adresse de

facturation
deviennent accessibles.
Pour la mise a jour de la table ADRESSE FACTURATION :
Si la case a cocher est validee
Alors B-ADRESFACTURATION = ADRESSEFACT
Sinon B-ADRESFACTURATION = B-ADRESSEPRINCIPALE



Pour la mise a jour, ajouter du code du genre :
Exemple : 1 zone de texte ADRESSEFACT pour l'adresse de
facturation



Set MaTable=CurrentDb.OpenRecordset("SELECT * FROM
[ADRESSE FACTURATION]

WHERE NumClient=" & controlnumclient.Value)

If MaTable.BOF and MaTable.EOF then
MaTable.AddNew
MaTable!NumClient=controlnumclient.Vlue
End if
End if
MaTable!B-ADRESFACTURATION=B-ADRESSEPRINCIPALE
If CaseaCocher.Value=True And AdresseFact.Value<>"" Then
MaTable!B-ADRESFACTURATION­RESSEFACT.Value
End if
MaTable.UpDate
MaTable.Close


Bonjour,
Effectivement c'est une solution, mais j'ai une
contreinte


qui m'oblige à faire autrement.
C'est à dire qu'il faut que l'adresse de facturation
soit


de suite copiée depuis l'adresse principale et le
faire


avec le bouton Valider, ors si aprés avoir enregistré
une


autre adresse facturation à travers le formulaire
adresse


facturation, il deviendra impossible de faire des
modifications dans le formulaire principal, car la
Validation de la midification se fait avec le même
bouton


valider et là l'adresse saisie depuis le formulaire
adresse facturation serai écrasé par celui contenu
dans le


formulaire principal.
Luis
-----Message d'origine-----
Salut,
Si j ai bien compris ton probleme pour chaque client
tu



as une adresse principale et une adresse facturation
qui



peuvent etre les memes ou non.
Personnellement j aurais mis les tables en relation 1-
1



et utiliser une requete d'ajout pour inserer une
adresse



facturation pour un nouveau client et une requete
actualisation en cas de modification.
Puis creer deux boutons dans ton formulaire:
Un qui utilise ton adresse principale pour ta
facturation



ou qui actualiserais les modif. En faisant appel a tes
requetes d action utilisant la fonction "if": Si l
adresse de facturation existe le code lancera la
requete



d actualisation sinon il lancera celle d'ajout.

L'autre bouton qui te permettrait d en inserer une
differente, donc ouvrirait tout simplement ton
formulaire



en mode nouveau.
C est pas vraiment une reponse directe a ton probleme
mais j'ai fait a peu pres la meme chose dans une de
mes



BD et ca marche tres bien.
a+

-----Message d'origine-----
Bonjour,
A la création d'un nouveau client dans la
table 'clients',

j'aimerai que l'adresse de la table clients se copie
directement dans la table 'ADRESSE FACTURATION'.
Si l'adresse de facturation est différente un
formulaire




Facturation permet d'entrer cette adresse dans les
champs

[B-ADRESFACTURATION] et [B-ADRESSEPRINCIPALE], qui
doivent

avoir priorité par rapport à l'adresse principale
du




client.

Je rencontre deux problèmes :
Le premier : si une modif dans l'adresse de la table
clients est saisie la formule me crée une nouvelle
ligne




NClient dans la table 'ADRESSE FACTURATION' au lieu
de




modifier les valeurs existantes.
Le deuxième problème : Si dans la table facturation
une




adresse a déjà été saisie dans [B-
ADRESFACTURATION] et




que
je fais une modification dans la table clients.
J'ai une erreur d'incompatibilité de type.

Voilà ce que j'ai fais :
Dim Critère As String, MaBD As Database, MaTable As
Recordset

Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("ADRESSE
FACTURATION",




dbOpenDynaset) ' Crée la feuille de réponses
dynamique.




MaTable.MoveFirst ' Recherche la première occurrence.
Do Until MaTable.EOF ' Boucle jusqu'Ã ce qu'il n'y
ait




plus d'enregistrement correspondant.

TESTER = MaTable!NClient
If TESTER = NClient Then
COMPE = MaTable!Adressedef
If COMPE = Me![B-ADRESSE] Or MaTable![B-
ADRESFACTURATION] Or MaTable![B-ADRESSEPRINCIPALE]
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!Adressedef = [B-ADRESSE]
MaTable!NPdef = [B-NP]

MaTable.Update
MaTable.Close
Else
'matable.Close
End If
Je rencontre deux problèmes :
Le premier : si une modif dans l'adresse de la table
clients est saisie la formule me crée une nouvelle
ligne




NClient dans la table 'ADRESSE FACTURATION' au lieu
de




modifier les valeurs existantes.
Le deuxième problème : Si dans la table facturation
une




adresse a déjà été saisie dans [B-
ADRESFACTURATION] et




que
je fais une modification dans la table clients.
J'ai une erreur d'incompatibilité de type.

Est-ce que quelqu'un peut m'aider à remédier à ces
deux




problèmes ?
Luis

.

.




.










Avatar
Luis
Bonjour Ilan,
MaTable3 est une faute de frappe, sans faute de frappe
c'est MaTable
MaTable contient la table "AdresseFacturation"
Facturation est le nom de la case à cocher

Effectivement If Facturationúlse Then Exit Sub
est faux mais même comme ça:


If Facturation = False Then
MaTable = ("ADRESSE FACTURATION")

Set MaTable = CurrentDb.OpenRecordset("SELECT * FROM
CLIENTS WHERE NClient = " & NCLIENT)

If MaTable.BOF And MaTable.EOF Then
MaTable.AddNew
MaTable!NCLIENT = NCLIENT

MaTable![Adressedef] = Me.[B-ADRESSE]
MaTable![NPdef] = Me.[B-NP]
Exit Sub
MaTable.Update
MaTable.Close
Else
If Facturation = True Then
Exit Sub
End If
End If
End If
Je ne sais pas si j'ai réussi à expliquer de toutes façons
le code est faux mais où????
Luis

-----Message d'origine-----
Bonjour Luis,
Une case à cocher n'accepte que deux valeurs TRUE et
FALSE.

En fait TRUE et FALSE sont des constantes numeriques.
TRUE (VRAI)= -1 et FALSE (FAUX) = 0

Je ne comprends rien a ton code :
MaTable3 ??? Kezako
MaTable ??? Contient quoi au juste la table Clients ou
la table AdresseFacturation

Tu ajoutes une nouvelle adresse de facturation
systematiquement,

De plus, il y a dans ton code un Exit sub (Sortir de la
procedure) avant

d'avoir enregistrer les modifications apportees a la
table.


ex:
If Facturationúlse Then Exit Sub
MaTable = "ADRESSE FACTURATION"
Set MaTable = CurrentDb.OpenRecordset("SELECT * FROM
CLIENTS WHERE NClient = " & NCLIENT)
If MaTable.BOF And MaTable3.EOF Then
MaTable.AddNew
MaTable!NCLIENT = NCLIENT
MaTable![Adressedef] = Me.[B-ADRESSE]
MaTable![NPdef] = Me.[B-NP]
Exit Sub

MaTable.Update
MaTable.Close
End If
End If
End If
[Adressedef] et [NPdef] sont les champs de la
table "ADRESSE FACTURATION"

[B-ADRESSE] et [B-NP] sont les champs de la
table "Clients"




Bonjour Ilan,
J'ai trouvé ton idée très bonne.
Alors j'ai ajouté une case à cocher avec valeur par
défaut "0" et ajouté un champ à ma table
appelé 'Facturation', comme ça dès que l'on clique
sur


cette case la valeur est "1".
Et j'ai mis ça mais Rien ne se passe:

If Facturation = 0 Then
Exit Sub
Else
If Facturation = 1 Then
MaTable = "ADRESSE FACTURATION"

Set MaTable = CurrentDb.OpenRecordset("SELECT * FROM
CLIENTS WHERE NClient = " & NCLIENT)

If MaTable.BOF And MaTable3.EOF Then
MaTable.AddNew
MaTable!NCLIENT = NCLIENT

MaTable![Adressedef] = Me.[B-ADRESSE]
MaTable![NPdef] = Me.[B-NP]
Exit Sub

MaTable.Update
MaTable.Close
End If
End If
End If
[Adressedef] et [NPdef] sont les champs de la
table "ADRESSE FACTURATION"

[B-ADRESSE] et [B-NP] sont les champs de la
table "Clients"


Luis
-----Message d'origine-----
Bonsoir,
tu peux peut-etre te contenter d'ajouter une case a
cocher dans ton formulaire

client. Cette case aura pour etiquette :
(Adresse de facturation si differente
de



l'adresse principale)
ainsi que la (ou les) zone de texte (Ex: ADRESSEFACT)
pour la saisie

de l'adresse facturation.

Quand cette case est validee, les zones de saisie pour
l'adresse de

facturation
deviennent accessibles.
Pour la mise a jour de la table ADRESSE FACTURATION :
Si la case a cocher est validee
Alors B-ADRESFACTURATION = ADRESSEFACT
Sinon B-ADRESFACTURATION = B-ADRESSEPRINCIPALE



Pour la mise a jour, ajouter du code du genre :
Exemple : 1 zone de texte ADRESSEFACT pour l'adresse
de



facturation


Set MaTable=CurrentDb.OpenRecordset("SELECT * FROM
[ADRESSE FACTURATION]

WHERE NumClient=" & controlnumclient.Value)

If MaTable.BOF and MaTable.EOF then
MaTable.AddNew
MaTable!NumClient=controlnumclient.Vlue
End if
End if
MaTable!B-ADRESFACTURATION=B-ADRESSEPRINCIPALE
If CaseaCocher.Value=True And AdresseFact.Value<>""
Then



MaTable!B-ADRESFACTURATION­RESSEFACT.Value
End if
MaTable.UpDate
MaTable.Close


Bonjour,
Effectivement c'est une solution, mais j'ai une
contreinte


qui m'oblige Ãf faire autrement.
C'est Ãf dire qu'il faut que l'adresse de
facturation




soit
de suite copiÃf©e depuis l'adresse principale et le
faire


avec le bouton Valider, ors si aprÃf©s avoir
enregistrÃf©




une
autre adresse facturation Ãf travers le formulaire
adresse


facturation, il deviendra impossible de faire des
modifications dans le formulaire principal, car la
Validation de la midification se fait avec le
mÃfªme




bouton
valider et lÃf l'adresse saisie depuis le
formulaire




adresse facturation serai Ãf©crasÃf© par celui
contenu




dans le
formulaire principal.
Luis
-----Message d'origine-----
Salut,
Si j ai bien compris ton probleme pour chaque
client





tu
as une adresse principale et une adresse
facturation





qui
peuvent etre les memes ou non.
Personnellement j aurais mis les tables en relation
1-





1
et utiliser une requete d'ajout pour inserer une
adresse



facturation pour un nouveau client et une requete
actualisation en cas de modification.
Puis creer deux boutons dans ton formulaire:
Un qui utilise ton adresse principale pour ta
facturation



ou qui actualiserais les modif. En faisant appel a
tes





requetes d action utilisant la fonction "if": Si l
adresse de facturation existe le code lancera la
requete



d actualisation sinon il lancera celle d'ajout.

L'autre bouton qui te permettrait d en inserer une
differente, donc ouvrirait tout simplement ton
formulaire



en mode nouveau.
C est pas vraiment une reponse directe a ton
probleme





mais j'ai fait a peu pres la meme chose dans une de
mes



BD et ca marche tres bien.
a+

-----Message d'origine-----
Bonjour,
A la crÃf©ation d'un nouveau client dans la
table 'clients',

j'aimerai que l'adresse de la table clients se
copie






directement dans la table 'ADRESSE FACTURATION'.
Si l'adresse de facturation est diffÃf©rente un
formulaire




Facturation permet d'entrer cette adresse dans les
champs

[B-ADRESFACTURATION] et [B-ADRESSEPRINCIPALE], qui
doivent

avoir prioritÃf© par rapport Ãf l'adresse
principale






du
client.

Je rencontre deux problÃf¨mes :
Le premier : si une modif dans l'adresse de la
table






clients est saisie la formule me crÃf©e une
nouvelle






ligne
NClient dans la table 'ADRESSE FACTURATION' au
lieu






de
modifier les valeurs existantes.
Le deuxiÃf¨me problÃf¨me : Si dans la table
facturation






une
adresse a dÃf©jÃf Ãf©tÃf© saisie dans [B-
ADRESFACTURATION] et




que
je fais une modification dans la table clients.
J'ai une erreur d'incompatibilitÃf© de type.

VoilÃf ce que j'ai fais :
Dim CritÃf¨re As String, MaBD As Database,
MaTable As






Recordset

Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("ADRESSE
FACTURATION",




dbOpenDynaset) ' CrÃf©e la feuille de rÃf©ponses
dynamique.




MaTable.MoveFirst ' Recherche la premiÃf¨re
occurrence.






Do Until MaTable.EOF ' Boucle jusqu'Ãf ce qu'il
n'y






ait
plus d'enregistrement correspondant.

TESTER = MaTable!NClient
If TESTER = NClient Then
COMPE = MaTable!Adressedef
If COMPE = Me![B-ADRESSE] Or MaTable![B-
ADRESFACTURATION] Or MaTable![B-ADRESSEPRINCIPALE]
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!Adressedef = [B-ADRESSE]
MaTable!NPdef = [B-NP]

MaTable.Update
MaTable.Close
Else
'matable.Close
End If
Je rencontre deux problÃf¨mes :
Le premier : si une modif dans l'adresse de la
table






clients est saisie la formule me crÃf©e une
nouvelle






ligne
NClient dans la table 'ADRESSE FACTURATION' au
lieu






de
modifier les valeurs existantes.
Le deuxiÃf¨me problÃf¨me : Si dans la table
facturation






une
adresse a dÃf©jÃf Ãf©tÃf© saisie dans [B-
ADRESFACTURATION] et




que
je fais une modification dans la table clients.
J'ai une erreur d'incompatibilitÃf© de type.

Est-ce que quelqu'un peut m'aider Ãf remÃf©dier
Ãf ces






deux
problÃf¨mes ?
Luis

.

.




.




.









Avatar
Ilan
Heu... Oui
Mais si la variable doit contenir les enregistrements de la table Adresse
Facturation
pourquoi ecris-tu :
Set MaTable = CurrentDb.OpenRecordset("SELECT * FROM
CLIENTS WHERE NClient = " & NCLIENT)Set MaTable ce qui correspond aux enregistrements de la table Clients.
Commence par ecrire en francais ce que tu comptes faire puis traduit en

language Visual Basic.
Ce que tu as ecris la, ne veut pas dire gand chose
tu as ecris que si la case a cocher Facturation est Faux alors ajouter un
nouveau
client a la table client avec les champs AdresseDef et NPDef de la table
clients
valent respectivement B-ADRESSE et B-NP puis sortir de la procedure
avant d'enregistrer les modifications.



Bonjour Ilan,
MaTable3 est une faute de frappe, sans faute de frappe
c'est MaTable
MaTable contient la table "AdresseFacturation"
Facturation est le nom de la case à cocher

Effectivement If Facturationúlse Then Exit Sub
est faux mais même comme ça:


If Facturation = False Then
MaTable = ("ADRESSE FACTURATION")

Set MaTable = CurrentDb.OpenRecordset("SELECT * FROM
CLIENTS WHERE NClient = " & NCLIENT)

If MaTable.BOF And MaTable.EOF Then
MaTable.AddNew
MaTable!NCLIENT = NCLIENT

MaTable![Adressedef] = Me.[B-ADRESSE]
MaTable![NPdef] = Me.[B-NP]
Exit Sub
MaTable.Update
MaTable.Close
Else
If Facturation = True Then
Exit Sub
End If
End If
End If
Je ne sais pas si j'ai réussi à expliquer de toutes façons
le code est faux mais où????
Luis

-----Message d'origine-----
Bonjour Luis,
Une case à cocher n'accepte que deux valeurs TRUE et
FALSE.

En fait TRUE et FALSE sont des constantes numeriques.
TRUE (VRAI)= -1 et FALSE (FAUX) = 0

Je ne comprends rien a ton code :
MaTable3 ??? Kezako
MaTable ??? Contient quoi au juste la table Clients ou
la table AdresseFacturation

Tu ajoutes une nouvelle adresse de facturation
systematiquement,

De plus, il y a dans ton code un Exit sub (Sortir de la
procedure) avant

d'avoir enregistrer les modifications apportees a la
table.


ex:
If Facturationúlse Then Exit Sub
MaTable = "ADRESSE FACTURATION"
Set MaTable = CurrentDb.OpenRecordset("SELECT * FROM
CLIENTS WHERE NClient = " & NCLIENT)
If MaTable.BOF And MaTable3.EOF Then
MaTable.AddNew
MaTable!NCLIENT = NCLIENT
MaTable![Adressedef] = Me.[B-ADRESSE]
MaTable![NPdef] = Me.[B-NP]
Exit Sub

MaTable.Update
MaTable.Close
End If
End If
End If
[Adressedef] et [NPdef] sont les champs de la
table "ADRESSE FACTURATION"

[B-ADRESSE] et [B-NP] sont les champs de la
table "Clients"




Bonjour Ilan,
J'ai trouvé ton idée très bonne.
Alors j'ai ajouté une case à cocher avec valeur par
défaut "0" et ajouté un champ à ma table
appelé 'Facturation', comme ça dès que l'on clique
sur


cette case la valeur est "1".
Et j'ai mis ça mais Rien ne se passe:

If Facturation = 0 Then
Exit Sub
Else
If Facturation = 1 Then
MaTable = "ADRESSE FACTURATION"

Set MaTable = CurrentDb.OpenRecordset("SELECT * FROM
CLIENTS WHERE NClient = " & NCLIENT)

If MaTable.BOF And MaTable3.EOF Then
MaTable.AddNew
MaTable!NCLIENT = NCLIENT

MaTable![Adressedef] = Me.[B-ADRESSE]
MaTable![NPdef] = Me.[B-NP]
Exit Sub

MaTable.Update
MaTable.Close
End If
End If
End If
[Adressedef] et [NPdef] sont les champs de la
table "ADRESSE FACTURATION"

[B-ADRESSE] et [B-NP] sont les champs de la
table "Clients"


Luis
-----Message d'origine-----
Bonsoir,
tu peux peut-etre te contenter d'ajouter une case a
cocher dans ton formulaire

client. Cette case aura pour etiquette :
(Adresse de facturation si differente
de



l'adresse principale)
ainsi que la (ou les) zone de texte (Ex: ADRESSEFACT)
pour la saisie

de l'adresse facturation.

Quand cette case est validee, les zones de saisie pour
l'adresse de

facturation
deviennent accessibles.
Pour la mise a jour de la table ADRESSE FACTURATION :
Si la case a cocher est validee
Alors B-ADRESFACTURATION = ADRESSEFACT
Sinon B-ADRESFACTURATION = B-ADRESSEPRINCIPALE



Pour la mise a jour, ajouter du code du genre :
Exemple : 1 zone de texte ADRESSEFACT pour l'adresse
de



facturation


Set MaTable=CurrentDb.OpenRecordset("SELECT * FROM
[ADRESSE FACTURATION]

WHERE NumClient=" & controlnumclient.Value)

If MaTable.BOF and MaTable.EOF then
MaTable.AddNew
MaTable!NumClient=controlnumclient.Vlue
End if
End if
MaTable!B-ADRESFACTURATION=B-ADRESSEPRINCIPALE
If CaseaCocher.Value=True And AdresseFact.Value<>""
Then



MaTable!B-ADRESFACTURATION­RESSEFACT.Value
End if
MaTable.UpDate
MaTable.Close


Bonjour,
Effectivement c'est une solution, mais j'ai une
contreinte


qui m'oblige Ãf faire autrement.
C'est Ãf dire qu'il faut que l'adresse de
facturation




soit
de suite copiÃf©e depuis l'adresse principale et le
faire


avec le bouton Valider, ors si aprÃf©s avoir
enregistrÃf©




une
autre adresse facturation Ãf travers le formulaire
adresse


facturation, il deviendra impossible de faire des
modifications dans le formulaire principal, car la
Validation de la midification se fait avec le
mÃfªme




bouton
valider et lÃf l'adresse saisie depuis le
formulaire




adresse facturation serai Ãf©crasÃf© par celui
contenu




dans le
formulaire principal.
Luis
-----Message d'origine-----
Salut,
Si j ai bien compris ton probleme pour chaque
client





tu
as une adresse principale et une adresse
facturation





qui
peuvent etre les memes ou non.
Personnellement j aurais mis les tables en relation
1-





1
et utiliser une requete d'ajout pour inserer une
adresse



facturation pour un nouveau client et une requete
actualisation en cas de modification.
Puis creer deux boutons dans ton formulaire:
Un qui utilise ton adresse principale pour ta
facturation



ou qui actualiserais les modif. En faisant appel a
tes





requetes d action utilisant la fonction "if": Si l
adresse de facturation existe le code lancera la
requete



d actualisation sinon il lancera celle d'ajout.

L'autre bouton qui te permettrait d en inserer une
differente, donc ouvrirait tout simplement ton
formulaire



en mode nouveau.
C est pas vraiment une reponse directe a ton
probleme





mais j'ai fait a peu pres la meme chose dans une de
mes



BD et ca marche tres bien.
a+

-----Message d'origine-----
Bonjour,
A la crÃf©ation d'un nouveau client dans la
table 'clients',

j'aimerai que l'adresse de la table clients se
copie






directement dans la table 'ADRESSE FACTURATION'.
Si l'adresse de facturation est diffÃf©rente un
formulaire




Facturation permet d'entrer cette adresse dans les
champs

[B-ADRESFACTURATION] et [B-ADRESSEPRINCIPALE], qui
doivent

avoir prioritÃf© par rapport Ãf l'adresse
principale






du
client.

Je rencontre deux problÃf¨mes :
Le premier : si une modif dans l'adresse de la
table






clients est saisie la formule me crÃf©e une
nouvelle






ligne
NClient dans la table 'ADRESSE FACTURATION' au
lieu






de
modifier les valeurs existantes.
Le deuxiÃf¨me problÃf¨me : Si dans la table
facturation






une
adresse a dÃf©jÃf Ãf©tÃf© saisie dans [B-
ADRESFACTURATION] et




que
je fais une modification dans la table clients.
J'ai une erreur d'incompatibilitÃf© de type.

VoilÃf ce que j'ai fais :
Dim CritÃf¨re As String, MaBD As Database,
MaTable As






Recordset

Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("ADRESSE
FACTURATION",




dbOpenDynaset) ' CrÃf©e la feuille de rÃf©ponses
dynamique.




MaTable.MoveFirst ' Recherche la premiÃf¨re
occurrence.






Do Until MaTable.EOF ' Boucle jusqu'Ãf ce qu'il
n'y






ait
plus d'enregistrement correspondant.

TESTER = MaTable!NClient
If TESTER = NClient Then
COMPE = MaTable!Adressedef
If COMPE = Me![B-ADRESSE] Or MaTable![B-
ADRESFACTURATION] Or MaTable![B-ADRESSEPRINCIPALE]
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!Adressedef = [B-ADRESSE]
MaTable!NPdef = [B-NP]

MaTable.Update
MaTable.Close
Else
'matable.Close
End If
Je rencontre deux problÃf¨mes :
Le premier : si une modif dans l'adresse de la
table






clients est saisie la formule me crÃf©e une
nouvelle






ligne
NClient dans la table 'ADRESSE FACTURATION' au
lieu






de
modifier les valeurs existantes.
Le deuxiÃf¨me problÃf¨me : Si dans la table
facturation






une
adresse a dÃf©jÃf Ãf©tÃf© saisie dans [B-
ADRESFACTURATION] et




que
je fais une modification dans la table clients.
J'ai une erreur d'incompatibilitÃf© de type.

Est-ce que quelqu'un peut m'aider Ãf remÃf©dier
Ãf ces






deux
problÃf¨mes ?
Luis

.

.




.




.












Avatar
Luis
Oups!!!!,
Effectivement c'est dans la table 'ADRESSE FACTURATION'
que je veux écrire.
Pour le reste c'est exactement ce que je veux faire, c'est
à dire que si la case Facturation est Faux c'est l'adresse
par défaut inscrite dans la table clients qui doit
s'écrire dans la table facturation. Si la case Facturation
est Vrai rien ne doit s'écrire depuis la table clients et
c'est à partir d'un formulaire indépendant 'Saisie Adresse
facturation' que l'on rentre l'adresse facturation.
J'ai modifié le code comme ça (je fais du copier/coller
pour ne pas faire d'erreurs), maintenant l'écriture dans
la table facturation se fait, mais si je modifie l'adresse
dans la table clients, la modification n'écrase pas
l'ancienne saisie dans la table ADRESSE FACTURATION.
If Facturation = False Then
MaTable = ("ADRESSE FACTURATION")

Set MaTable = CurrentDb.OpenRecordset("SELECT * FROM
[ADRESSE FACTURATION] WHERE NClient = " & Me.NCLIENT)

If MaTable.BOF And MaTable.EOF Then
MaTable.AddNew
MaTable!NCLIENT = NCLIENT

MaTable![Adressedef] = Me.[B-ADRESSE]
MaTable![NPdef] = Me.[B-NP]
MaTable.Update
MaTable.Close
Else
If Facturation = True Then
Exit Sub
End If
End If
End If

Luis
-----Message d'origine-----
Heu... Oui
Mais si la variable doit contenir les enregistrements de
la table Adresse

Facturation
pourquoi ecris-tu :
Set MaTable = CurrentDb.OpenRecordset("SELECT * FROM
CLIENTS WHERE NClient = " & NCLIENT)Set MaTable=
ce qui correspond aux enregistrements de la table Clients.

Commence par ecrire en francais ce que tu comptes faire
puis traduit en

language Visual Basic.
Ce que tu as ecris la, ne veut pas dire gand chose
tu as ecris que si la case a cocher Facturation est Faux
alors ajouter un

nouveau
client a la table client avec les champs AdresseDef et
NPDef de la table

clients
valent respectivement B-ADRESSE et B-NP puis sortir de la
procedure

avant d'enregistrer les modifications.



Bonjour Ilan,
MaTable3 est une faute de frappe, sans faute de frappe
c'est MaTable
MaTable contient la table "AdresseFacturation"
Facturation est le nom de la case à cocher

Effectivement If Facturationúlse Then Exit Sub
est faux mais même comme ça:


If Facturation = False Then
MaTable = ("ADRESSE FACTURATION")

Set MaTable = CurrentDb.OpenRecordset("SELECT * FROM
CLIENTS WHERE NClient = " & NCLIENT)

If MaTable.BOF And MaTable.EOF Then
MaTable.AddNew
MaTable!NCLIENT = NCLIENT

MaTable![Adressedef] = Me.[B-ADRESSE]
MaTable![NPdef] = Me.[B-NP]
Exit Sub
MaTable.Update
MaTable.Close
Else
If Facturation = True Then
Exit Sub
End If
End If
End If
Je ne sais pas si j'ai réussi à expliquer de toutes
façons


le code est faux mais où????
Luis

-----Message d'origine-----
Bonjour Luis,
Une case Ãf cocher n'accepte que deux valeurs TRUE et
FALSE.

En fait TRUE et FALSE sont des constantes numeriques.
TRUE (VRAI)= -1 et FALSE (FAUX) = 0

Je ne comprends rien a ton code :
MaTable3 ??? Kezako
MaTable ??? Contient quoi au juste la table Clients ou
la table AdresseFacturation

Tu ajoutes une nouvelle adresse de facturation
systematiquement,

De plus, il y a dans ton code un Exit sub (Sortir de
la



procedure) avant
d'avoir enregistrer les modifications apportees a la
table.


ex:
If Facturationúlse Then Exit Sub
MaTable = "ADRESSE FACTURATION"
Set MaTable = CurrentDb.OpenRecordset("SELECT * FROM
CLIENTS WHERE NClient = " & NCLIENT)
If MaTable.BOF And MaTable3.EOF Then
MaTable.AddNew
MaTable!NCLIENT = NCLIENT
MaTable![Adressedef] = Me.[B-ADRESSE]
MaTable![NPdef] = Me.[B-NP]
Exit Sub

MaTable.Update
MaTable.Close
End If
End If
End If
[Adressedef] et [NPdef] sont les champs de la
table "ADRESSE FACTURATION"

[B-ADRESSE] et [B-NP] sont les champs de la
table "Clients"




Bonjour Ilan,
J'ai trouvÃf© ton idÃf©e trÃf¨s bonne.
Alors j'ai ajoutÃf© une case Ãf cocher avec valeur
par




dÃf©faut "0" et ajoutÃf© un champ Ãf ma table
appelÃf© 'Facturation', comme Ãf§a dÃf¨s que l'on
clique




sur
cette case la valeur est "1".
Et j'ai mis Ãf§a mais Rien ne se passe:

If Facturation = 0 Then
Exit Sub
Else
If Facturation = 1 Then
MaTable = "ADRESSE FACTURATION"

Set MaTable = CurrentDb.OpenRecordset("SELECT * FROM
CLIENTS WHERE NClient = " & NCLIENT)

If MaTable.BOF And MaTable3.EOF Then
MaTable.AddNew
MaTable!NCLIENT = NCLIENT

MaTable![Adressedef] = Me.[B-ADRESSE]
MaTable![NPdef] = Me.[B-NP]
Exit Sub

MaTable.Update
MaTable.Close
End If
End If
End If
[Adressedef] et [NPdef] sont les champs de la
table "ADRESSE FACTURATION"

[B-ADRESSE] et [B-NP] sont les champs de la
table "Clients"


Luis
-----Message d'origine-----
Bonsoir,
tu peux peut-etre te contenter d'ajouter une case a
cocher dans ton formulaire

client. Cette case aura pour etiquette :
(Adresse de facturation si
differente





de
l'adresse principale)
ainsi que la (ou les) zone de texte (Ex:
ADRESSEFACT)





pour la saisie
de l'adresse facturation.

Quand cette case est validee, les zones de saisie
pour





l'adresse de
facturation
deviennent accessibles.
Pour la mise a jour de la table ADRESSE
FACTURATION :





Si la case a cocher est validee
Alors B-ADRESFACTURATION = ADRESSEFACT
Sinon B-ADRESFACTURATION = B-ADRESSEPRINCIPALE



Pour la mise a jour, ajouter du code du genre :
Exemple : 1 zone de texte ADRESSEFACT pour
l'adresse





de
facturation


Set MaTable=CurrentDb.OpenRecordset("SELECT * FROM
[ADRESSE FACTURATION]

WHERE NumClient=" & controlnumclient.Value)

If MaTable.BOF and MaTable.EOF then
MaTable.AddNew
MaTable!NumClient=controlnumclient.Vlue
End if
End if
MaTable!B-ADRESFACTURATION=B-ADRESSEPRINCIPALE
If CaseaCocher.Value=True And
AdresseFact.Value<>""





Then
MaTable!B-ADRESFACTURATION­RESSEFACT.Value
End if
MaTable.UpDate
MaTable.Close


Bonjour,
Effectivement c'est une solution, mais j'ai une
contreinte


qui m'oblige Ãff faire autrement.
C'est Ãff dire qu'il faut que l'adresse de
facturation




soit
de suite copiÃffÃ,©e depuis l'adresse principale
et le






faire
avec le bouton Valider, ors si aprÃffÃ,©s avoir
enregistrÃffÃ,©




une
autre adresse facturation Ãff travers le
formulaire






adresse
facturation, il deviendra impossible de faire des
modifications dans le formulaire principal, car
la






Validation de la midification se fait avec le
mÃffÃ,ªme




bouton
valider et lÃff l'adresse saisie depuis le
formulaire




adresse facturation serai ÃffÃ,©crasÃffÃ,© par
celui






contenu
dans le
formulaire principal.
Luis
-----Message d'origine-----
Salut,
Si j ai bien compris ton probleme pour chaque
client





tu
as une adresse principale et une adresse
facturation





qui
peuvent etre les memes ou non.
Personnellement j aurais mis les tables en
relation







1-
1
et utiliser une requete d'ajout pour inserer une
adresse



facturation pour un nouveau client et une
requete







actualisation en cas de modification.
Puis creer deux boutons dans ton formulaire:
Un qui utilise ton adresse principale pour ta
facturation



ou qui actualiserais les modif. En faisant appel
a







tes
requetes d action utilisant la fonction "if": Si
l







adresse de facturation existe le code lancera la
requete



d actualisation sinon il lancera celle d'ajout.

L'autre bouton qui te permettrait d en inserer
une







differente, donc ouvrirait tout simplement ton
formulaire



en mode nouveau.
C est pas vraiment une reponse directe a ton
probleme





mais j'ai fait a peu pres la meme chose dans une
de







mes
BD et ca marche tres bien.
a+

-----Message d'origine-----
Bonjour,
A la crÃffÃ,©ation d'un nouveau client dans la
table 'clients',

j'aimerai que l'adresse de la table clients se
copie






directement dans la table 'ADRESSE FACTURATION'.
Si l'adresse de facturation est
diffÃffÃ,©rente un








formulaire
Facturation permet d'entrer cette adresse dans
les








champs
[B-ADRESFACTURATION] et [B-ADRESSEPRINCIPALE],
qui








doivent
avoir prioritÃffÃ,© par rapport Ãff l'adresse
principale






du
client.

Je rencontre deux problÃffÃ,¨mes :
Le premier : si une modif dans l'adresse de la
table






clients est saisie la formule me crÃffÃ,©e une
nouvelle






ligne
NClient dans la table 'ADRESSE FACTURATION' au
lieu






de
modifier les valeurs existantes.
Le deuxiÃffÃ,¨me problÃffÃ,¨me : Si dans la
table








facturation
une
adresse a dÃffÃ,©jÃff ÃffÃ,©tÃffÃ,© saisie
dans [B-








ADRESFACTURATION] et
que
je fais une modification dans la table clients.
J'ai une erreur d'incompatibilitÃffÃ,© de type.

VoilÃff ce que j'ai fais :
Dim CritÃffÃ,¨re As String, MaBD As Database,
MaTable As






Recordset

Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("ADRESSE
FACTURATION",




dbOpenDynaset) ' CrÃffÃ,©e la feuille de
rÃffÃ,©ponses








dynamique.
MaTable.MoveFirst ' Recherche la premiÃffÃ,¨re
occurrence.






Do Until MaTable.EOF ' Boucle jusqu'Ãff ce
qu'il








n'y
ait
plus d'enregistrement correspondant.

TESTER = MaTable!NClient
If TESTER = NClient Then
COMPE = MaTable!Adressedef
If COMPE = Me![B-ADRESSE] Or MaTable![B-
ADRESFACTURATION] Or MaTable![B-
ADRESSEPRINCIPALE]








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!Adressedef = [B-ADRESSE]
MaTable!NPdef = [B-NP]

MaTable.Update
MaTable.Close
Else
'matable.Close
End If
Je rencontre deux problÃffÃ,¨mes :
Le premier : si une modif dans l'adresse de la
table






clients est saisie la formule me crÃffÃ,©e une
nouvelle






ligne
NClient dans la table 'ADRESSE FACTURATION' au
lieu






de
modifier les valeurs existantes.
Le deuxiÃffÃ,¨me problÃffÃ,¨me : Si dans la
table








facturation
une
adresse a dÃffÃ,©jÃff ÃffÃ,©tÃffÃ,© saisie
dans [B-








ADRESFACTURATION] et
que
je fais une modification dans la table clients.
J'ai une erreur d'incompatibilitÃffÃ,© de type.

Est-ce que quelqu'un peut m'aider Ãff
remÃffÃ,©dier








Ãff ces
deux
problÃffÃ,¨mes ?
Luis

.

.




.




.




.