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 :

Création d'un index de page à la façon d'un dictionnaire [AC-2007]


Sujet :

IHM

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 26
    Points : 19
    Points
    19
    Par défaut Création d'un index de page à la façon d'un dictionnaire
    Bonjour,

    Je suis en train de créer un état avec deux groupes un sur les noms de Communes et l'autre sur les Lettres (A, B..) ce qui me permet de grouper & classer mes enregistrements. Je voudrais que pour chaque page physique (papier) de mon rapport afficher, sur un bord de ma page, la première lettre du nom de la 1er commune (dans l'ordre alphabétique) qui apparait dans la page et la première lettre du nom de la dernière commune qui apparaît dans la page. Ainsi en bas de chaque page, j'aurais deux lettre (A-D) qui permettront d'optimiser la recherche à la façon d'un dictionnaire. Si quelqu'un aurait une piste pour m'aider car je suis un peu sec. EN terme de développement, je me débrouille mais je suis restreint à des petits développements assez simple de 20 lignes environ.

    Merci d'avance

    Cordialement

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Faire ce que tu demandes est un poil compliqué.
    En gros il faut faire 2 fois le travail, un fois pour calculer le début et la fin et une fois pour l'imprimer.

    Je te suggère une alternative :

    Faire un groupe sur la lettre initiale et afficher une entête de groupe.
    Définir la propriété "répéter au début des pages" (ou quelque chose d'approchant) à oui.

    Ce que cela va faire c'est mettre une entête avec la lettre au début de chaque groupe (A, B, C, ...) et si ton groupe s'étend sur plus d'une page, cela va remettre l'entête en haut de la page.

    Ex :

    A

    alpha
    anagramme
    alice

    B

    Béta
    Béatrice

    C

    Cacao
    ...... saut de page
    C

    Carmen

    D

    Ding-dong

    Temps de travail un gros 1/4 heure, le temps de définir le champ initiale dans la source de donnée, le groupe sur ce champ dans le rapport et un peu de mise en forme.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 62
    Points : 97
    Points
    97
    Par défaut Création d'un index de page à la fàçon d'un dictionnaire
    Bonjour,

    Est ce que lien correspond à la demande (en l'adaptant bien sûr) ?
    https://support.microsoft.com/fr-fr/kb/466178

    Je l'avais utilisé pour un état listant des archers (par ordre alpha) cela me donnait le premier nom et le dernier nom dans la page.

    A+
    Henri

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 26
    Points : 19
    Points
    19
    Par défaut
    Salut,

    la solution que tu m'indique à l'air de correspondre à mon besoin. Cependant Access m'indique que gDernier() n'est pas un Sub ou une fonction définie. Du coup je ne sais pas si c'est du VBA ou une fonction à mettre dans un module. Dans ce dernier cas quel est le code

    Merci par avance de tes éléments de réponse.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 26
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    La solution de Riton47 ma donnée la moitié de la solution car j'arrive à afficher en pied de page de mon rapport le nom de la premier commune du groupe qui compose la page. Il ne me reste plus que la le nom de la dernier commune. Est-ce que tu as le code Riton47 car ta solution fais référence à uen base exemple de MSN qui s'appelle SOLUTION.mdb. Cette base exemple n'est plus dans les base exemple d'aujourd'hui.

    Autrement si quelqu'un à une solution je ssui preneur car je tourne en rond . J’essaie d'illustrer mon besoin.

    Bordeaux
    Enregistrement 1
    Enregistrement 2
    Enregistrement 3
    Paris
    Enregistrement 1
    Enregistrement 2
    Enregistrement 3
    Poitier
    Enregistrement 1
    Enregistrement 2
    Enregistrement 3


    Mon pied de page affichera Bordeaux - Poitier . Ainsi l'utilisateur verra juste en feuilletant le bas de page les villes qui sont décrites dans la page.

    Voila je vous remercie par avance

  6. #6
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 419
    Points : 16 262
    Points
    16 262
    Par défaut
    Bonjour

    Crée
    • un regroupement par ville dans ton état comme dans ton exemple
    • un champ Debut et un champ Fin dans ton pied de page,
    • un module standard avec
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      Option Compare Database
      Public Villedebut
    • puis les modules d'état suivants (nom du champ à adapter)
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      Private Sub ZoneEntêtePage_Format(Cancel As Integer, FormatCount As Integer)
           Villedebut = [Ville]
      End Sub
       
      Private Sub ZonePiedPage_Format(Cancel As Integer, FormatCount As Integer)
          [Debut] = Villedebut
          [Fin] = [Ville]
      End Sub
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 26
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Ta solution marche super bien.

    Je te remercie pour le coup de pouce.

    A+

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 62
    Points : 97
    Points
    97
    Par défaut Création d'un index de page à la façon d'un dictionnaire
    Bonjour,

    Mes excuses, mais j'étais pas mal occupé ces derniers temps et je ne vous ai pas répondu.
    J'ai vu que vous êtes arrivé au résultat grâce à Chris

    Je poste le code, cela peut servir....
    C'est un état sans regroupement (juste trier par ordre alpha).

    A adapter bien sûr avec ses propres noms d'état, de champ, de table ou requête.


    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Option Compare Database   'Utilise l'ordre de la base de données pour les comparaisons de chaînes
    Option Explicit
     
        ' Tableau du dernier enregistrement de chaque page et du dernier enregistrement dans le jeu d'enregistrement.
        Dim gDernier() As String
     
        ' Indicateur pour le nombre de passes au travers de l'état.
        Dim gDernièrePage As Integer
     
     
    Private Sub PiedPage2_Format(Annuler As Integer, FormatCount As Integer)
     
        ' Pendant la première passe, augmente la taille du tableau
        ' et ajoute le dernier enregistrement de la page dans le tableau.
        If Not gDernièrePage Then
            ReDim Preserve gDernier(Reports![Liste téléphonique des clients].Page + 1)
            gDernier(Reports![Liste téléphonique des clients].Page) = _
                Reports![Liste téléphonique des clients]![Nom]
        End If
     
    End Sub
     
    Private Sub EntêtePage0_Format(Annuler As Integer, FormatCount As Integer)
     
        ' Pendant la seconde passe, remplir les zones de texte
        ' [Première entrée] et [Dernière entrée].
        If gDernièrePage = True Then
            Reports![Liste téléphonique des clients]![Première entrée] = _
                Reports![Liste téléphonique des clients]![Nom]
            Reports![Liste téléphonique des clients]![Dernière entrée] = _
                gDernier(Reports![Liste téléphonique des clients].Page)
        End If
     
    End Sub
     
    Private Sub PiedÉtat4_Format(Annuler As Integer, FormatCount As Integer)
     
        Dim bds As Database
        Dim rst As Recordset
     
        ' Modifier l'indicateur après que la première passe soit complétée.
        gDernièrePage = True
     
        ' Ouvrir le jeu d'enregistrement pour l'état.
        Set bds = CurrentDb()
        Set rst = bds.OpenRecordset("ContactsTriAlpha")
        ' Aller au dernier enregistrement dans le jeu d'enregistrement.
        rst.MoveLast
           ' Entrer le dernier enregistrement dans le tableau.
        ReDim Preserve gDernier(Reports![Liste téléphonique des clients].Page + 1)
        gDernier(Reports![Liste téléphonique des clients].Page) = rst![Nom]
     
    End Sub
    Encore désolé pour le retard.
    Henri

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/11/2005, 13h37
  2. Réponses: 7
    Dernier message: 22/02/2005, 13h07
  3. [xsl][XML] création d'un index
    Par Boosters dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 28/11/2002, 08h29

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