IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Critère dans une requête croisée à l'aide d'un formulaire [AC-2016]


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut Critère dans une requête croisée à l'aide d'un formulaire
    Bonjour à tous,

    j'aurais besoin d'aide afin de résoudre mon probleme dans un critère dans une requête.

    voilà mon problème, j'ai un formulaire afin d'entrée les dates pour faire une comparaison entre deux années, tout fonctionne numéro un pour les dates, par contre j'ai voulu insérer un critère dans ma requête afin d'afficher le résultat pour un détaillant spécifique à l'aide d'une liste de choix. c'est la que celà ne fonctionne pas. il m'affiche l'erreur suivante
    Citation Envoyé par Access
    Le moteur de la base de données Microsoft Access ne reconnaît pas «[Formulaires]![Plage de date Année Dollars]![IDDetaillant] » en tant que nom de champ ou expression correcte.
    quand je clique Débogage, celà m'ouvre le code VBA, dont voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Commande10_Click()
        ' Ouverture de l'État Comparatif Année Dollars
        DoCmd.OpenReport "E_ComparatifAnneeDollars", acViewPreview, , , , Format(RecupDate(1), "yyyy") & ";" & Format(RecupDate(3), "yyyy")
    End Sub
    Voila le SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TRANSFORM Sum(T_SRemise.Montants) AS Vente
    SELECT T_Detaillant.NomDetaillant, T_SRemise.IDProduits, T_SRemise.IDSProduits
    FROM (T_Detaillant INNER JOIN T_Remise ON T_Detaillant.IDDetaillant = T_Remise.IDDetaillant) INNER JOIN T_SRemise ON T_Remise.IDRemise = T_SRemise.IDRemise
    WHERE (((T_Detaillant.NomDetaillant)=[Formulaires]![Plage de date Année Dollars]![IDDetaillant]) AND ((T_Remise.RemiseDate) Between RecupDate(1) And RecupDate(2) Or (T_Remise.RemiseDate) Between RecupDate(3) And RecupDate(4)))
    GROUP BY T_Detaillant.NomDetaillant, T_SRemise.IDProduits, T_SRemise.IDSProduits
    PIVOT Format([RemiseDate],"yyyy");
    Quelqu'un pourrais m'expliquer ce qui cloche?
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonsoir,
    1) que contient la fonction RecupDate() ?
    2) mieux vaut utiliser le paramètre WhereCondition plutôt qu'utiliser des champs de formulaires dans les requêtes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "E_ComparatifAnneeDollars", acViewPreview, , "T_Detaillant.NomDetaillant=" & [Forms]![Plage de date Année Dollars]![IDDetaillant], , Format(RecupDate(1), "yyyy") & ";" & Format(RecupDate(3), "yyyy")
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Bonjour tee_grandbois,

    Citation Envoyé par tee_grandbois Voir le message
    bonsoir,
    1) que contient la fonction RecupDate() ?
    le code de la fonction est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function RecupDate(ByVal Numdate As Integer) As Date
        RecupDate = Forms("Plage de date Année Dollars").Controls("Date " & Numdate)
    End Function
    2) mieux vaut utiliser le paramètre WhereCondition plutôt qu'utiliser des champs de formulaires dans les requêtes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "E_ComparatifAnneeDollars", acViewPreview, , "T_Detaillant.NomDetaillant=" & [Forms]![Plage de date Année Dollars]![IDDetaillant], , Format(RecupDate(1), "yyyy") & ";" & Format(RecupDate(3), "yyyy")
    Avec ce code, il me ramene avec l'erreur
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    si c'est la même erreur il faut quand même penser à modifier la clause Where de la requête en enlevant la partie concernant [Formulaires]![Plage de date Année Dollars]![IDDetaillant]:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TRANSFORM Sum(T_SRemise.Montants) AS Vente
    SELECT T_Detaillant.NomDetaillant, T_SRemise.IDProduits, T_SRemise.IDSProduits
    FROM (T_Detaillant INNER JOIN T_Remise ON T_Detaillant.IDDetaillant = T_Remise.IDDetaillant) INNER JOIN T_SRemise ON T_Remise.IDRemise = T_SRemise.IDRemise
    WHERE (((T_Remise.RemiseDate) Between RecupDate(1) And RecupDate(2) Or (T_Remise.RemiseDate) Between RecupDate(3) And RecupDate(4)))
    GROUP BY T_Detaillant.NomDetaillant, T_SRemise.IDProduits, T_SRemise.IDSProduits
    PIVOT Format([RemiseDate],"yyyy");
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  5. #5
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Je vais essayer, et vous reviens

    Citation Envoyé par tee_grandbois Voir le message
    si c'est la même erreur il faut quand même penser à modifier la clause Where de la requête en enlevant la partie concernant [Formulaires]![Plage de date Année Dollars]![IDDetaillant]:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TRANSFORM Sum(T_SRemise.Montants) AS Vente
    SELECT T_Detaillant.NomDetaillant, T_SRemise.IDProduits, T_SRemise.IDSProduits
    FROM (T_Detaillant INNER JOIN T_Remise ON T_Detaillant.IDDetaillant = T_Remise.IDDetaillant) INNER JOIN T_SRemise ON T_Remise.IDRemise = T_SRemise.IDRemise
    WHERE (((T_Remise.RemiseDate) Between RecupDate(1) And RecupDate(2) Or (T_Remise.RemiseDate) Between RecupDate(3) And RecupDate(4)))
    GROUP BY T_Detaillant.NomDetaillant, T_SRemise.IDProduits, T_SRemise.IDSProduits
    PIVOT Format([RemiseDate],"yyyy");
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  6. #6
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Bonjour Tee_GrandBois,

    Citation Envoyé par tee_grandbois Voir le message
    si c'est la même erreur il faut quand même penser à modifier la clause Where de la requête en enlevant la partie concernant [Formulaires]![Plage de date Année Dollars]![IDDetaillant]:
    Je préfère passé par un formulaire, j'ai essayer ton code, et me ramène la même erreur.
    il dois bien y avoir une solution?
    j'ai beau cherché dans les tuto et je trouve pas
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  7. #7
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Je préfère passé par un formulaire, j'ai essayer ton code, et me ramène la même erreur.
    tu passes bien par un formulaire puisque tu fais référence au contrôle [IDDetaillant] et ce n'est pas parce que cela te ramènes toujours la même erreur que c'est à cause du code que j'aifourni. Je pense que la raison du problème est ailleurs.
    [IDDetaillant] est-ce bien le nom de la liste de choix ?

    Si c'est possible, peux-tu poster ta base sans données confidentielles ? Cela va souvent plus vite pour trouver les dysfonctionnements.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  8. #8
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Bonjour tee-grandbois,

    je suis présentement à l'extérieur. aussitôt que possible je vais te faire parvenir la base vierge, ou bien avec des données exemple.

    merci pour ton aide, j'apprécie vraiment

    Citation Envoyé par tee_grandbois Voir le message
    tu passes bien par un formulaire puisque tu fais référence au contrôle [IDDetaillant] et ce n'est pas parce que cela te ramènes toujours la même erreur que c'est à cause du code que j'aifourni. Je pense que la raison du problème est ailleurs.
    [IDDetaillant] est-ce bien le nom de la liste de choix ?

    Si c'est possible, peux-tu poster ta base sans données confidentielles ? Cela va souvent plus vite pour trouver les dysfonctionnements.
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  9. #9
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut Base de données Vide
    Bonjour tee_grandbois,

    tel que vous m'avez suggéré "Ma base de données vides"
    • Remarque: vous trouverez dans le Formulaire "Plage de date Année Dollars" une liste de choix (c'est elle le problème)
    • Aussi, vous pouvez me dire vos commentaire, je suis très ouvert à m'améliorer


    Merci de votre aide si précieuse!
    Fichiers attachés Fichiers attachés
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  10. #10
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    j'ai corrigé la requête, l'état et le formulaire qui fonctionnent correctement maintenant.
    Tu peux donc récupérer les 3 objets suivants:
    • R_ComparatifAnneeDollars
    • Plage de date Année Dollars
    • Etat_ComparatifAnneeDollars

    dans la base jointe: 2Détaillant_UP.zip

    Plusieurs remarques concernant les corrections:

    requête: R_ComparatifAnneeDollars
    - j'ai ajouté le champ IDDetaillant, car il vaut mieux filtrer sur l'identifiant unique plutôt qu'un champ texte.
    Pour rappel (ce que j'avais oublié) les requêtes analyses croisées dynamiques n'aiment pas du tout les filtres avec des champs de formulaires, d'où ton problème actuel.

    formulaire: Plage de date Année Dollars
    - dans un formulaire utilisé pour lancer des éditions il ne faut pas mettre de source au formulaire, ni de source contrôle puisque les boutons et la liste déroulante sont des contrôles indépendants servant uniquement à la sélection:

    Nom : _4.JPG
Affichages : 260
Taille : 106,2 Ko

    - il n'y a aucun contrôle sur la saisie des dates, il faudrait le faire sur clic de chaque bouton pour éviter les plantages si une date est nulle.
    - j'ai modifié l'appel de l'ouverture de l'état bouton Commande10, en utilisant l'argument OpenArgs pour sélectionner le détaillant.

    A ce propos, il est préférable de donner un nom significatif au contrôles pour plus de lisibilité (btn_EtatCompAnneeUSD, par exemple) et il vaut mieux éviter les espaces, caractères accentués (é ê ù à ç ...), caractères spéciaux ou réservés (* & + ...) pour nommer les objets, la simplicité est l'ami du développeur.

    état: Etat_ComparatifAnneeDollars
    - l'état, à terme n'aurait pas pu fonctionner dès l'année prochaine. En effet, les requêtes dynamiques génèrent des noms de champs qui peuvent ne pas être reconnues dans les objets états ou formulaires dès lors que les données changent.
    - J'ai renommé les contrôles qui faisaient référence à un champ fixe de la requête (2018, 2019)
    - J'ai donc alimenté dynamiquement les légendes des étiquettes et les sources des contrôles à l'ouverture de l'état, le filtre sur le détaillant se fait aussi à l'ouverture.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  11. #11
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut Résolu
    Bonjour tee-grandbois,

    1- Merci de ton aide, ce fût vraiment apprécié!
    2- Et merci pour tes conseil!
    3- Afin de me parfaire, auriez-vous un livre à me conseiller?

    Merci encore !
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  12. #12
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    3- Afin de me parfaire, auriez-vous un livre à me conseiller?
    les tutos, la FAQ et la touche
    bonne lecture !
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  13. #13
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut Champ vide
    Bonjour tee_grandbois

    j'ai un petit problème, dans mon état j'ai ajouter un champ "txtdifference" qui calcul la différence entre "txtAn2"-"txtAn1".

    Mon problème c'est que parfois dans champ "txtAn1" et "txtAn2" la cellule est vide (donc pas de calcul)
    il y a t-il un moyen que la valeur soit par défaut à "0" (dans mon état), oû bien je dois modifier ma requête?

    La balance marche nickel..... youpi!
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  14. #14
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    Nz() permet d'inhiber les valeurs nulles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Nz([txtAn2];0) - Nz([txtAn1];0)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  15. #15
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    bonjour,
    Nz() permet d'inhiber les valeurs nulles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Nz([txtAn2];0) - Nz([txtAn1];0)
    Cela fonctionne à merveille

    MERCI!
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  16. #16
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Ok, mais n'oublie pas le bouton si cela fonctionne.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  17. #17
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut N'est pas tout fait RÉSOLU
    J'ai ré-ouvert le POST,

    Bonjour tee_grandbois,

    J'essais de faire une requête par trimestre et aussi un État.
    La requête fonctionne très bien. (Merveilleux)

    Par contre lors de l'ouverture de L'état, il m'apparait une erreur ( Entré une valeur de paramètre), si je clique sur Ok sans entré de valeur, j'ai mon état qui ouvre ( avec une collonne [1] et [2019], j'imagine que la conne 1 dois être le trimestre 1, mais pourquoi dans les collones 2,3 et 4 ne s'affiche pas?

    Voici le code SQL de ma requête

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TRANSFORM Sum(T_SRemise.Montants) AS Vente
    SELECT T_Detaillant.IDDetaillant, T_Detaillant.NomDetaillant, T_SRemise.IDProduits, T_SRemise.IDSProduits, Year([RemiseDate]) AS Année
    FROM (T_Detaillant INNER JOIN T_Remise ON T_Detaillant.IDDetaillant = T_Remise.IDDetaillant) INNER JOIN T_SRemise ON T_Remise.IDRemise = T_SRemise.IDRemise
    WHERE (((T_Remise.RemiseDate) Between RecupDate(1) And RecupDate(2) Or (T_Remise.RemiseDate) Between RecupDate(3) And RecupDate(4)))
    GROUP BY T_Detaillant.IDDetaillant, T_Detaillant.NomDetaillant, T_SRemise.IDProduits, T_SRemise.IDSProduits, Year([RemiseDate])
    ORDER BY Format([RemiseDate],"q") DESC 
    PIVOT Format([RemiseDate],"q") In ("1","2","3","4");

    et le code VBA à l'ouverture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Private Sub Report_Open(Cancel As Integer)
    Dim oRst As DAO.Recordset
    Dim i  As Integer, j As Integer
    ' Trimestre
    ' Chargement dynamique des années sélectionnées
    Set oRst = CurrentDb.OpenRecordset("select * from " & Me.RecordSource, dbOpenDynaset)
    For i = 0 To oRst.Fields.Count - 4
        ' Si le nom du champ contient une valeur numérique, c'est une année
        If IsNumeric(oRst.Fields(i).Name) Then
            j = j + 1
        ' Alimentation de l'étiquette année
            Me.Controls("etqAn" & j).Caption = oRst.Fields(i).Name
        ' Alimentation du champ détail
            Me.Controls("txtAn" & j).ControlSource = oRst.Fields(i).Name
        ' Alimentation du total groupe 1
            Me.Controls("TotGrp1An" & j).ControlSource = "=Sum([" & oRst.Fields(i).Name & "])"
        ' Alimentation du total groupe 2
            Me.Controls("TotGrp2An" & j).ControlSource = "=Sum([" & oRst.Fields(i).Name & "])"
        ' Alimentation du total pied d'état
            Me.Controls("TotPietAn" & j).ControlSource = "=Sum([" & oRst.Fields(i).Name & "])"
        End If
    Next i
     
    oRst.Close
    Set oRst = Nothing
     
    ' Sélection du détaillant si alimenté
    If Not IsNull(Me.OpenArgs) Then
        Me.RecordSource = "select * from " & Me.RecordSource & " where IDDetaillant=" & Me.OpenArgs
    End If
    End Sub
    j'ai essayer de changer la ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 0 To oRst.Fields.Count - 4
        ' Si le nom du champ contient une valeur numérique, c'est une année
        If IsNumeric(oRst.Fields(i).Name) Then
            j = j + 1
    Pour celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 0 To oRst.Fields.Count - 4
        ' Si le nom du champ contient une valeur numérique, c'est une année
        If IsNumeric(oRst.Fields(i).Name) Then
            j = j + 4
    Est-ce que le J=J +4 (serais le nombre de Colonne) ??

    Merci de ton aide!

    Citation Envoyé par tee_grandbois Voir le message
    Ok, mais n'oublie pas le bouton si cela fonctionne.
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  18. #18
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    peux-tu poster l'état (uniquement) dans une nouvelle base ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  19. #19
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 0 To oRst.Fields.Count - 4   '==> cette commande fait une boucle de 0 à n (n correspond au nombre total des champs du RecordSet - 4, si il y a 20 champs, le code exécutera la boucle 17 fois)
    dans mon code d'origine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 0 To oRst.Fields.Count - 1
    j'enleve -1 car la boucle commence à partir de 0: si il à 20 champs, il faut faire 20 fois la boucle mais en partant de 0 jusqu'à 19.
    Est-ce que le J=J +4 (serais le nombre de Colonne) ??
    Non, je ne sais pas ce que tu cherches à faire, mais ce n'est jamais bon de changer du code que l'on ne comprend pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    j = j + 4 '===> la première fois, j aura 4 comme valeur, la seconde fois 8, ensuite 12 puis 16 ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  20. #20
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    voici
    Fichiers attachés Fichiers attachés
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Critère sur Count dans une Requête Croisée
    Par Nana35 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 03/12/2008, 11h46
  2. critères dans une requête ACCESS
    Par idris2nice dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 22/04/2008, 16h16
  3. Pb lié aux critères dans une requête
    Par nomade333 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 26/03/2008, 14h17
  4. Envoyer plusieurs critères dans une requête ?
    Par olivierc25 dans le forum Access
    Réponses: 4
    Dernier message: 20/03/2007, 15h13
  5. Condition dans une requête croisée
    Par decour dans le forum Access
    Réponses: 1
    Dernier message: 18/10/2005, 10h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo