Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Archivage

3 réponses
Avatar
Deliriuma
Bonjour,
Je travaille sur des commandes et je fais mes comptes chaque semaine.
Comment puis-je faire pour archiver mes données en ne me servant pas d'une
date mais d'un numéro de semaine afin de retrouver facilement mes comptes?

3 réponses

Avatar
Eric
Bonjour "Deliriuma"

Tu peux faire ca en code pour archiver tes données

1-Création de la table tArchive avec les champs que tu veux et un Champ
n° de semaine defini en Numérique Integer

2- Création d'une procédure en VBA ajoutant les enregistrements dans la
table tArchive en fonction du n° de semaine

Sub Test503()
Dim rs As DAO.Recordset, t As DAO.Recordset, reponse As String
Set t = CurrentDb.OpenRecordset("tArchiveTest")
Set rs = CurrentDb.OpenRecordset("tFacture")
reponse = InputBox("Pour quel n° de semaine ?")
If Len(reponse) = 0 Then Exit Sub
rs.MoveFirst
While Not rs.EOF
t.AddNew
If DatePart("ww", rs!DateFacture, 2) = CInt(reponse) Then
' 2 pour que la semaine débute le lundi et non le dimanche
t!NumFacture = rs!NumFacture
t!DateFacture = rs!DateFacture
t!MontantHT = rs!MontantHT
t!NumSemaine = DatePart("ww", rs!DateFacture, 2)
t.Update
End If
rs.MoveNext
Wend
End Sub

3- Pour retrouver tes comptes, il suffira de créer une requête sur la
table tArchive en paramétrant le champ NumSemaine.

Voila
A+
Eric

PS1: Tu peux faire ca aussi en sql, un sql remplissant la table et un sql
mettant à jour le champ NumSemaine.

Au diable l'avarice, je te la donne aussi :-))

Sub Test504()
Dim sql As String, reponse As String
reponse = InputBox("Pour quel n° de semaine ?")
If Len(reponse) = 0 Then Exit Sub
sql = "Insert Into tArchiveTest select DateFacture, NumFacture,
MontantHT "
sql = sql & "from tFacture where DatePart('ww',DateFacture,2)=" &
CInt(reponse) & ";"
' La fonction DatePart te permet de préciser le jour de début de
semaine
' Par défaut c'est le dimanche (1), pour nous le Lundi donc , j'ai
mis 2
CurrentDb.Execute sql
sql = "Update tArchiveTest set NumSemaine=" & CInt(reponse) & " where
DatePart('ww',DateFacture,2)=" & CInt(reponse)
CurrentDb.Execute sql
End Sub

PS2: Tu peux toujours améliorer en vérifiant si la table tArchive existe
ou non et en fonction la créer ou ajouter seulement.



"Deliriuma" écrivait
news:406e7c6b$0$292$:

Bonjour,
Je travaille sur des commandes et je fais mes comptes chaque semaine.
Comment puis-je faire pour archiver mes données en ne me servant pas
d'une date mais d'un numéro de semaine afin de retrouver facilement
mes comptes?




Avatar
Patatrac92
bonjour,

tu peux utiliser ça : Format(Date, "ww") qui retourne le n° de la semaine
correspondant à la date

Patrice

"Deliriuma" a écrit dans le message de
news:406e7c6b$0$292$
Bonjour,
Je travaille sur des commandes et je fais mes comptes chaque semaine.
Comment puis-je faire pour archiver mes données en ne me servant pas d'une
date mais d'un numéro de semaine afin de retrouver facilement mes comptes?




Avatar
Eric
re,

Je parle d'une table tArchive et j'ai mis dans le code tArchiveTest, je
pense que tu auras corrigé de toi même.
De plus, j'ai oublié de te préciser de charger les reférences DAO 3.x dans
ton projet pour ce qui concerne la 1ere mouture.
Enfin, toujours dans cette version DAO, en ouvrant la table tFacture comme
un jeu d'enregistrements dbOpenRecordset, il y a de fortes chances qu'en
utilisant la méthode Find, le traitement soit plus rapide. ( Le code pour
une prochaine fois si vraiment tu le veux ;-) )

A+
Eric

Eric écrivait
news::

Bonjour "Deliriuma"

Tu peux faire ca en code pour archiver tes données

1-Création de la table tArchive avec les champs que tu veux et un
Champ n° de semaine defini en Numérique Integer

2- Création d'une procédure en VBA ajoutant les enregistrements dans
la table tArchive en fonction du n° de semaine

Sub Test503()
Dim rs As DAO.Recordset, t As DAO.Recordset, reponse As String
Set t = CurrentDb.OpenRecordset("tArchiveTest")
Set rs = CurrentDb.OpenRecordset("tFacture")
reponse = InputBox("Pour quel n° de semaine ?")
If Len(reponse) = 0 Then Exit Sub
rs.MoveFirst
While Not rs.EOF
t.AddNew
If DatePart("ww", rs!DateFacture, 2) = CInt(reponse) Then
' 2 pour que la semaine débute le lundi et non le dimanche
t!NumFacture = rs!NumFacture
t!DateFacture = rs!DateFacture
t!MontantHT = rs!MontantHT
t!NumSemaine = DatePart("ww", rs!DateFacture, 2)
t.Update
End If
rs.MoveNext
Wend
End Sub

3- Pour retrouver tes comptes, il suffira de créer une requête sur la
table tArchive en paramétrant le champ NumSemaine.

Voila
A+
Eric

PS1: Tu peux faire ca aussi en sql, un sql remplissant la table et un
sql mettant à jour le champ NumSemaine.

Au diable l'avarice, je te la donne aussi :-))

Sub Test504()
Dim sql As String, reponse As String
reponse = InputBox("Pour quel n° de semaine ?")
If Len(reponse) = 0 Then Exit Sub
sql = "Insert Into tArchiveTest select DateFacture, NumFacture,
MontantHT "
sql = sql & "from tFacture where DatePart('ww',DateFacture,2)=" &
CInt(reponse) & ";"
' La fonction DatePart te permet de préciser le jour de début de
semaine
' Par défaut c'est le dimanche (1), pour nous le Lundi donc , j'ai
mis 2
CurrentDb.Execute sql
sql = "Update tArchiveTest set NumSemaine=" & CInt(reponse) & "
where
DatePart('ww',DateFacture,2)=" & CInt(reponse)
CurrentDb.Execute sql
End Sub

PS2: Tu peux toujours améliorer en vérifiant si la table tArchive
existe ou non et en fonction la créer ou ajouter seulement.



"Deliriuma" écrivait
news:406e7c6b$0$292$:

Bonjour,
Je travaille sur des commandes et je fais mes comptes chaque semaine.
Comment puis-je faire pour archiver mes données en ne me servant pas
d'une date mais d'un numéro de semaine afin de retrouver facilement
mes comptes?