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

Excel Discussion :

Renvoyer une liste de données pour une donnée sélectionnée [XL-2013]


Sujet :

Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Service public

    Informations forums :
    Inscription : Février 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Renvoyer une liste de données pour une donnée sélectionnée
    Bonjour à tous,

    Alors, pour vous exposer le problème, je suis en train de créer des feuilles de pointage horaire (fichier exemple joint).
    J'ai, pour une liste de services donnée, un certain nombre d'activités.
    Je cherche donc, lorsque je sélectionne un service donné ma liste déroulante en cellule (A4), à ce que s'affiche la liste des services lui correspondant (liste dans onglet "Liste services activités") dans la colonne "Activités".
    Dois je nécessairement passer par une macro (si oui laquelle), ou existe t'il une formule le permettant?
    D'avance merci, et bonne fin de journée
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Je vois difficilement comment faire avec des formules, quoique...
    Mais voici une piste avec macro (à mettre dans le code de la feuille "feuille pointage"

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address(False, False) = "A4" Then
            Range("A8:A25").ClearContents
            Lister
        End If
    End Sub
     
    Sub Lister()
        Dim nbLignes As Long
     
        Sheets("Liste services activités").AutoFilterMode = False
        nbLignes = Sheets("Liste services activités").Cells(Rows.Count, "A").End(xlUp).Row
        Sheets("Liste services activités").Rows(2).AutoFilter Field:=1, Criteria1:=Range("A4")
     
        Sheets("Liste services activités").Range("B3:B" & nbLignes).SpecialCells(xlCellTypeVisible).Copy
        Range("A8").PasteSpecial xlPasteValues
     
    End Sub
    MPi²

  3. #3
    Candidat au Club
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Service public

    Informations forums :
    Inscription : Février 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,

    Merci beaucoup @parmi, ça fonctionne super!
    Par contre, j'ai essayé de remplacer le nom de mes services dans la macro à la place du A ici: Rows.Count, "A").End(xlUp).Row
    Mais ça ne fonctionne pas...
    Où dois- je remplacer?

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Cette ligne compte le nombre de lignes dans la colonne A.
    Changer "A" par autre chose si tu changes de colonnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbLignes = Sheets("Liste services activités").Cells(Rows.Count, "A").End(xlUp).Row
    Cette ligne filtre la colonne A selon ton choix
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Liste services activités").Rows(2).AutoFilter Field:=1, Criteria1:=Range("A4")
    Et cette ligne copie les valeurs en colonne B selon ce même choix
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Liste services activités").Range("B3:B" & nbLignes).SpecialCells(xlCellTypeVisible).Copy
    Assure-toi tout de même que les choix en A4 concordent avec les nouveaux choix que tu as mis.
    Autrement, c'est difficile pour moi de voir ce que tu as changé...
    MPi²

  5. #5
    Candidat au Club
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Service public

    Informations forums :
    Inscription : Février 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Ok, j'avais dû mal copier, ça fonctionne!
    Merci beaucoup, très bonne soirée!

  6. #6
    Membre averti
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Points : 442
    Points
    442
    Par défaut avec une formule
    Bonsoir,

    en reprenant une idée de Papouclo (voir d'autres propositions le concernant) je te propose une formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SIERREUR(INDEX('Liste services activités'!$B$3:$B$29;PETITE.VALEUR(SI('Liste services activités'!$A$3:$A$29='feuille pointage'!Criteres;LIGNE('Liste services activités'!$A$3:$A$29);"");LIGNE()-7));"")
    Je te joins mon fichieressai feuille pointage1.xlsx

    J'espère avoir répondu sans macro

    salutations

    geogeo

    ps :J'ai oublié de dire que c'est une formule matricielle donc valider avec "CTRL"+"MAJ"+"ENTREE"

  7. #7
    Candidat au Club
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Service public

    Informations forums :
    Inscription : Février 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonjour Geogeo70,

    Merci, c'est intéressant aussi! Je vois dans ta version que cela fonctionne bien, mais quand j'essaie de coller la formules dans mon fichier, dans la zone activité onglet "feuille pointage" (fichier à structure identique, seules les lettres et chiffres sont remplacés dans la "Liste services activités") et que je valide avec "CTRL"+"MAJ"+"ENTREE", le champ reste vide?
    As tu une idée ?

  8. #8
    Membre averti
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Points : 442
    Points
    442
    Par défaut
    Bonjour,

    je viens d'essayer avec des valeurs textes différentes et ça fonctionne. As-tu bien les mêmes références que sur l'exemple : les noms de services en E3:E6 ? la première activité en A8 ? Sinon il faut changer les références.
    On pourrait aussi plutôt nommer les zones comme tu as fait pour "Criteres".
    Il faut plutôt écrire que copier la formule pour éviter les risques de changement de référence (sans taper les accolades!!) puis "CTRL"+"MAJ"+"ENTREE"


    ps: en essayant je viens de voir une erreur d'index dans ma formule, il faut ajouter -2 à la fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SIERREUR(INDEX('Liste services activités'!$A$3:$A$29;PETITE.VALEUR(SI('Liste services activités'!$B$3:$B$29='feuille pointage'!Criteres;LIGNE('Liste services activités'!$B$3:$B$29);"");LIGNE()-7)-2);"")
    Je n'avais pas bien contrôlé les données résultantes ...

    essai feuille pointage2.xlsx

    geogeo

  9. #9
    Candidat au Club
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Service public

    Informations forums :
    Inscription : Février 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonjour Gegeo70,

    Oui mon fichier est fait exactement pareil, j'ai juste remplacé le nom des services par les lettres, et les activités par des chiffres.
    Par contre, j'avais copié collé la formule effectivement.
    J'ai donc recommencé en saisissant la formule corrigée que tu as donnée, sans succès...
    Autrement tant pis, la macro donnée par Parmi fonctionne, je vais rester dessus.
    Merci beaucoup!

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

Discussions similaires

  1. récupérer une valeur de la base de données dans une liste
    Par Marie_7 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/06/2015, 18h46
  2. [LibreOffice][Base de données] Recuperer une liste de tables et une liste de champs d'une table sur LibreOffice & OpenOffice
    Par gerard.sauvage dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 08/04/2014, 12h35
  3. Réponses: 0
    Dernier message: 09/08/2013, 20h52
  4. type de données pour une liste
    Par sihamnet dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 29/07/2012, 14h46
  5. Réponses: 3
    Dernier message: 15/02/2011, 17h17

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