Je ne connais pas le langage VB, mais j'ai une petite procédure à écrire. Si
je devais rechercher comment l'écrire il me faudrait beaucoup trop de temps,
ce que je n'ai pas . Je me troune donc vers vous. Merci de bien vouloir
m'aider.
Je dois en gros, écrire une procédure qui parcoure une table et effectuer
quelques petites actions.
Matable contient les champs suivants: Num: Texte - 12, NumCta: Texte - 5,
TypeCr: contient "principal" ou "secondaire" et Observation: Texte - 30
Ouvrir MaTable
Aller au 1er enregistrement
Tprincipal=0
Tant que je ne suis pas à la fin de la MaTable
Affecter la valeur du champ NumCta à une variable NuméroCTA
Tant que NumCTA= NuméroCTA
Si le champ TypeCR="Principal" alors Tprincipal=Tprincipal+1
Fin de la boucle NumCTA
' Si en sortant de la boucle NumCTA on change d'enregistrement, il faut que
la ligne qui suit écrive dans l'enregistrement précédent
Si Tprincipal>1 alors écrire dans le champ Observation "Obs1"
Passer à l'enregistrement suivant
Fin de boucle Tant que je ne suis pas à la fin de la MaTable
ex d'enregistrements
Num NumCTA TypeCR Observation
200501000023 - 12365 - principal -
200501000512 - 12365 - principal -
200501000519 - 12388 - principal -
200501000617 - 12399 - principal -
200501000915 - 12399 - secondaire-
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
lucno
Bonsoir,
Je vois que la plus part des messages obtient des réponses, alors que le mien reste sans rien. Je me demande pourquoi. Est-ce irréalisable?, me suis je pas bien exprimé ?
Peut être pouvez-vous m'aider en me donnant la syntaxe pour ouvrir une table, créer un boucle, et écrire dans un enregistrement.
Merci pour votre aide
Bonjour,
Je ne connais pas le langage VB, mais j'ai une petite procédure à écrire. Si je devais rechercher comment l'écrire il me faudrait beaucoup trop de temps, ce que je n'ai pas . Je me troune donc vers vous. Merci de bien vouloir m'aider.
Je dois en gros, écrire une procédure qui parcoure une table et effectuer quelques petites actions.
Matable contient les champs suivants: Num: Texte - 12, NumCta: Texte - 5, TypeCr: contient "principal" ou "secondaire" et Observation: Texte - 30
Ouvrir MaTable Aller au 1er enregistrement Tprincipal=0 Tant que je ne suis pas à la fin de la MaTable Affecter la valeur du champ NumCta à une variable NuméroCTA
Tant que NumCTA= NuméroCTA Si le champ TypeCR="Principal" alors Tprincipal=Tprincipal+1 Fin de la boucle NumCTA ' Si en sortant de la boucle NumCTA on change d'enregistrement, il faut que la ligne qui suit écrive dans l'enregistrement précédent Si Tprincipal>1 alors écrire dans le champ Observation "Obs1" Passer à l'enregistrement suivant
Fin de boucle Tant que je ne suis pas à la fin de la MaTable
ex d'enregistrements
Num NumCTA TypeCR Observation 200501000023 - 12365 - principal - 200501000512 - 12365 - principal - 200501000519 - 12388 - principal - 200501000617 - 12399 - principal - 200501000915 - 12399 - secondaire-
Merci d'avance pour votre aide
Luc
Bonsoir,
Je vois que la plus part des messages obtient des réponses, alors que le
mien reste sans rien.
Je me demande pourquoi. Est-ce irréalisable?, me suis je pas bien exprimé ?
Peut être pouvez-vous m'aider en me donnant la syntaxe pour ouvrir une
table, créer un boucle, et écrire dans un enregistrement.
Merci pour votre aide
Bonjour,
Je ne connais pas le langage VB, mais j'ai une petite procédure à écrire. Si
je devais rechercher comment l'écrire il me faudrait beaucoup trop de temps,
ce que je n'ai pas . Je me troune donc vers vous. Merci de bien vouloir
m'aider.
Je dois en gros, écrire une procédure qui parcoure une table et effectuer
quelques petites actions.
Matable contient les champs suivants: Num: Texte - 12, NumCta: Texte - 5,
TypeCr: contient "principal" ou "secondaire" et Observation: Texte - 30
Ouvrir MaTable
Aller au 1er enregistrement
Tprincipal=0
Tant que je ne suis pas à la fin de la MaTable
Affecter la valeur du champ NumCta à une variable NuméroCTA
Tant que NumCTA= NuméroCTA
Si le champ TypeCR="Principal" alors Tprincipal=Tprincipal+1
Fin de la boucle NumCTA
' Si en sortant de la boucle NumCTA on change d'enregistrement, il faut que
la ligne qui suit écrive dans l'enregistrement précédent
Si Tprincipal>1 alors écrire dans le champ Observation "Obs1"
Passer à l'enregistrement suivant
Fin de boucle Tant que je ne suis pas à la fin de la MaTable
ex d'enregistrements
Num NumCTA TypeCR Observation
200501000023 - 12365 - principal -
200501000512 - 12365 - principal -
200501000519 - 12388 - principal -
200501000617 - 12399 - principal -
200501000915 - 12399 - secondaire-
Je vois que la plus part des messages obtient des réponses, alors que le mien reste sans rien. Je me demande pourquoi. Est-ce irréalisable?, me suis je pas bien exprimé ?
Peut être pouvez-vous m'aider en me donnant la syntaxe pour ouvrir une table, créer un boucle, et écrire dans un enregistrement.
Merci pour votre aide
Bonjour,
Je ne connais pas le langage VB, mais j'ai une petite procédure à écrire. Si je devais rechercher comment l'écrire il me faudrait beaucoup trop de temps, ce que je n'ai pas . Je me troune donc vers vous. Merci de bien vouloir m'aider.
Je dois en gros, écrire une procédure qui parcoure une table et effectuer quelques petites actions.
Matable contient les champs suivants: Num: Texte - 12, NumCta: Texte - 5, TypeCr: contient "principal" ou "secondaire" et Observation: Texte - 30
Ouvrir MaTable Aller au 1er enregistrement Tprincipal=0 Tant que je ne suis pas à la fin de la MaTable Affecter la valeur du champ NumCta à une variable NuméroCTA
Tant que NumCTA= NuméroCTA Si le champ TypeCR="Principal" alors Tprincipal=Tprincipal+1 Fin de la boucle NumCTA ' Si en sortant de la boucle NumCTA on change d'enregistrement, il faut que la ligne qui suit écrive dans l'enregistrement précédent Si Tprincipal>1 alors écrire dans le champ Observation "Obs1" Passer à l'enregistrement suivant
Fin de boucle Tant que je ne suis pas à la fin de la MaTable
ex d'enregistrements
Num NumCTA TypeCR Observation 200501000023 - 12365 - principal - 200501000512 - 12365 - principal - 200501000519 - 12388 - principal - 200501000617 - 12399 - principal - 200501000915 - 12399 - secondaire-
Merci d'avance pour votre aide
Luc
Anor
Salut
Je n'ai pas tout compris de ce que tu voulais faire, mais essaye ceci :
Colle le code ci dessous dans un nouveau module, puis F8 pour avancer pas à pas et te permettre comment le code se déroule :
Essaye de mettre des bons noms de champs, table et déclarer tes variables avant, hein ?
Sub ziva() Dim Dbs As DAO.Database Dim Rst As DAO.Recordset Dim Fld As DAO.Field
Set Dbs = CurrentDb Set Rst = Dbs.OpenRecordset("LaTable")
While Not Rst.EOF For Each Fld In Rst.Fields If Fld.name = "LeChamp1" and Fld.value = "ce que tu veux" Then Rst.Edit Rst.Fields("LeChamp2").Value = Fld.Value Rst.Fields("ID").Value = lavaleur Rst.Update End If Next Fld CurrentDb.Execute "UPDATE LaTable Set LeChamp3 = '" & tavariable & "' WHERE ID=" & lavaleur-1 & ";" Rst.MoveNext Wend Rst.Close Dbs.Close Set Rst = Nothing Set Dbs = Nothing
End Sub
Voilà pour un dégrossissement A toi de jouer avec les conditions et comparaisons, mise en mémoire des valeurs, etc..
PS : une table n'ayant pas la notion d'ordre d'enregistrements, ça se complique de penser "enregistrement précédent" Tu peux donc peut-être gérer un champ ID qui permette d'aller lire sa valeur dans l'enregistrement courant, puis d'aller mettre à jour une commande SQL de requête mise à jour un champ dans l'enregistrement de la table pour lequel ID = ID en cours -1
a+ Arnaud
"lucno" a écrit dans le message de news:
| Bonsoir, | | Je vois que la plus part des messages obtient des réponses, alors que le | mien reste sans rien. | Je me demande pourquoi. Est-ce irréalisable?, me suis je pas bien exprimé ? | | Peut être pouvez-vous m'aider en me donnant la syntaxe pour ouvrir une | table, créer un boucle, et écrire dans un enregistrement. | | Merci pour votre aide | | | > Bonjour, | > | > Je ne connais pas le langage VB, mais j'ai une petite procédure à écrire. Si | > je devais rechercher comment l'écrire il me faudrait beaucoup trop de temps, | > ce que je n'ai pas . Je me troune donc vers vous. Merci de bien vouloir | > m'aider. | > | > Je dois en gros, écrire une procédure qui parcoure une table et effectuer | > quelques petites actions. | > | > Matable contient les champs suivants: Num: Texte - 12, NumCta: Texte - 5, | > TypeCr: contient "principal" ou "secondaire" et Observation: Texte - 30 | > | > Ouvrir MaTable | > Aller au 1er enregistrement | > Tprincipal=0 | > Tant que je ne suis pas à la fin de la MaTable | > Affecter la valeur du champ NumCta à une variable NuméroCTA | > | > Tant que NumCTA= NuméroCTA | > Si le champ TypeCR="Principal" alors Tprincipal=Tprincipal+1 | > Fin de la boucle NumCTA | > ' Si en sortant de la boucle NumCTA on change d'enregistrement, il faut que | > la ligne qui suit écrive dans l'enregistrement précédent | > Si Tprincipal>1 alors écrire dans le champ Observation "Obs1" | > Passer à l'enregistrement suivant | > | > Fin de boucle Tant que je ne suis pas à la fin de la MaTable | > | > ex d'enregistrements | > | > Num NumCTA TypeCR Observation | > 200501000023 - 12365 - principal - | > 200501000512 - 12365 - principal - | > 200501000519 - 12388 - principal - | > 200501000617 - 12399 - principal - | > 200501000915 - 12399 - secondaire- | > | > Merci d'avance pour votre aide | > | > Luc
Salut
Je n'ai pas tout compris de ce que tu voulais faire, mais essaye ceci :
Colle le code ci dessous dans un nouveau module, puis F8 pour avancer pas à pas et te permettre
comment le code se déroule :
Essaye de mettre des bons noms de champs, table et déclarer tes variables avant, hein ?
Sub ziva()
Dim Dbs As DAO.Database
Dim Rst As DAO.Recordset
Dim Fld As DAO.Field
Set Dbs = CurrentDb
Set Rst = Dbs.OpenRecordset("LaTable")
While Not Rst.EOF
For Each Fld In Rst.Fields
If Fld.name = "LeChamp1" and Fld.value = "ce que tu veux" Then
Rst.Edit
Rst.Fields("LeChamp2").Value = Fld.Value
Rst.Fields("ID").Value = lavaleur
Rst.Update
End If
Next Fld
CurrentDb.Execute "UPDATE LaTable Set LeChamp3 = '" & tavariable & "' WHERE ID=" & lavaleur-1 &
";"
Rst.MoveNext
Wend
Rst.Close
Dbs.Close
Set Rst = Nothing
Set Dbs = Nothing
End Sub
Voilà pour un dégrossissement
A toi de jouer avec les conditions et comparaisons, mise en mémoire des valeurs, etc..
PS : une table n'ayant pas la notion d'ordre d'enregistrements, ça se complique de penser
"enregistrement précédent"
Tu peux donc peut-être gérer un champ ID qui permette d'aller lire sa valeur dans
l'enregistrement courant, puis
d'aller mettre à jour une commande SQL de requête mise à jour un champ dans l'enregistrement de
la table pour lequel ID = ID en cours -1
a+
Arnaud
"lucno" <lucno@discussions.microsoft.com> a écrit dans le message de news:
5AEBEEAD-68CB-4B4B-A924-EA1575B55BF2@microsoft.com...
| Bonsoir,
|
| Je vois que la plus part des messages obtient des réponses, alors que le
| mien reste sans rien.
| Je me demande pourquoi. Est-ce irréalisable?, me suis je pas bien exprimé ?
|
| Peut être pouvez-vous m'aider en me donnant la syntaxe pour ouvrir une
| table, créer un boucle, et écrire dans un enregistrement.
|
| Merci pour votre aide
|
|
| > Bonjour,
| >
| > Je ne connais pas le langage VB, mais j'ai une petite procédure à écrire. Si
| > je devais rechercher comment l'écrire il me faudrait beaucoup trop de temps,
| > ce que je n'ai pas . Je me troune donc vers vous. Merci de bien vouloir
| > m'aider.
| >
| > Je dois en gros, écrire une procédure qui parcoure une table et effectuer
| > quelques petites actions.
| >
| > Matable contient les champs suivants: Num: Texte - 12, NumCta: Texte - 5,
| > TypeCr: contient "principal" ou "secondaire" et Observation: Texte - 30
| >
| > Ouvrir MaTable
| > Aller au 1er enregistrement
| > Tprincipal=0
| > Tant que je ne suis pas à la fin de la MaTable
| > Affecter la valeur du champ NumCta à une variable NuméroCTA
| >
| > Tant que NumCTA= NuméroCTA
| > Si le champ TypeCR="Principal" alors Tprincipal=Tprincipal+1
| > Fin de la boucle NumCTA
| > ' Si en sortant de la boucle NumCTA on change d'enregistrement, il faut que
| > la ligne qui suit écrive dans l'enregistrement précédent
| > Si Tprincipal>1 alors écrire dans le champ Observation "Obs1"
| > Passer à l'enregistrement suivant
| >
| > Fin de boucle Tant que je ne suis pas à la fin de la MaTable
| >
| > ex d'enregistrements
| >
| > Num NumCTA TypeCR Observation
| > 200501000023 - 12365 - principal -
| > 200501000512 - 12365 - principal -
| > 200501000519 - 12388 - principal -
| > 200501000617 - 12399 - principal -
| > 200501000915 - 12399 - secondaire-
| >
| > Merci d'avance pour votre aide
| >
| > Luc
Je n'ai pas tout compris de ce que tu voulais faire, mais essaye ceci :
Colle le code ci dessous dans un nouveau module, puis F8 pour avancer pas à pas et te permettre comment le code se déroule :
Essaye de mettre des bons noms de champs, table et déclarer tes variables avant, hein ?
Sub ziva() Dim Dbs As DAO.Database Dim Rst As DAO.Recordset Dim Fld As DAO.Field
Set Dbs = CurrentDb Set Rst = Dbs.OpenRecordset("LaTable")
While Not Rst.EOF For Each Fld In Rst.Fields If Fld.name = "LeChamp1" and Fld.value = "ce que tu veux" Then Rst.Edit Rst.Fields("LeChamp2").Value = Fld.Value Rst.Fields("ID").Value = lavaleur Rst.Update End If Next Fld CurrentDb.Execute "UPDATE LaTable Set LeChamp3 = '" & tavariable & "' WHERE ID=" & lavaleur-1 & ";" Rst.MoveNext Wend Rst.Close Dbs.Close Set Rst = Nothing Set Dbs = Nothing
End Sub
Voilà pour un dégrossissement A toi de jouer avec les conditions et comparaisons, mise en mémoire des valeurs, etc..
PS : une table n'ayant pas la notion d'ordre d'enregistrements, ça se complique de penser "enregistrement précédent" Tu peux donc peut-être gérer un champ ID qui permette d'aller lire sa valeur dans l'enregistrement courant, puis d'aller mettre à jour une commande SQL de requête mise à jour un champ dans l'enregistrement de la table pour lequel ID = ID en cours -1
a+ Arnaud
"lucno" a écrit dans le message de news:
| Bonsoir, | | Je vois que la plus part des messages obtient des réponses, alors que le | mien reste sans rien. | Je me demande pourquoi. Est-ce irréalisable?, me suis je pas bien exprimé ? | | Peut être pouvez-vous m'aider en me donnant la syntaxe pour ouvrir une | table, créer un boucle, et écrire dans un enregistrement. | | Merci pour votre aide | | | > Bonjour, | > | > Je ne connais pas le langage VB, mais j'ai une petite procédure à écrire. Si | > je devais rechercher comment l'écrire il me faudrait beaucoup trop de temps, | > ce que je n'ai pas . Je me troune donc vers vous. Merci de bien vouloir | > m'aider. | > | > Je dois en gros, écrire une procédure qui parcoure une table et effectuer | > quelques petites actions. | > | > Matable contient les champs suivants: Num: Texte - 12, NumCta: Texte - 5, | > TypeCr: contient "principal" ou "secondaire" et Observation: Texte - 30 | > | > Ouvrir MaTable | > Aller au 1er enregistrement | > Tprincipal=0 | > Tant que je ne suis pas à la fin de la MaTable | > Affecter la valeur du champ NumCta à une variable NuméroCTA | > | > Tant que NumCTA= NuméroCTA | > Si le champ TypeCR="Principal" alors Tprincipal=Tprincipal+1 | > Fin de la boucle NumCTA | > ' Si en sortant de la boucle NumCTA on change d'enregistrement, il faut que | > la ligne qui suit écrive dans l'enregistrement précédent | > Si Tprincipal>1 alors écrire dans le champ Observation "Obs1" | > Passer à l'enregistrement suivant | > | > Fin de boucle Tant que je ne suis pas à la fin de la MaTable | > | > ex d'enregistrements | > | > Num NumCTA TypeCR Observation | > 200501000023 - 12365 - principal - | > 200501000512 - 12365 - principal - | > 200501000519 - 12388 - principal - | > 200501000617 - 12399 - principal - | > 200501000915 - 12399 - secondaire- | > | > Merci d'avance pour votre aide | > | > Luc
lucno
Bonjour,
J'ai essayé ce que tu m'as conseillé, mais, dès la première ligne "Dim Dbs As DAO.Database" j'obtiens un message d'erreur : "Erreur de compilation. Type défini par l'utilisateur non défini" DAO.Database est surligné. Je comprend que je n'ai pas défini quelque chose, probablement dao, mais comment lui dire ?
j'utilise Access 2000, c'est peut-être pour ça !
J'ai encore besoin de ton aide
Explication sur ce que je veux faire:
J'ai des collègues qui doivent dès qu'une opération est réalisée établir un rapport. Lorsqu'ils sont plusieurs pour la même opération: il y en a un qui fait un rapport "principal" et tous les autres un rapport "secondaire" or il arrive fréquement qu'ils se trompent et je me retrouve avec plusieurs rapport principaux pour la même opération ce qui fausse mes calculs. Je cherche donc à retrouver les erreurs par cette procèdure en recherchant si les principaux sont supérieurs à 1 ou si il n'y a que des secondaires etc... Merci d'avance Luc
J
Salut
Je n'ai pas tout compris de ce que tu voulais faire, mais essaye ceci :
Colle le code ci dessous dans un nouveau module, puis F8 pour avancer pas à pas et te permettre comment le code se déroule :
Essaye de mettre des bons noms de champs, table et déclarer tes variables avant, hein ?
Sub ziva() Dim Dbs As DAO.Database Dim Rst As DAO.Recordset Dim Fld As DAO.Field
Set Dbs = CurrentDb Set Rst = Dbs.OpenRecordset("LaTable")
While Not Rst.EOF For Each Fld In Rst.Fields If Fld.name = "LeChamp1" and Fld.value = "ce que tu veux" Then Rst.Edit Rst.Fields("LeChamp2").Value = Fld.Value Rst.Fields("ID").Value = lavaleur Rst.Update End If Next Fld CurrentDb.Execute "UPDATE LaTable Set LeChamp3 = '" & tavariable & "' WHERE ID=" & lavaleur-1 & ";" Rst.MoveNext Wend Rst.Close Dbs.Close Set Rst = Nothing Set Dbs = Nothing
End Sub
Voilà pour un dégrossissement A toi de jouer avec les conditions et comparaisons, mise en mémoire des valeurs, etc..
PS : une table n'ayant pas la notion d'ordre d'enregistrements, ça se complique de penser "enregistrement précédent" Tu peux donc peut-être gérer un champ ID qui permette d'aller lire sa valeur dans l'enregistrement courant, puis d'aller mettre à jour une commande SQL de requête mise à jour un champ dans l'enregistrement de la table pour lequel ID = ID en cours -1
a+ Arnaud
"lucno" a écrit dans le message de news:
| Bonsoir, | | Je vois que la plus part des messages obtient des réponses, alors que le | mien reste sans rien. | Je me demande pourquoi. Est-ce irréalisable?, me suis je pas bien exprimé ? | | Peut être pouvez-vous m'aider en me donnant la syntaxe pour ouvrir une | table, créer un boucle, et écrire dans un enregistrement. | | Merci pour votre aide | | | > Bonjour, | > | > Je ne connais pas le langage VB, mais j'ai une petite procédure à écrire. Si | > je devais rechercher comment l'écrire il me faudrait beaucoup trop de temps, | > ce que je n'ai pas . Je me troune donc vers vous. Merci de bien vouloir | > m'aider. | > | > Je dois en gros, écrire une procédure qui parcoure une table et effectuer | > quelques petites actions. | > | > Matable contient les champs suivants: Num: Texte - 12, NumCta: Texte - 5, | > TypeCr: contient "principal" ou "secondaire" et Observation: Texte - 30 | > | > Ouvrir MaTable | > Aller au 1er enregistrement | > Tprincipal=0 | > Tant que je ne suis pas à la fin de la MaTable | > Affecter la valeur du champ NumCta à une variable NuméroCTA | > | > Tant que NumCTA= NuméroCTA | > Si le champ TypeCR="Principal" alors Tprincipal=Tprincipal+1 | > Fin de la boucle NumCTA | > ' Si en sortant de la boucle NumCTA on change d'enregistrement, il faut que | > la ligne qui suit écrive dans l'enregistrement précédent | > Si Tprincipal>1 alors écrire dans le champ Observation "Obs1" | > Passer à l'enregistrement suivant | > | > Fin de boucle Tant que je ne suis pas à la fin de la MaTable | > | > ex d'enregistrements | > | > Num NumCTA TypeCR Observation | > 200501000023 - 12365 - principal - | > 200501000512 - 12365 - principal - | > 200501000519 - 12388 - principal - | > 200501000617 - 12399 - principal - | > 200501000915 - 12399 - secondaire- | > | > Merci d'avance pour votre aide | > | > Luc
Bonjour,
J'ai essayé ce que tu m'as conseillé, mais, dès la première ligne "Dim Dbs
As DAO.Database" j'obtiens un message d'erreur : "Erreur de compilation. Type
défini par l'utilisateur non défini" DAO.Database est surligné.
Je comprend que je n'ai pas défini quelque chose, probablement dao, mais
comment lui dire ?
j'utilise Access 2000, c'est peut-être pour ça !
J'ai encore besoin de ton aide
Explication sur ce que je veux faire:
J'ai des collègues qui doivent dès qu'une opération est réalisée établir un
rapport. Lorsqu'ils sont plusieurs pour la même opération: il y en a un qui
fait un rapport "principal" et tous les autres un rapport "secondaire" or il
arrive fréquement qu'ils se trompent et je me retrouve avec plusieurs rapport
principaux pour la même opération ce qui fausse mes calculs. Je cherche donc
à retrouver les erreurs par cette procèdure en recherchant si les principaux
sont supérieurs à 1 ou si il n'y a que des secondaires etc...
Merci d'avance
Luc
J
Salut
Je n'ai pas tout compris de ce que tu voulais faire, mais essaye ceci :
Colle le code ci dessous dans un nouveau module, puis F8 pour avancer pas à pas et te permettre
comment le code se déroule :
Essaye de mettre des bons noms de champs, table et déclarer tes variables avant, hein ?
Sub ziva()
Dim Dbs As DAO.Database
Dim Rst As DAO.Recordset
Dim Fld As DAO.Field
Set Dbs = CurrentDb
Set Rst = Dbs.OpenRecordset("LaTable")
While Not Rst.EOF
For Each Fld In Rst.Fields
If Fld.name = "LeChamp1" and Fld.value = "ce que tu veux" Then
Rst.Edit
Rst.Fields("LeChamp2").Value = Fld.Value
Rst.Fields("ID").Value = lavaleur
Rst.Update
End If
Next Fld
CurrentDb.Execute "UPDATE LaTable Set LeChamp3 = '" & tavariable & "' WHERE ID=" & lavaleur-1 &
";"
Rst.MoveNext
Wend
Rst.Close
Dbs.Close
Set Rst = Nothing
Set Dbs = Nothing
End Sub
Voilà pour un dégrossissement
A toi de jouer avec les conditions et comparaisons, mise en mémoire des valeurs, etc..
PS : une table n'ayant pas la notion d'ordre d'enregistrements, ça se complique de penser
"enregistrement précédent"
Tu peux donc peut-être gérer un champ ID qui permette d'aller lire sa valeur dans
l'enregistrement courant, puis
d'aller mettre à jour une commande SQL de requête mise à jour un champ dans l'enregistrement de
la table pour lequel ID = ID en cours -1
a+
Arnaud
"lucno" <lucno@discussions.microsoft.com> a écrit dans le message de news:
5AEBEEAD-68CB-4B4B-A924-EA1575B55BF2@microsoft.com...
| Bonsoir,
|
| Je vois que la plus part des messages obtient des réponses, alors que le
| mien reste sans rien.
| Je me demande pourquoi. Est-ce irréalisable?, me suis je pas bien exprimé ?
|
| Peut être pouvez-vous m'aider en me donnant la syntaxe pour ouvrir une
| table, créer un boucle, et écrire dans un enregistrement.
|
| Merci pour votre aide
|
|
| > Bonjour,
| >
| > Je ne connais pas le langage VB, mais j'ai une petite procédure à écrire. Si
| > je devais rechercher comment l'écrire il me faudrait beaucoup trop de temps,
| > ce que je n'ai pas . Je me troune donc vers vous. Merci de bien vouloir
| > m'aider.
| >
| > Je dois en gros, écrire une procédure qui parcoure une table et effectuer
| > quelques petites actions.
| >
| > Matable contient les champs suivants: Num: Texte - 12, NumCta: Texte - 5,
| > TypeCr: contient "principal" ou "secondaire" et Observation: Texte - 30
| >
| > Ouvrir MaTable
| > Aller au 1er enregistrement
| > Tprincipal=0
| > Tant que je ne suis pas à la fin de la MaTable
| > Affecter la valeur du champ NumCta à une variable NuméroCTA
| >
| > Tant que NumCTA= NuméroCTA
| > Si le champ TypeCR="Principal" alors Tprincipal=Tprincipal+1
| > Fin de la boucle NumCTA
| > ' Si en sortant de la boucle NumCTA on change d'enregistrement, il faut que
| > la ligne qui suit écrive dans l'enregistrement précédent
| > Si Tprincipal>1 alors écrire dans le champ Observation "Obs1"
| > Passer à l'enregistrement suivant
| >
| > Fin de boucle Tant que je ne suis pas à la fin de la MaTable
| >
| > ex d'enregistrements
| >
| > Num NumCTA TypeCR Observation
| > 200501000023 - 12365 - principal -
| > 200501000512 - 12365 - principal -
| > 200501000519 - 12388 - principal -
| > 200501000617 - 12399 - principal -
| > 200501000915 - 12399 - secondaire-
| >
| > Merci d'avance pour votre aide
| >
| > Luc
J'ai essayé ce que tu m'as conseillé, mais, dès la première ligne "Dim Dbs As DAO.Database" j'obtiens un message d'erreur : "Erreur de compilation. Type défini par l'utilisateur non défini" DAO.Database est surligné. Je comprend que je n'ai pas défini quelque chose, probablement dao, mais comment lui dire ?
j'utilise Access 2000, c'est peut-être pour ça !
J'ai encore besoin de ton aide
Explication sur ce que je veux faire:
J'ai des collègues qui doivent dès qu'une opération est réalisée établir un rapport. Lorsqu'ils sont plusieurs pour la même opération: il y en a un qui fait un rapport "principal" et tous les autres un rapport "secondaire" or il arrive fréquement qu'ils se trompent et je me retrouve avec plusieurs rapport principaux pour la même opération ce qui fausse mes calculs. Je cherche donc à retrouver les erreurs par cette procèdure en recherchant si les principaux sont supérieurs à 1 ou si il n'y a que des secondaires etc... Merci d'avance Luc
J
Salut
Je n'ai pas tout compris de ce que tu voulais faire, mais essaye ceci :
Colle le code ci dessous dans un nouveau module, puis F8 pour avancer pas à pas et te permettre comment le code se déroule :
Essaye de mettre des bons noms de champs, table et déclarer tes variables avant, hein ?
Sub ziva() Dim Dbs As DAO.Database Dim Rst As DAO.Recordset Dim Fld As DAO.Field
Set Dbs = CurrentDb Set Rst = Dbs.OpenRecordset("LaTable")
While Not Rst.EOF For Each Fld In Rst.Fields If Fld.name = "LeChamp1" and Fld.value = "ce que tu veux" Then Rst.Edit Rst.Fields("LeChamp2").Value = Fld.Value Rst.Fields("ID").Value = lavaleur Rst.Update End If Next Fld CurrentDb.Execute "UPDATE LaTable Set LeChamp3 = '" & tavariable & "' WHERE ID=" & lavaleur-1 & ";" Rst.MoveNext Wend Rst.Close Dbs.Close Set Rst = Nothing Set Dbs = Nothing
End Sub
Voilà pour un dégrossissement A toi de jouer avec les conditions et comparaisons, mise en mémoire des valeurs, etc..
PS : une table n'ayant pas la notion d'ordre d'enregistrements, ça se complique de penser "enregistrement précédent" Tu peux donc peut-être gérer un champ ID qui permette d'aller lire sa valeur dans l'enregistrement courant, puis d'aller mettre à jour une commande SQL de requête mise à jour un champ dans l'enregistrement de la table pour lequel ID = ID en cours -1
a+ Arnaud
"lucno" a écrit dans le message de news:
| Bonsoir, | | Je vois que la plus part des messages obtient des réponses, alors que le | mien reste sans rien. | Je me demande pourquoi. Est-ce irréalisable?, me suis je pas bien exprimé ? | | Peut être pouvez-vous m'aider en me donnant la syntaxe pour ouvrir une | table, créer un boucle, et écrire dans un enregistrement. | | Merci pour votre aide | | | > Bonjour, | > | > Je ne connais pas le langage VB, mais j'ai une petite procédure à écrire. Si | > je devais rechercher comment l'écrire il me faudrait beaucoup trop de temps, | > ce que je n'ai pas . Je me troune donc vers vous. Merci de bien vouloir | > m'aider. | > | > Je dois en gros, écrire une procédure qui parcoure une table et effectuer | > quelques petites actions. | > | > Matable contient les champs suivants: Num: Texte - 12, NumCta: Texte - 5, | > TypeCr: contient "principal" ou "secondaire" et Observation: Texte - 30 | > | > Ouvrir MaTable | > Aller au 1er enregistrement | > Tprincipal=0 | > Tant que je ne suis pas à la fin de la MaTable | > Affecter la valeur du champ NumCta à une variable NuméroCTA | > | > Tant que NumCTA= NuméroCTA | > Si le champ TypeCR="Principal" alors Tprincipal=Tprincipal+1 | > Fin de la boucle NumCTA | > ' Si en sortant de la boucle NumCTA on change d'enregistrement, il faut que | > la ligne qui suit écrive dans l'enregistrement précédent | > Si Tprincipal>1 alors écrire dans le champ Observation "Obs1" | > Passer à l'enregistrement suivant | > | > Fin de boucle Tant que je ne suis pas à la fin de la MaTable | > | > ex d'enregistrements | > | > Num NumCTA TypeCR Observation | > 200501000023 - 12365 - principal - | > 200501000512 - 12365 - principal - | > 200501000519 - 12388 - principal - | > 200501000617 - 12399 - principal - | > 200501000915 - 12399 - secondaire- | > | > Merci d'avance pour votre aide | > | > Luc