OVH Cloud OVH Cloud

fonction appliqué dans toute un champ d'1 table

5 réponses
Avatar
Nabil Kasmi
Bonjour ,
j'ai un champ date(CO_ouvertle) et je voudrais calculer le numero de semaine
et le mettre dans un autre champ (CO_N°semaine):
j'ai ce code la :

' mise a jour du champs n°semaine de la date d'ouverture du dossier

Dim liste As Recordset, MaBD As Database, caldate, CO_OuvertLe,
CO_N°semaine
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set liste = MaBD.OpenRecordset("CONTRATS")

With liste

If Not .BOF Then
.MoveFirst

Do Until .EOF

'Champ CO_N°semaine

If Not IsNull(![CO_OuvertLe]) And ![CO_OuvertLe] <> "" Then
.Edit
'Calcul N° de semaine


Me![CO_N°semaine] = Format(Me![CO_OuvertLe], "ww", vbMonday,
vbFirstFourDays)
If Me![CO_N°semaine] > 52 Then
caldate = DateAdd("d", 7, Me![CO_OuvertLe])
If Format(caldate, "ww", vbMonday, vbFirstFourDays) > 52 Then

Me![CO_N°semaine] = 1
End If
.Update
End If
.MoveNext
Loop
End If

.Close
End With

la fonction caldate fonctionne mais je voudrais l'appliquer a toute une
table.
Pourriez vous m'aider !!! merci
Nabil

5 réponses

Avatar
Raymond [mvp]
Bonsoir.

ta fonction actuelle travaille sur tout le recordset donc toute ta table
(sous condition de valeur d'un champ bien sûr) , que veux-tu exactement de
plus ?

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nabil Kasmi" a écrit dans le message de news:
4267dcef$0$14202$
Bonjour ,
j'ai un champ date(CO_ouvertle) et je voudrais calculer le numero de
semaine et le mettre dans un autre champ (CO_N°semaine):
j'ai ce code la :

' mise a jour du champs n°semaine de la date d'ouverture du dossier

Dim liste As Recordset, MaBD As Database, caldate, CO_OuvertLe,
CO_N°semaine
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set liste = MaBD.OpenRecordset("CONTRATS")

With liste

If Not .BOF Then
.MoveFirst

Do Until .EOF

'Champ CO_N°semaine

If Not IsNull(![CO_OuvertLe]) And ![CO_OuvertLe] <> "" Then
.Edit
'Calcul N° de semaine


Me![CO_N°semaine] = Format(Me![CO_OuvertLe], "ww", vbMonday,
vbFirstFourDays)
If Me![CO_N°semaine] > 52 Then
caldate = DateAdd("d", 7, Me![CO_OuvertLe])
If Format(caldate, "ww", vbMonday, vbFirstFourDays) > 52 Then

Me![CO_N°semaine] = 1
End If
.Update
End If
.MoveNext
Loop
End If

.Close
End With

la fonction caldate fonctionne mais je voudrais l'appliquer a toute une
table.
Pourriez vous m'aider !!! merci
Nabil



Avatar
Nabil Kasmi
Bonjour,
quand je lance la macro ,il bugue sur le loop. il me met une erreur de
compilation : "Boucle sans do" alors qu'il y en a bien un.Il vient de là le
problème!!!
Nabil
"Raymond [mvp]" a écrit dans le message de
news: e7h%
Bonsoir.

ta fonction actuelle travaille sur tout le recordset donc toute ta table
(sous condition de valeur d'un champ bien sûr) , que veux-tu exactement de
plus ?

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nabil Kasmi" a écrit dans le message de news:
4267dcef$0$14202$
Bonjour ,
j'ai un champ date(CO_ouvertle) et je voudrais calculer le numero de
semaine et le mettre dans un autre champ (CO_N°semaine):
j'ai ce code la :

' mise a jour du champs n°semaine de la date d'ouverture du dossier

Dim liste As Recordset, MaBD As Database, caldate, CO_OuvertLe,
CO_N°semaine
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set liste = MaBD.OpenRecordset("CONTRATS")

With liste

If Not .BOF Then
.MoveFirst

Do Until .EOF

'Champ CO_N°semaine

If Not IsNull(![CO_OuvertLe]) And ![CO_OuvertLe] <> ""
Then
.Edit
'Calcul N° de semaine


Me![CO_N°semaine] = Format(Me![CO_OuvertLe], "ww", vbMonday,
vbFirstFourDays)
If Me![CO_N°semaine] > 52 Then
caldate = DateAdd("d", 7, Me![CO_OuvertLe])
If Format(caldate, "ww", vbMonday, vbFirstFourDays) > 52 Then

Me![CO_N°semaine] = 1
End If
.Update
End If
.MoveNext
Loop
End If

.Close
End With

la fonction caldate fonctionne mais je voudrais l'appliquer a toute une
table.
Pourriez vous m'aider !!! merci
Nabil







Avatar
Raymond [mvp]
Bonjour.

vérifie tes If et End If , c'est plutôt de là que ça vient.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nabil Kasmi" a écrit dans le message de news:
4267dcef$0$14202$
Bonjour ,
j'ai un champ date(CO_ouvertle) et je voudrais calculer le numero de
semaine et le mettre dans un autre champ (CO_N°semaine):
j'ai ce code la :

' mise a jour du champs n°semaine de la date d'ouverture du dossier

Dim liste As Recordset, MaBD As Database, caldate, CO_OuvertLe,
CO_N°semaine
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set liste = MaBD.OpenRecordset("CONTRATS")

With liste

If Not .BOF Then
.MoveFirst

Do Until .EOF

'Champ CO_N°semaine

If Not IsNull(![CO_OuvertLe]) And ![CO_OuvertLe] <> "" Then
.Edit
'Calcul N° de semaine


Me![CO_N°semaine] = Format(Me![CO_OuvertLe], "ww", vbMonday,
vbFirstFourDays)
If Me![CO_N°semaine] > 52 Then
caldate = DateAdd("d", 7, Me![CO_OuvertLe])
If Format(caldate, "ww", vbMonday, vbFirstFourDays) > 52 Then

Me![CO_N°semaine] = 1
End If
.Update
End If
.MoveNext
Loop
End If

.Close
End With

la fonction caldate fonctionne mais je voudrais l'appliquer a toute une
table.
Pourriez vous m'aider !!! merci
Nabil



Avatar
Nabil Kasmi
Oui ça compile mais par contre ça n'exécute pas le script.alors que si
j'exécute la fonction format dans l'évènement mise à jour du champs elle
s'exécute alors très bien? tu vois d'ou ça peut venir ? :

Me![CO_N°semaine] = Format(Me![CO_OuvertLe], "ww", vbMonday,
vbFirstFourDays)
If Me![CO_N°semaine] > 52 Then
caldate = DateAdd("d", 7, Me![CO_OuvertLe])
If Format(caldate, "ww", vbMonday, vbFirstFourDays) > 52 Then
Me![CO_N°semaine] = 1
End If



"Raymond [mvp]" a écrit dans le message de
news:
Bonjour.

vérifie tes If et End If , c'est plutôt de là que ça vient.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nabil Kasmi" a écrit dans le message de news:
4267dcef$0$14202$
Bonjour ,
j'ai un champ date(CO_ouvertle) et je voudrais calculer le numero de
semaine et le mettre dans un autre champ (CO_N°semaine):
j'ai ce code la :

' mise a jour du champs n°semaine de la date d'ouverture du dossier

Dim liste As Recordset, MaBD As Database, caldate, CO_OuvertLe,
CO_N°semaine
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set liste = MaBD.OpenRecordset("CONTRATS")

With liste

If Not .BOF Then
.MoveFirst

Do Until .EOF

'Champ CO_N°semaine

If Not IsNull(![CO_OuvertLe]) And ![CO_OuvertLe] <> ""
Then
.Edit
'Calcul N° de semaine


Me![CO_N°semaine] = Format(Me![CO_OuvertLe], "ww", vbMonday,
vbFirstFourDays)
If Me![CO_N°semaine] > 52 Then
caldate = DateAdd("d", 7, Me![CO_OuvertLe])
If Format(caldate, "ww", vbMonday, vbFirstFourDays) > 52 Then

Me![CO_N°semaine] = 1
End If
.Update
End If
.MoveNext
Loop
End If

.Close
End With

la fonction caldate fonctionne mais je voudrais l'appliquer a toute une
table.
Pourriez vous m'aider !!! merci
Nabil







Avatar
Raymond [mvp]
dans le morceau que tu donnes le 1er If n'a pas de End If. Prendre
l'habitude de mettre un end if pour chaque if, la maintenance s'en trouve
facilitée.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nabil Kasmi" a écrit dans le message de news:
4268de88$0$18463$
Oui ça compile mais par contre ça n'exécute pas le script.alors que si
j'exécute la fonction format dans l'évènement mise à jour du champs elle
s'exécute alors très bien? tu vois d'ou ça peut venir ? :

Me![CO_N°semaine] = Format(Me![CO_OuvertLe], "ww", vbMonday,
vbFirstFourDays)
If Me![CO_N°semaine] > 52 Then
caldate = DateAdd("d", 7, Me![CO_OuvertLe])
If Format(caldate, "ww", vbMonday, vbFirstFourDays) > 52 Then
Me![CO_N°semaine] = 1
End If