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 :

Formule excel pour lister des absents


Sujet :

Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 13
    Points : 3
    Points
    3
    Par défaut Formule excel pour lister des absents
    Alors bonjour ,
    j'ai un petit souci par rapport à une formule sur excel , j'ai une liste d'absence sur la quelle figurent les noms et prénoms du personnel ainsi que les jours du mois , les gens absents sont marqués par X dans le jour de leur absence .

    Dans une autre feuille , j'ai une cellule qui comporte une date d'un jour du mois , alors ce qui est demandé est que à chaque fois que tu tape une date dans une cellule un tableau qui comporte deux colonnes ( noms et prénoms ) affichera les noms et prénoms des absents .

    Aiiiiidez moi à trouver une formule pour régler ce pb !

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour Maryem BN,

    Tout d'abord je te propose d'aérer d'avantage tes posts car le "pâté" que tu écris est quelque peu indigeste.

    Pour autant, si j'ai bien compris, tu cherches à récupérer tous les X en fonction d'une date.
    Or, une formule ne te retourne qu'une valeur à la fois. En d'autres termes, si tu as plusieurs personnes absentes le même jour tu ne pourras pas récupérer l'ensemble simplement avec une formule "simple".

    Peut-être qu'une procédure événementielle ou du VBA te permettrait d'accéder plus facilement à ce que tu désires ?

    Un fichier exemple serait le bienvenue si cette solution est susceptible de te convenir.

    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Kimy , je suis nouvelle sur ce forum et du coup c'est ma première discussion , j'apprendrai à aérer mes messages :p

    Alors je recherche à récupérer les noms et prénoms dans une liste des absents dont les X figure dans le jour voulu !

    C'est pas possible de le faire sur excel ??

  4. #4
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Si si, c'est tout à fait possible, mais comme je te disais, une formule simple ne va récupérer qu'une seule occurrence.
    Des formules plus complexes pourraient récupérer l'ensemble des valeurs mais je suis moins doué dans cela, d'autant plus que le nombre de valeurs de sortie va varier d'un jour à l'autre.

    Je pense qu'il faut d'avantage passer par
    • une procédure événementielle (d'Excel) : quand tu changes la date, par exemple, un petit bout de code s'active afin de récupérer les absents,
    • ou un bouton qui lance une macro (Excel) lançant, de la même manière, un petit bout de code récupérant les données souhaitées.

    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    je n'arrive pas vraiment à comprendre ce que vous voulez dire ; je ne m'y connais pas trop en excel !

    Je vous passe le fichier , si vous voulez voir de quoi il s'agit ?

  6. #6
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    C'est ce que je te demandais dans mon premier post.
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  7. #7
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Le voilà
    Fichiers attachés Fichiers attachés

  8. #8
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Voici :
    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
    Option Explicit
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim oRng As Range, oCell As Range
    Dim nb_abs As Integer
     
    If Not Application.Intersect(Target, Range("F2")) Is Nothing Then
        If IsDate(Target) Then
            Range("C10:F37").ClearContents
            With Worksheets("Liste des absences ")
                Set oRng = .Rows(6).Find(CStr(Target), LookIn:=xlValues, LookAt:=xlWhole)
                If Not oRng Is Nothing Then
                    For Each oCell In .Range(oRng, .Cells(.Rows.Count, oRng.Column).End(xlUp))
                        If LCase(oCell) = "x" Then
                            nb_abs = nb_abs + 1
                            Worksheets("Etat des absences ").Range("C9").Offset(nb_abs, 0) = .Cells(oCell.Row, 2)
                            Worksheets("Etat des absences ").Range("C9").Offset(nb_abs, 1) = .Cells(oCell.Row, 3)
                        End If
                    Next oCell
                Else
                    MsgBox "Cette date n'est pas présente dans la feuille de liste des absences."
                End If
            End With
            Range("D40") = nb_abs
        Else
            MsgBox "Vous n'avez pas inséré une date."
        End If
    End If
     
    End Sub
    Je te laisse placer ce bout de code dans ta Feuil2 : "Etat des absences ".
    Cela te permettra d'appréhender un peu les procédures événementielles.
    1. Alt + F11
    2. Cliquer sur la Feuil2
    3. Coller le code est sauvegarder
    4. Changer la cellule F2.

    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  9. #9
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Merciiiiiii infinement ; je vais voir si ça va marcher sur mon pc et si je saurai l'implémenter

  10. #10
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    ooops ! j'ai fais toutes les instructions que vous m'avez dites et pourtant les noms et les prénoms ne s'affichent pas sur le tableau

  11. #11
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2012
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 271
    Points : 331
    Points
    331
    Par défaut
    Bonjour Maryem BN

    As-tu mis le code dans Etat des absences puisque chez moi le code de Kimy_Ire fonctionne très bien, mais comme c'est une macro et non une formule il faut transformer ton fichier en xlsm et accepter les macro
    Voir fichier joint

    Slts
    Fichiers attachés Fichiers attachés

  12. #12
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Avec le fichier : Registre des Absences.xlsm.
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  13. #13
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Merciiiii beaucouuup ; je vous suis vraiment reconnaissante . Enfin , it works

    J'ai juste une petite question , est-ce que ce code va marcher si je change le mois ? j'ai remarqué que ça marche pas ; moi je veux que quelque soit le mois , le tableau doit fait ressortir les noms , pouvez vous modifier le fichier excel

  14. #14
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Maryem BN,

    Je ne me base que sur les jours qui sont présents dans ta feuille "Liste des absences ". ^^
    Je ne vais pas inventer des absences si ta BDD n'est pas complète !

    Cordialement,
    Kimy

    PS : lit ma signature afin de résoudre le post .
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  15. #15
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 13
    Points : 3
    Points
    3
    Par défaut Résolu
    Je vous ai pas demandé d'inventer des dates , je vous ai juste demandé qu'est ce que je peux modifier sur le code pour que ça marche pour tout les mois et les jours de l'année , si je les change éventuellement sur la liste d'absence !

  16. #16
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Maryem BN,

    Logiquement, si tu ajoutes des dates avec des croix et que tu places dans la cellule les mêmes valeurs, tout devrait marcher de la même manière.
    Je t'envoie le code commenté afin que tu puisses appréhender l'utilité de chaque ligne :
    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
    Option Explicit
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    'Déclaration des variables
    Dim oRng As Range, oCell As Range
    Dim nb_abs As Integer
     
    'Si le changement s'opère en cellule F2...
    If Not Application.Intersect(Target, Range("F2")) Is Nothing Then
        'Si la valeur insérée est une date...
        If IsDate(Target) Then
            'on efface le tableau.
            Range("C10:F37").ClearContents
            'Avec la feuille "Liste des absences "...
            With Worksheets("Liste des absences ")
                'on recherche sur la ligne 6 la date insérée.
                Set oRng = .Rows(6).Find(CStr(Target), LookIn:=xlValues, LookAt:=xlWhole)
                'Si on trouve quelque chose :
                If Not oRng Is Nothing Then
                    'Pour chaque cellules de la colonne...
                    For Each oCell In .Range(oRng, .Cells(.Rows.Count, oRng.Column).End(xlUp))
                        'on vérifie si on a un "x".
                        If LCase(oCell) = "x" Then
                            'Si oui, on ajoute au compteur...
                            nb_abs = nb_abs + 1
                            'et on écrit les valeurs.
                            Worksheets("Etat des absences ").Range("C9").Offset(nb_abs, 0) = .Cells(oCell.Row, 2)
                            Worksheets("Etat des absences ").Range("C9").Offset(nb_abs, 1) = .Cells(oCell.Row, 3)
                        End If
                    Next oCell
                Else
                    MsgBox "Cette date n'est pas présente dans la feuille de liste des absences."
                End If
            End With
            'On insère en fin de macro le nombre de "x" trouvés.
            Range("D40") = nb_abs
        Else
            MsgBox "Vous n'avez pas inséré une date."
        End If
    End If
     
    End Sub
    Voila.

    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  17. #17
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Thank youuuu , j'ai jamais suivi des cours en visual basic , donc tes commentaires me seront vraiments utile , Merciiii encore une fois (y)

  18. #18
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 13
    Points : 3
    Points
    3
    Par défaut Help again
    Bonjour ;


    Je reviens encore une fois vers vous pour résoudre un petit problème lié au même fichier . Alors comme vous avez vu le fichier comportait une 'liste d'absence' du mois d'octobre , Maintenant je veux créer plusieurs feuilles ' liste d'absence' de tout les mois de l'année !

    Comment est ce que je pourrais faire le lien entre toutes ces ' listes d'absences ' de tout les mois avec la feuille 'Etat des absences ' qui comporte le code VBA ? est ce que je dois modifier des trucs dans le code ? cmt y procéder ??

  19. #19
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour Maryem BN,

    Alors il y a quelques conditions...
    Tout d'abord, il va falloir que le formalisme de tes différents mois de l'année soit absolument les mêmes. Surtout la ligne 6 qui va devoir contenir les dates.

    Sous cette condition, la macro peut être modifiée en conséquence. On peut parcourir toutes les feuilles avec un simple For Each oWksh in Worksheets, cependant ça ne serait pas du tout optimisé.
    En effet, une date ne pourrait jamais se trouver dans deux feuilles différentes puisque chacune d'entre elle définie un mois précis.

    Ainsi, peux-tu nous en dire d'avantage sur la manière que tu as de nommer tes feuilles ?
    Quelque chose qui serait très simple à faire serait de les nommer selon le nombre du mois de l'année. Si ta feuille d'absence de Janvier peut s'appeler "01", celle de Février "02", etc... jusqu'à Décembre en "12", on peut facilement faire quelque chose du genre :
    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
    Option Explicit
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    'Déclaration des variables
    Dim oRng As Range, oCell As Range
    Dim nb_abs As Integer
     
    'Si le changement d'opère en cellule F2...
    If Not Application.Intersect(Target, Range("F2")) Is Nothing Then
        'Si la valeur insérée est une date...
        If IsDate(Target) Then
            'on efface le tableau.
            Range("C10:F37").ClearContents
            'Avec la feuille "Liste des absences "...
            'MsgBox Month(Target)
            With Worksheets(Format(Month(Target), "00"))
                'on recherche sur la ligne 6 la date insérée.
                Set oRng = .Rows(6).Find(CStr(Target), LookIn:=xlValues, LookAt:=xlWhole)
                'Si on trouve quelque chose :
                If Not oRng Is Nothing Then
                    'Pour chaque des cellules de la colonne...
                    For Each oCell In .Range(oRng, .Cells(.Rows.Count, oRng.Column).End(xlUp))
                        'on vérifie si on a un "x".
                        If LCase(oCell) = "x" Then
                            'Si oui, on ajoute au compteur...
                            nb_abs = nb_abs + 1
                            'et on écrit les valeurs.
                            Worksheets("Etat des absences ").Range("C9").Offset(nb_abs, 0) = .Cells(oCell.Row, 2)
                            Worksheets("Etat des absences ").Range("C9").Offset(nb_abs, 1) = .Cells(oCell.Row, 3)
                        End If
                    Next oCell
                Else
                    MsgBox "Cette date n'est pas présente dans la feuille de liste des absences."
                End If
            End With
            'On insère en fin de macro le nombre de "x" trouvés.
            Range("D40") = nb_abs
        Else
            MsgBox "Vous n'avez pas inséré une date."
        End If
    End If
     
    End Sub
    Voila, tout simplement !

    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  20. #20
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Bonjour Kimy ,

    J'ai appliqué tout ce que vous m'avez dis pourtant ça marche pas , j'arrive pas à détecter la source du problème


    CordialementTEST Registre des Absences.xlsmTEST Registre des Absences.xlsm

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/02/2016, 14h30
  2. Explication d'une formule Excel pour trier des doublons
    Par Max11121990 dans le forum Excel
    Réponses: 2
    Dernier message: 24/08/2015, 17h35
  3. Formule excel pour lister
    Par Latrell74 dans le forum Excel
    Réponses: 24
    Dernier message: 21/08/2013, 01h16
  4. [Débutante]requete pour lister des fichiers?
    Par bouba83 dans le forum Access
    Réponses: 8
    Dernier message: 18/05/2006, 16h58
  5. Boucle en Dos pour lister des fichiers selon une date
    Par Corben dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 17/12/2005, 12h17

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