OVH Cloud OVH Cloud

Copier données d'un formulaire dans une table

9 réponses
Avatar
Luis
Bonjour,
J'aimerai copier les données dans les champs: [Code_intermédiaire] et
[NomSociété]
d'un formulaire dans les champs: [CODE] et [AGENCE] de la table "Clients"
qui contient déjà des clients (les champs: [CODE] et [AGENCE] de la table
"clients" sont vides).

J'ai fait ceci sour le clic du bouton du formulaire, mais la saisie se fait
e ajout des clients existants.
J'aimerai que la copie se fasse dans les champs vides [CODE] et [AGENCE]
pour les clients existants.

Comment dois-je modifier mon Code?

Merci pour vos précieux renseignements.
Luis

9 réponses

Avatar
J-Pierre
Bonjour,

Sur évènement après MAJ de tes champs [Code_intermédiaire] et [NomSociété], un peu de code VBA:
Me.code = me.Code_intermédiaire
Me.agence = Me.NomSociété

J-Pierre


"Luis" a écrit dans le message de news:
Bonjour,
J'aimerai copier les données dans les champs: [Code_intermédiaire] et
[NomSociété]
d'un formulaire dans les champs: [CODE] et [AGENCE] de la table "Clients"
qui contient déjà des clients (les champs: [CODE] et [AGENCE] de la table
"clients" sont vides).

J'ai fait ceci sour le clic du bouton du formulaire, mais la saisie se fait
e ajout des clients existants.
J'aimerai que la copie se fasse dans les champs vides [CODE] et [AGENCE]
pour les clients existants.

Comment dois-je modifier mon Code?

Merci pour vos précieux renseignements.
Luis


Avatar
Luis
Bonjour,
Visiblement j'avais oublié de mettre le code quî ne marche pas:
NUMCLIENT = NCLIENT
CAT1 = Me.Code_intermédiaire
CAT2 = Me.NomSociété
Dim Critère As String, MaBD As Database, MaTable As Recordset
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("Clients", dbOpenDynaset) ' 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
COMPE = MaTable![CODE]
If COMPE = CAT1 Then
TROUVE = 1
Exit Do
Else
TROUVE = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If TROUVE = 0 Then
MaTable.AddNew
If TESTER = NUMCLIENT Then
MaTable![CODE] = CAT1
MaTable!AGENCE = CAT2
MaTable.Update
MaTable.Close
'Else
'MaTable.Close
End If
End If
Merci.
Luis


Bonjour,

Sur évènement après MAJ de tes champs [Code_intermédiaire] et [NomSociété], un peu de code VBA:
Me.code = me.Code_intermédiaire
Me.agence = Me.NomSociété

J-Pierre


"Luis" a écrit dans le message de news:
Bonjour,
J'aimerai copier les données dans les champs: [Code_intermédiaire] et
[NomSociété]
d'un formulaire dans les champs: [CODE] et [AGENCE] de la table "Clients"
qui contient déjà des clients (les champs: [CODE] et [AGENCE] de la table
"clients" sont vides).

J'ai fait ceci sour le clic du bouton du formulaire, mais la saisie se fait
e ajout des clients existants.
J'aimerai que la copie se fasse dans les champs vides [CODE] et [AGENCE]
pour les clients existants.

Comment dois-je modifier mon Code?

Merci pour vos précieux renseignements.
Luis







Avatar
J-Pierre
Salut Luis,

Apparement, tu inséres une ligne dans la table client, mais pour analyser ton code, ce serait bien de savoir précisement ce que tu
veux faire :-)
Ton premier post n'est pas très clair....

Si tu veux mettre à jour ta table client, il faut remplacer
MaTable.AddNew
par
MaTable.Edit

Mais il ne semble que ce serait plus simple d'exécuter une requête MAJ (ou insertion ?), peut-être paramétrée, j'ai aussi
l'impression que ton code ne met qu'un seul client à jour.

J-Pierre

"Luis" a écrit dans le message de news:
Bonjour,
Visiblement j'avais oublié de mettre le code quî ne marche pas:
NUMCLIENT = NCLIENT
CAT1 = Me.Code_intermédiaire
CAT2 = Me.NomSociété
Dim Critère As String, MaBD As Database, MaTable As Recordset
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("Clients", dbOpenDynaset) ' 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
COMPE = MaTable![CODE]
If COMPE = CAT1 Then
TROUVE = 1
Exit Do
Else
TROUVE = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If TROUVE = 0 Then
MaTable.AddNew
If TESTER = NUMCLIENT Then
MaTable![CODE] = CAT1
MaTable!AGENCE = CAT2
MaTable.Update
MaTable.Close
'Else
'MaTable.Close
End If
End If
Merci.
Luis


Bonjour,

Sur évènement après MAJ de tes champs [Code_intermédiaire] et [NomSociété], un peu de code VBA:
Me.code = me.Code_intermédiaire
Me.agence = Me.NomSociété

J-Pierre


"Luis" a écrit dans le message de news:
Bonjour,
J'aimerai copier les données dans les champs: [Code_intermédiaire] et
[NomSociété]
d'un formulaire dans les champs: [CODE] et [AGENCE] de la table "Clients"
qui contient déjà des clients (les champs: [CODE] et [AGENCE] de la table
"clients" sont vides).

J'ai fait ceci sour le clic du bouton du formulaire, mais la saisie se fait
e ajout des clients existants.
J'aimerai que la copie se fasse dans les champs vides [CODE] et [AGENCE]
pour les clients existants.

Comment dois-je modifier mon Code?

Merci pour vos précieux renseignements.
Luis









Avatar
Luis
Bonjour,
Effectivement il ne rajoute qu'un seul client.

En changeant MaTable.AddNew par MaTable.Edit j'ai une erreur:

Erreur d’exécution ‘3021’

Aucun enregistrement en cours

Je ne sais pas faire des requêtes MAJ (ou insertion).

Pour bien faire il faudrais faire un module fonction.

Si tu peux m'aider à trouver la bonne solution.
Merci encore.
Luis


Salut Luis,

Apparement, tu inséres une ligne dans la table client, mais pour analyser ton code, ce serait bien de savoir précisement ce que tu
veux faire :-)
Ton premier post n'est pas très clair....

Si tu veux mettre à jour ta table client, il faut remplacer
MaTable.AddNew
par
MaTable.Edit

Mais il ne semble que ce serait plus simple d'exécuter une requête MAJ (ou insertion ?), peut-être paramétrée, j'ai aussi
l'impression que ton code ne met qu'un seul client à jour.

J-Pierre

"Luis" a écrit dans le message de news:
Bonjour,
Visiblement j'avais oublié de mettre le code quî ne marche pas:
NUMCLIENT = NCLIENT
CAT1 = Me.Code_intermédiaire
CAT2 = Me.NomSociété
Dim Critère As String, MaBD As Database, MaTable As Recordset
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("Clients", dbOpenDynaset) ' 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
COMPE = MaTable![CODE]
If COMPE = CAT1 Then
TROUVE = 1
Exit Do
Else
TROUVE = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If TROUVE = 0 Then
MaTable.AddNew
If TESTER = NUMCLIENT Then
MaTable![CODE] = CAT1
MaTable!AGENCE = CAT2
MaTable.Update
MaTable.Close
'Else
'MaTable.Close
End If
End If
Merci.
Luis


Bonjour,

Sur évènement après MAJ de tes champs [Code_intermédiaire] et [NomSociété], un peu de code VBA:
Me.code = me.Code_intermédiaire
Me.agence = Me.NomSociété

J-Pierre


"Luis" a écrit dans le message de news:
Bonjour,
J'aimerai copier les données dans les champs: [Code_intermédiaire] et
[NomSociété]
d'un formulaire dans les champs: [CODE] et [AGENCE] de la table "Clients"
qui contient déjà des clients (les champs: [CODE] et [AGENCE] de la table
"clients" sont vides).

J'ai fait ceci sour le clic du bouton du formulaire, mais la saisie se fait
e ajout des clients existants.
J'aimerai que la copie se fasse dans les champs vides [CODE] et [AGENCE]
pour les clients existants.

Comment dois-je modifier mon Code?

Merci pour vos précieux renseignements.
Luis














Avatar
J-Pierre
Bonjour,

Ton problème ne semble pas bien compliqué, mais ce que tu veux faire n'est pas très clair. Je reprends ton premier post:

J'aimerai copier les données dans les champs: [Code_intermédiaire] et [NomSociété]
d'un formulaire dans les champs: [CODE] et [AGENCE] de la table "Clients"
qui contient déjà des clients (les champs: [CODE] et [AGENCE] de la table
"clients" sont vides).


Là, c'est clair, mais veux-tu mettre tous les clients de ta table à jour ? Si non, quels sont les critères de sélection (quels
clients veux-tu mettre à jour) ? En particulier, veux-tu mettre à jour seulement ceux dont le CODE et/ou l'AGENCE sont nuls ?

J'ai fait ceci sour le clic du bouton du formulaire, mais la saisie se fait
e ajout des clients existants.
J'aimerai que la copie se fasse dans les champs vides [CODE] et [AGENCE]
pour les clients existants.


Là, ton doigt a glissé.......Je suppose que tu expliques ce qui ne marche pas. Tu voulais dire quoi ?

J-Pierre

PS: Ce serait bien d'apprendre à faire des requêtes MAJ et INSERTION avant de te lancer dans du développement, c'est le B A
BA.....et finalement, c'est beaucoup plus simple que du code VBA qui manipule des recordSets.

"Luis" a écrit dans le message de news:
Bonjour,
Effectivement il ne rajoute qu'un seul client.

En changeant MaTable.AddNew par MaTable.Edit j'ai une erreur:

Erreur d'exécution '3021'

Aucun enregistrement en cours

Je ne sais pas faire des requêtes MAJ (ou insertion).

Pour bien faire il faudrais faire un module fonction.

Si tu peux m'aider à trouver la bonne solution.
Merci encore.
Luis


Salut Luis,

Apparement, tu inséres une ligne dans la table client, mais pour analyser ton code, ce serait bien de savoir précisement ce que
tu
veux faire :-)
Ton premier post n'est pas très clair....

Si tu veux mettre à jour ta table client, il faut remplacer
MaTable.AddNew
par
MaTable.Edit

Mais il ne semble que ce serait plus simple d'exécuter une requête MAJ (ou insertion ?), peut-être paramétrée, j'ai aussi
l'impression que ton code ne met qu'un seul client à jour.

J-Pierre

"Luis" a écrit dans le message de news:
Bonjour,
Visiblement j'avais oublié de mettre le code quî ne marche pas:
NUMCLIENT = NCLIENT
CAT1 = Me.Code_intermédiaire
CAT2 = Me.NomSociété
Dim Critère As String, MaBD As Database, MaTable As Recordset
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("Clients", dbOpenDynaset) ' 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
COMPE = MaTable![CODE]
If COMPE = CAT1 Then
TROUVE = 1
Exit Do
Else
TROUVE = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If TROUVE = 0 Then
MaTable.AddNew
If TESTER = NUMCLIENT Then
MaTable![CODE] = CAT1
MaTable!AGENCE = CAT2
MaTable.Update
MaTable.Close
'Else
'MaTable.Close
End If
End If
Merci.
Luis


Bonjour,

Sur évènement après MAJ de tes champs [Code_intermédiaire] et [NomSociété], un peu de code VBA:
Me.code = me.Code_intermédiaire
Me.agence = Me.NomSociété

J-Pierre


"Luis" a écrit dans le message de news:
Bonjour,
J'aimerai copier les données dans les champs: [Code_intermédiaire] et
[NomSociété]
d'un formulaire dans les champs: [CODE] et [AGENCE] de la table "Clients"
qui contient déjà des clients (les champs: [CODE] et [AGENCE] de la table
"clients" sont vides).

J'ai fait ceci sour le clic du bouton du formulaire, mais la saisie se fait
e ajout des clients existants.
J'aimerai que la copie se fasse dans les champs vides [CODE] et [AGENCE]
pour les clients existants.

Comment dois-je modifier mon Code?

Merci pour vos précieux renseignements.
Luis
















Avatar
Luis
Bonjour,

J'ai fait ceci sour le clic du bouton du formulaire, mais la saisie se fait
e ajout des clients existants.
J'aimerai que la copie se fasse dans les champs vides [CODE] et [AGENCE]
pour les clients existants.
Voilà ce que je voulais dire :


Sur clic Bouton j’ai mis ce code :
NUMCLIENT = NCLIENT
CAT1 = Me.Code_intermédiaire
CAT2 = Me.NomSociété
Dim Critère As String, MaBD As Database, MaTable As Recordset
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("Clients", dbOpenDynaset) ' 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
COMPE = MaTable![CODE]
If COMPE = CAT1 Then
TROUVE = 1
Exit Do
Else
TROUVE = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If TROUVE = 0 Then
MaTable.AddNew
If TESTER = NUMCLIENT Then
MaTable![CODE] = CAT1
MaTable!AGENCE = CAT2
MaTable.Update
MaTable.Close
End If
End If

Ne se fait pas sur les clients existants, mais en ajoute des nouveaux.

Si non, quels sont les critères de sélection (quels
clients veux-tu mettre à jour) ? En particulier, veux-tu mettre à jour > seulement ceux dont le CODE et/ou l'AGENCE sont nuls ?


Je veux mettre à jours tous les clients dont CODE et AGENCE sont nuls.

Merci pour ta gentillesse.
Luis

PS : je n’ai jamais compris le fonctionnement des requêtes action.




Bonjour,

Ton problème ne semble pas bien compliqué, mais ce que tu veux faire n'est pas très clair. Je reprends ton premier post:

J'aimerai copier les données dans les champs: [Code_intermédiaire] et [NomSociété]
d'un formulaire dans les champs: [CODE] et [AGENCE] de la table "Clients"
qui contient déjà des clients (les champs: [CODE] et [AGENCE] de la table
"clients" sont vides).


Là, c'est clair, mais veux-tu mettre tous les clients de ta table à jour ? Si non, quels sont les critères de sélection (quels
clients veux-tu mettre à jour) ? En particulier, veux-tu mettre à jour seulement ceux dont le CODE et/ou l'AGENCE sont nuls ?

J'ai fait ceci sour le clic du bouton du formulaire, mais la saisie se fait
e ajout des clients existants.
J'aimerai que la copie se fasse dans les champs vides [CODE] et [AGENCE]
pour les clients existants.


Là, ton doigt a glissé.......Je suppose que tu expliques ce qui ne marche pas. Tu voulais dire quoi ?

J-Pierre

PS: Ce serait bien d'apprendre à faire des requêtes MAJ et INSERTION avant de te lancer dans du développement, c'est le B A
BA.....et finalement, c'est beaucoup plus simple que du code VBA qui manipule des recordSets.

"Luis" a écrit dans le message de news:
Bonjour,
Effectivement il ne rajoute qu'un seul client.

En changeant MaTable.AddNew par MaTable.Edit j'ai une erreur:

Erreur d'exécution '3021'

Aucun enregistrement en cours

Je ne sais pas faire des requêtes MAJ (ou insertion).

Pour bien faire il faudrais faire un module fonction.

Si tu peux m'aider à trouver la bonne solution.
Merci encore.
Luis


Salut Luis,

Apparement, tu inséres une ligne dans la table client, mais pour analyser ton code, ce serait bien de savoir précisement ce que
tu
veux faire :-)
Ton premier post n'est pas très clair....

Si tu veux mettre à jour ta table client, il faut remplacer
MaTable.AddNew
par
MaTable.Edit

Mais il ne semble que ce serait plus simple d'exécuter une requête MAJ (ou insertion ?), peut-être paramétrée, j'ai aussi
l'impression que ton code ne met qu'un seul client à jour.

J-Pierre

"Luis" a écrit dans le message de news:
Bonjour,
Visiblement j'avais oublié de mettre le code quî ne marche pas:
NUMCLIENT = NCLIENT
CAT1 = Me.Code_intermédiaire
CAT2 = Me.NomSociété
Dim Critère As String, MaBD As Database, MaTable As Recordset
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("Clients", dbOpenDynaset) ' 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
COMPE = MaTable![CODE]
If COMPE = CAT1 Then
TROUVE = 1
Exit Do
Else
TROUVE = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If TROUVE = 0 Then
MaTable.AddNew
If TESTER = NUMCLIENT Then
MaTable![CODE] = CAT1
MaTable!AGENCE = CAT2
MaTable.Update
MaTable.Close
'Else
'MaTable.Close
End If
End If
Merci.
Luis


Bonjour,

Sur évènement après MAJ de tes champs [Code_intermédiaire] et [NomSociété], un peu de code VBA:
Me.code = me.Code_intermédiaire
Me.agence = Me.NomSociété

J-Pierre


"Luis" a écrit dans le message de news:
Bonjour,
J'aimerai copier les données dans les champs: [Code_intermédiaire] et
[NomSociété]
d'un formulaire dans les champs: [CODE] et [AGENCE] de la table "Clients"
qui contient déjà des clients (les champs: [CODE] et [AGENCE] de la table
"clients" sont vides).

J'ai fait ceci sour le clic du bouton du formulaire, mais la saisie se fait
e ajout des clients existants.
J'aimerai que la copie se fasse dans les champs vides [CODE] et [AGENCE]
pour les clients existants.

Comment dois-je modifier mon Code?

Merci pour vos précieux renseignements.
Luis





















Avatar
J-Pierre
Luis,

Il est inutile de recopier tout ton code, ta simple phrase

Je veux mettre à jours tous les clients dont CODE et AGENCE sont nuls.

est beaucoup plus claire, et puis, débugger le code des autres n'est pas mon activité préférée :-))))


Je te donne la solution avec une requête de MAJ, car je pense que faire ça par code VBA est une hérésie, mais si tu insistes pour le
faire par code, il y aura sûrement des gens qui vont t'aider :-)

Sur clic de ton bouton, tu vas exécuter une requête de MAJ:

DoCmd.SetWarnings False
DoCmd.OpenQuery "maProcedureDeMAJ", acNormal, acEdit
DoCmd.Close acQuery, "maProcedureDeMAJ"
DoCmd.SetWarnings True

Pour la requête, tu crées un nouvelle requête, tu n'ajoutes pas de table, tu passes en mode SQL (le bouton affichage à gauche), et
tu copies ce code:
UPDATE [maTable] SET CODE = [Forms]![Formulaire1]![Code_intermédiaire], AGENCE = [Forms]![Formulaire1]![NomSociété]
WHERE Not (CODE Is Null) AND Not (AGENCE Is Null);

Et tu remplaces le nom des tables et champs par les tiens, et tu repasses en mode création.

Encore un point: Dans ce cas, seules les clients dont le code ET l'agence sont nuls sont MAJ, faudra peut-être adapter.

J-Pierre




"Luis" a écrit dans le message de news:
Bonjour,

J'ai fait ceci sour le clic du bouton du formulaire, mais la saisie se fait
e ajout des clients existants.
J'aimerai que la copie se fasse dans les champs vides [CODE] et [AGENCE]
pour les clients existants.
Voilà ce que je voulais dire :


Sur clic Bouton j'ai mis ce code :
NUMCLIENT = NCLIENT
CAT1 = Me.Code_intermédiaire
CAT2 = Me.NomSociété
Dim Critère As String, MaBD As Database, MaTable As Recordset
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("Clients", dbOpenDynaset) ' 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
COMPE = MaTable![CODE]
If COMPE = CAT1 Then
TROUVE = 1
Exit Do
Else
TROUVE = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If TROUVE = 0 Then
MaTable.AddNew
If TESTER = NUMCLIENT Then
MaTable![CODE] = CAT1
MaTable!AGENCE = CAT2
MaTable.Update
MaTable.Close
End If
End If

Ne se fait pas sur les clients existants, mais en ajoute des nouveaux.

Si non, quels sont les critères de sélection (quels
clients veux-tu mettre à jour) ? En particulier, veux-tu mettre à jour > seulement ceux dont le CODE et/ou l'AGENCE sont nuls ?


Je veux mettre à jours tous les clients dont CODE et AGENCE sont nuls.

Merci pour ta gentillesse.
Luis

PS : je n'ai jamais compris le fonctionnement des requêtes action.




Bonjour,

Ton problème ne semble pas bien compliqué, mais ce que tu veux faire n'est pas très clair. Je reprends ton premier post:

J'aimerai copier les données dans les champs: [Code_intermédiaire] et [NomSociété]
d'un formulaire dans les champs: [CODE] et [AGENCE] de la table "Clients"
qui contient déjà des clients (les champs: [CODE] et [AGENCE] de la table
"clients" sont vides).


Là, c'est clair, mais veux-tu mettre tous les clients de ta table à jour ? Si non, quels sont les critères de sélection (quels
clients veux-tu mettre à jour) ? En particulier, veux-tu mettre à jour seulement ceux dont le CODE et/ou l'AGENCE sont nuls ?

J'ai fait ceci sour le clic du bouton du formulaire, mais la saisie se fait
e ajout des clients existants.
J'aimerai que la copie se fasse dans les champs vides [CODE] et [AGENCE]
pour les clients existants.


Là, ton doigt a glissé.......Je suppose que tu expliques ce qui ne marche pas. Tu voulais dire quoi ?

J-Pierre

PS: Ce serait bien d'apprendre à faire des requêtes MAJ et INSERTION avant de te lancer dans du développement, c'est le B A
BA.....et finalement, c'est beaucoup plus simple que du code VBA qui manipule des recordSets.

"Luis" a écrit dans le message de news:
Bonjour,
Effectivement il ne rajoute qu'un seul client.

En changeant MaTable.AddNew par MaTable.Edit j'ai une erreur:

Erreur d'exécution '3021'

Aucun enregistrement en cours

Je ne sais pas faire des requêtes MAJ (ou insertion).

Pour bien faire il faudrais faire un module fonction.

Si tu peux m'aider à trouver la bonne solution.
Merci encore.
Luis


Salut Luis,

Apparement, tu inséres une ligne dans la table client, mais pour analyser ton code, ce serait bien de savoir précisement ce
que
tu
veux faire :-)
Ton premier post n'est pas très clair....

Si tu veux mettre à jour ta table client, il faut remplacer
MaTable.AddNew
par
MaTable.Edit

Mais il ne semble que ce serait plus simple d'exécuter une requête MAJ (ou insertion ?), peut-être paramétrée, j'ai aussi
l'impression que ton code ne met qu'un seul client à jour.

J-Pierre

"Luis" a écrit dans le message de news:
Bonjour,
Visiblement j'avais oublié de mettre le code quî ne marche pas:
NUMCLIENT = NCLIENT
CAT1 = Me.Code_intermédiaire
CAT2 = Me.NomSociété
Dim Critère As String, MaBD As Database, MaTable As Recordset
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("Clients", dbOpenDynaset) ' 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
COMPE = MaTable![CODE]
If COMPE = CAT1 Then
TROUVE = 1
Exit Do
Else
TROUVE = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If TROUVE = 0 Then
MaTable.AddNew
If TESTER = NUMCLIENT Then
MaTable![CODE] = CAT1
MaTable!AGENCE = CAT2
MaTable.Update
MaTable.Close
'Else
'MaTable.Close
End If
End If
Merci.
Luis


Bonjour,

Sur évènement après MAJ de tes champs [Code_intermédiaire] et [NomSociété], un peu de code VBA:
Me.code = me.Code_intermédiaire
Me.agence = Me.NomSociété

J-Pierre


"Luis" a écrit dans le message de news:

Bonjour,
J'aimerai copier les données dans les champs: [Code_intermédiaire] et
[NomSociété]
d'un formulaire dans les champs: [CODE] et [AGENCE] de la table "Clients"
qui contient déjà des clients (les champs: [CODE] et [AGENCE] de la table
"clients" sont vides).

J'ai fait ceci sour le clic du bouton du formulaire, mais la saisie se fait
e ajout des clients existants.
J'aimerai que la copie se fasse dans les champs vides [CODE] et [AGENCE]
pour les clients existants.

Comment dois-je modifier mon Code?

Merci pour vos précieux renseignements.
Luis























Avatar
J-Pierre
Ha oui, il serait prudent de faire une copie de ta table avant :-)
Avatar
Luis
Bonjour,
Super, ça marche très bien et de plus j'ai appris quelque chose.
Merci, merci.
Luis


Luis,

Il est inutile de recopier tout ton code, ta simple phrase

Je veux mettre à jours tous les clients dont CODE et AGENCE sont nuls.

est beaucoup plus claire, et puis, débugger le code des autres n'est pas mon activité préférée :-))))


Je te donne la solution avec une requête de MAJ, car je pense que faire ça par code VBA est une hérésie, mais si tu insistes pour le
faire par code, il y aura sûrement des gens qui vont t'aider :-)

Sur clic de ton bouton, tu vas exécuter une requête de MAJ:

DoCmd.SetWarnings False
DoCmd.OpenQuery "maProcedureDeMAJ", acNormal, acEdit
DoCmd.Close acQuery, "maProcedureDeMAJ"
DoCmd.SetWarnings True

Pour la requête, tu crées un nouvelle requête, tu n'ajoutes pas de table, tu passes en mode SQL (le bouton affichage à gauche), et
tu copies ce code:
UPDATE [maTable] SET CODE = [Forms]![Formulaire1]![Code_intermédiaire], AGENCE = [Forms]![Formulaire1]![NomSociété]
WHERE Not (CODE Is Null) AND Not (AGENCE Is Null);

Et tu remplaces le nom des tables et champs par les tiens, et tu repasses en mode création.

Encore un point: Dans ce cas, seules les clients dont le code ET l'agence sont nuls sont MAJ, faudra peut-être adapter.

J-Pierre




"Luis" a écrit dans le message de news:
Bonjour,

J'ai fait ceci sour le clic du bouton du formulaire, mais la saisie se fait
e ajout des clients existants.
J'aimerai que la copie se fasse dans les champs vides [CODE] et [AGENCE]
pour les clients existants.
Voilà ce que je voulais dire :


Sur clic Bouton j'ai mis ce code :
NUMCLIENT = NCLIENT
CAT1 = Me.Code_intermédiaire
CAT2 = Me.NomSociété
Dim Critère As String, MaBD As Database, MaTable As Recordset
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("Clients", dbOpenDynaset) ' 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
COMPE = MaTable![CODE]
If COMPE = CAT1 Then
TROUVE = 1
Exit Do
Else
TROUVE = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If TROUVE = 0 Then
MaTable.AddNew
If TESTER = NUMCLIENT Then
MaTable![CODE] = CAT1
MaTable!AGENCE = CAT2
MaTable.Update
MaTable.Close
End If
End If

Ne se fait pas sur les clients existants, mais en ajoute des nouveaux.

Si non, quels sont les critères de sélection (quels
clients veux-tu mettre à jour) ? En particulier, veux-tu mettre à jour > seulement ceux dont le CODE et/ou l'AGENCE sont nuls ?


Je veux mettre à jours tous les clients dont CODE et AGENCE sont nuls.

Merci pour ta gentillesse.
Luis

PS : je n'ai jamais compris le fonctionnement des requêtes action.




Bonjour,

Ton problème ne semble pas bien compliqué, mais ce que tu veux faire n'est pas très clair. Je reprends ton premier post:

J'aimerai copier les données dans les champs: [Code_intermédiaire] et [NomSociété]
d'un formulaire dans les champs: [CODE] et [AGENCE] de la table "Clients"
qui contient déjà des clients (les champs: [CODE] et [AGENCE] de la table
"clients" sont vides).


Là, c'est clair, mais veux-tu mettre tous les clients de ta table à jour ? Si non, quels sont les critères de sélection (quels
clients veux-tu mettre à jour) ? En particulier, veux-tu mettre à jour seulement ceux dont le CODE et/ou l'AGENCE sont nuls ?

J'ai fait ceci sour le clic du bouton du formulaire, mais la saisie se fait
e ajout des clients existants.
J'aimerai que la copie se fasse dans les champs vides [CODE] et [AGENCE]
pour les clients existants.


Là, ton doigt a glissé.......Je suppose que tu expliques ce qui ne marche pas. Tu voulais dire quoi ?

J-Pierre

PS: Ce serait bien d'apprendre à faire des requêtes MAJ et INSERTION avant de te lancer dans du développement, c'est le B A
BA.....et finalement, c'est beaucoup plus simple que du code VBA qui manipule des recordSets.

"Luis" a écrit dans le message de news:
Bonjour,
Effectivement il ne rajoute qu'un seul client.

En changeant MaTable.AddNew par MaTable.Edit j'ai une erreur:

Erreur d'exécution '3021'

Aucun enregistrement en cours

Je ne sais pas faire des requêtes MAJ (ou insertion).

Pour bien faire il faudrais faire un module fonction.

Si tu peux m'aider à trouver la bonne solution.
Merci encore.
Luis


Salut Luis,

Apparement, tu inséres une ligne dans la table client, mais pour analyser ton code, ce serait bien de savoir précisement ce
que
tu
veux faire :-)
Ton premier post n'est pas très clair....

Si tu veux mettre à jour ta table client, il faut remplacer
MaTable.AddNew
par
MaTable.Edit

Mais il ne semble que ce serait plus simple d'exécuter une requête MAJ (ou insertion ?), peut-être paramétrée, j'ai aussi
l'impression que ton code ne met qu'un seul client à jour.

J-Pierre

"Luis" a écrit dans le message de news:
Bonjour,
Visiblement j'avais oublié de mettre le code quî ne marche pas:
NUMCLIENT = NCLIENT
CAT1 = Me.Code_intermédiaire
CAT2 = Me.NomSociété
Dim Critère As String, MaBD As Database, MaTable As Recordset
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("Clients", dbOpenDynaset) ' 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
COMPE = MaTable![CODE]
If COMPE = CAT1 Then
TROUVE = 1
Exit Do
Else
TROUVE = 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.

If TROUVE = 0 Then
MaTable.AddNew
If TESTER = NUMCLIENT Then
MaTable![CODE] = CAT1
MaTable!AGENCE = CAT2
MaTable.Update
MaTable.Close
'Else
'MaTable.Close
End If
End If
Merci.
Luis


Bonjour,

Sur évènement après MAJ de tes champs [Code_intermédiaire] et [NomSociété], un peu de code VBA:
Me.code = me.Code_intermédiaire
Me.agence = Me.NomSociété

J-Pierre


"Luis" a écrit dans le message de news:

Bonjour,
J'aimerai copier les données dans les champs: [Code_intermédiaire] et
[NomSociété]
d'un formulaire dans les champs: [CODE] et [AGENCE] de la table "Clients"
qui contient déjà des clients (les champs: [CODE] et [AGENCE] de la table
"clients" sont vides).

J'ai fait ceci sour le clic du bouton du formulaire, mais la saisie se fait
e ajout des clients existants.
J'aimerai que la copie se fasse dans les champs vides [CODE] et [AGENCE]
pour les clients existants.

Comment dois-je modifier mon Code?

Merci pour vos précieux renseignements.
Luis