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

IHM Discussion :

N° de ligne dans formulaire continu


Sujet :

IHM

  1. #1
    Invité
    Invité(e)
    Par défaut N° de ligne dans formulaire continu
    Bonjour à tous

    Afin d'effectuer une mise en forme conditionnelle, j'ai besoin de créer un N° de ligne dans mon formulaire en mode continu.

    J'ai ajouté la fonction suivante dans un module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Function NumeroLigne(frm As Form)
    Dim rst As Recordset
    On Error Goto NumeroLigneErr
    Set rst = frm.RecordsetClone
    rst.Bookmark = frm.Bookmark
    NumeroLigne = rst.AbsolutePosition
    Set rst = Nothing
    Exit Function
    NumeroLigneErr:
    	Set rst = Nothing
    	NumeroLigne = Null
    	Exit Function
    End Function
    J'ai créé dans mon formulaire une zone de texte indépendante "Numéro" avec en source contrôle l'expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =NumeroLigne(Formulaires!Formulaire_récap)
    Et celà ne marche pas

    Fais je une erreur grossière?

    Merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Il faut poser ta fonction dans le sous-formulaire et la modifier comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function NumeroLigne() As Long
    Dim rst As dao.Recordset
        On Error GoTo NumeroLigneErr
        Set rst = Me.RecordsetClone
        rst.Bookmark = Me.Bookmark
        NumeroLigne = rst.AbsolutePosition
    NumeroLigneFin:
        Set rst = Nothing
        Exit Function
    NumeroLigneErr:
        NumeroLigne = 0
        Resume NumeroLigneFin
    End Function
    Ensuite, ta zone de texte indépendante "Numéro" est égale à
    Argy

  3. #3
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Un texte independant affichera la même valeur dans tous les enregistrements.
    Je pense que la meilleure solution est d'ajouter un champ Numero à la table source

  4. #4
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Salut,
    je pense que si la table contient une clé ou un index sans doublons, il est possible de se passer d'un champ en dur avec ce type de source

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT (SELECT Count(index) FROM table T2 WHERE T2.index<=T1.index) AS NumLigne, * FROM table AS T1;
    normalement NumLigne devrait apparaître dans la liste des champs et il suffit de l'intégrer au form (caché éventuellement)...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par argyronet Voir le message
    Bonjour,

    Il faut poser ta fonction dans le sous-formulaire et la modifier comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function NumeroLigne() As Long
    Dim rst As dao.Recordset
        On Error GoTo NumeroLigneErr
        Set rst = Me.RecordsetClone
        rst.Bookmark = Me.Bookmark
        NumeroLigne = rst.AbsolutePosition
    NumeroLigneFin:
        Set rst = Nothing
        Exit Function
    NumeroLigneErr:
        NumeroLigne = 0
        Resume NumeroLigneFin
    End Function
    Ensuite, ta zone de texte indépendante "Numéro" est égale à
    Argy

    Merci Argy
    Je n'ai pas encore essayé ton code, car je viens juste d'arriver à ce que le mien fonctionne.
    En fait dans les propriétés de mon formulaire, j'avais interdit les modifications.
    Le but est de faire un affichage de couleur différent une ligne sur 2 par une condition Mod 2 = 0.
    Je ne peux donc pas mettre un champ supplémentaire dans la table, car dans ce cas , les fonctions de tri ou de filtre mettent la pagaille.

  6. #6
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Citation Envoyé par argyronet Voir le message
    Bonjour,

    Il faut poser ta fonction dans le sous-formulaire et la modifier comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function NumeroLigne() As Long
    Dim rst As dao.Recordset
        On Error GoTo NumeroLigneErr
        Set rst = Me.RecordsetClone
        rst.Bookmark = Me.Bookmark
        NumeroLigne = rst.AbsolutePosition
    NumeroLigneFin:
        Set rst = Nothing
        Exit Function
    NumeroLigneErr:
        NumeroLigne = 0
        Resume NumeroLigneFin
    End Function
    Ensuite, ta zone de texte indépendante "Numéro" est égale à
    Argy
    et ça marche!

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Faw Voir le message
    et ça marche!
    Merci à tous . Cà marche nickel et ça change tout.

  8. #8
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Salut, je ne connaissais que la méthode du sql qui, à l'évidence est limitée dans la pratique et surtout oblige à toucher à la source du form.
    Au niveau de la performance, ça reste à tester sur des gros volumes car la fonction a l'air de s'exécuter à chaque activation d'enregistrement.

    A mettre dans les contributions...au moins

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème retour à la ligne dans formulaire
    Par Mysti¢ dans le forum Langage
    Réponses: 1
    Dernier message: 03/04/2006, 13h34
  2. liste déroulante dans formulaire continu
    Par remi59 dans le forum Access
    Réponses: 7
    Dernier message: 31/03/2006, 09h40
  3. Réponses: 15
    Dernier message: 13/03/2006, 16h24
  4. Comment "colorer" une ligne dans formulaire en col
    Par pyxosledisciple dans le forum IHM
    Réponses: 5
    Dernier message: 09/02/2006, 12h29
  5. Figer colonnes dans formulaire continu
    Par Mr.Gus dans le forum IHM
    Réponses: 10
    Dernier message: 30/11/2003, 13h59

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