Autres Report de données Access avec VBA

  • Initiateur de la discussion Initiateur de la discussion @Tech
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

@Tech

XLDnaute Nouveau
Bonjour à tous,

J'ai un petit soucis avec ma base de donnée Access, et je vais avoir besoin d'aide...

Tous les ans je dois reporter des interventions préventive d'une année sur une autre, selon la périodicité.

J'ai une table qui s'appelle "planning préventif" avec les champs suivants

N° BTP
Semaine interv (avec cadencement de plusieurs semaine pour certains BTP)
Année interv
soldé interv
date de fin du BTP

J'ai une requête "Report preventif" (avec les mêmes champs que "planning préventif") afin de pouvoir reporter tous les BTP sur les années suivantes selon leurs périodicités.

Le code VBA ci-dessous ne fonctionne pas très bien, car il ne reporte pas tous cadencements... certains passe dans les mailles du filet et je ne sais pas pourquoi !

Au lieu de reporter 2314 cadencement au total, il n'en reporte que 1706, ce qui fait une différence de 608.



Option Compare Database
Option Explicit

Private Sub CmdReportBTP_Click()
Dim db As Database
Dim rsScan As DAO.Recordset
Dim rsPlan As DAO.Recordset
Dim machine As String
Dim annee As Integer
Dim semaines() As Integer
Dim numeros() As Integer
Dim i As Integer
Dim anneeReport As Integer

anneeReport = InputBox("Saisir l'année de report :")

Set db = CurrentDb
Set rsScan = db.OpenRecordset("report_preventif", dbOpenSnapshot)
Set rsPlan = db.OpenRecordset("Planning preventif", dbOpenDynaset)
i = 1
If rsScan.BOF = True And rsScan.EOF = True Then
MsgBox "Aucun enregistrement", vbCritical
Exit Sub
End If

machine = rsScan.Fields("code machine").Value
annee = rsScan.Fields("année interv").Value

Do While rsScan.EOF = False

If rsScan.Fields("code machine").Value = machine And rsScan.Fields("année interv").Value = annee Then
If annee <= anneeReport Then
rsPlan.AddNew
rsPlan.Fields("N° BTP").Value = rsScan.Fields("N° BTP").Value
rsPlan.Fields("Semaine interv").Value = rsScan.Fields("Semaine interv").Value
rsPlan.Fields("année interv").Value = annee + rsScan.Fields("périodicité").Value
rsPlan.Fields("soldée interv").Value = False
rsPlan.Update
End If
annee = rsScan.Fields("année interv").Value
End If

rsScan.MoveNext
'Ajouter le test si on est pas en EOF
If Not rsScan.EOF Then
If rsScan.Fields("code machine").Value <> machine Then annee = rsScan.Fields("année interv").Value
machine = rsScan.Fields("code machine").Value

End If
Loop
rsScan.Close
rsPlan.Close
Set rsScan = Nothing
Set rsPlan = Nothing

MsgBox "Report des BTP effectué avec succès"

End Sub



Voila! Est-ce que quelqu'un pourrais éventuellement m'aider à résoudre ce petit problème, car moi avec mon petit niveaux je n'y arriverai pas... 🙁

Merci d'avance à tous, et bon week-end !

🙂
 
Bonjour @Tech,

bonne année 2021, et bienvenue sur le site XLD ! 🥳

je ne peux pas t'aider pour ta demande, mais tu as posté au mauvais endroit :
ici, c'est "Questions / Forum Excel" ; pour Access, tu dois poster ta demande
sur "Questions / Autres applications" ; tu auras plus de chances d'obtenir
des réponses ; bonne chance ! 🍀

si y'avait un peu d'Excel, ça serait bien ici, mais j'en n'ai pas l'impression ! 😜

bon week-end à toi aussi ! 🙂


soan
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
250
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
79
Réponses
4
Affichages
362
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
503
Réponses
2
Affichages
405
Retour