Paramétrer une requête à chaque passage dans une boucle

Anonyme
2025-03-23T08:51:47+00:00

Bonjour,

J'ai une table Access qui reprends 35 colonnes.

  • La colonne ID
  • La colonne Nom
  • La colonne Année
  • La colonne Mois
  • et 31 colonnes qui représentent les jours du mois de J1 à J31

J'obtiens les résultats que je souhaite au travers d'une requête paramétrée comme ceci :

Par exemple pour le jour 12 :

DoCmd.RunSQL ("SELECT CS_COB.NomMP, CS_COB.Matricule, CS_COB.Annee, CS_COB.Mois, CS_COB.J12 INTO T_Resultatd " & _
"FROM CS_COB " & _

"WHERE (((CS_COB.Annee) Like '2025') AND ((CS_COB.Mois) Like '03') AND ((CS_COB.J1) Not Like '1*'));")

mais je souhaiterais que cette requête puisse me renvoyer des résultats pour chaque jours en incluent celle ci dans une boucle.
Et c'est là que je calle, je voudrais que le critère du jours soit pour le premier passage de la boucle CS_COB.J1, puis CS_COB.J2, CS_COB.J3, ... Jusqu'à J31
Je n'arrive pas à faire en sorte de faire varier mon champ à chaque passage de boucle.

Merci d'avance pour votre aide

Microsoft 365 et Office | Access | Autres | Autres

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire
Réponse acceptée par l’auteur de la question
Anonyme
2025-03-23T09:47:10+00:00

Cette réponse a été automatiquement traduite. Par conséquent, il peut y avoir des erreurs grammaticales ou des formulations étranges.

Salut Vincent,

Le code VBA suivant montre comment il parcourt chaque champ de jour (J1 à J31) et exécute votre requête SQL pour chaque jour :

Sub LoopDaysOfMonth()
    Dim i As Integer
    Dim strSQL As String
    
    For i = 1 To 31
        ' Build the SQL query string
        strSQL = "SELECT CS_COB.NOMMP, CS_COB.MATICLE, CS_COB.NANEE, CS_COB.MOIS, CS_COB.J" & CStr(i) & " " & _
                 "INTO t_resultatd" & i & " " & _
                 "FROM CS_COB " & _
                 "WHERE ((CS_COB.NANEE) LIKE '2025') AND ((CS_COB.MOIS) LIKE '03') AND ((CS_COB.J" & CStr(i) & ") NOT LIKE '1*');"
        
        ' Execute the query
        DoCmd.RunSQL strSQL
    Next
End Sub

Cette réponse a-t-elle été utile ?

1 personne a trouvé cette réponse utile.
0 commentaires Aucun commentaire

4 réponses supplémentaires

  1. Anonyme
    2025-03-23T14:43:10+00:00

    Je viens de tester et ca fonctionne, merci beaucoup

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2025-03-23T09:57:43+00:00

    non, ma table doit bien comporter 1 champ par jour

    Merci pour ton intérêt

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2025-03-23T09:56:29+00:00

    Hello,

    Je vais essayer ce que tu me proposes.
    Et en tout cas merci déjà pour ta réponse.
    Vince

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Hecatonchire 53,950 Points de réputation Modérateur bénévole
    2025-03-23T09:50:27+00:00

    Bonjour,

    Je n'ai pas tous compris mais il me semble qu'il y a un problème d'organisation dans ta table

    Il me semble que sa structure devrait être plus :

    • La colonne ID
    • La colonne Nom
    • La colonne Année
    • La colonne Mois
    • La colonne N°Jour
    • La colonne ValeurJour

    Ce qui en serait plus conforme aux normes classiques d'organisation et en faciliterait l'exploitation

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire