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 :

Pointage des horaires dans le mois. [XL-2007]


Sujet :

Excel

  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut Pointage des horaires dans le mois.
    bonsoir,

    j'ai les jours du mois sur deux lignes : 1ere du 1 au 15 et une autre du 16 au (28-31).
    En dessous, différents paramètres que je vais comptabiliser.

    Je dois faire un récapitulatif en ligne des différents horaires journaliers dans le mois.
    En dessous de chaque durée journalière, je vais pointer le nombre.

    J'ai réussi à faire l'extraction pour avoir le récapitulatif mais avec une seule ligne. Or, on peut avoir le même horaire journalier sur les deux quinzaines du mois : impossible d'utiliser deux fois la même formule.

    Là, je ne trouve pas.
    Si vous avez une formule pour me sortir de ce pétrin.
    Merci.


    ESVBA

  2. #2
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Juillet 2014
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Une petite image du tableau ?
    L'explication est un peu trop succincte, pour se faire une image du problème

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Ataraxie Voir le message
    L'explication est un peu trop succincte
    C'est un euphémisme. Il serait plus juste de dire qu'elle est incompréhensible. D'où l'absence de réponse.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut merci de votre aide
    oui, avec une petite image ce sera mieux.
    J'ai déjà ouvert un autre post mais sans réponse j'ai recréé celui-ci.

    Avec une formule j'arrive à extraire les données sur une ligne soit la 16, soit la 21.

    Mais l'utiliser sur deux lignes comme sur le dessin...

    ESVBA
    Images attachées Images attachées  

  5. #5
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Quel est le rapport entre la ligne 68 et les lignes 16-21 ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Membre habitué Avatar de LG-69
    Homme Profil pro
    Analyste statisticien
    Inscrit en
    Juillet 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste statisticien

    Informations forums :
    Inscription : Juillet 2014
    Messages : 162
    Points : 189
    Points
    189
    Par défaut
    Je pense qu'il veut dire que dans sa ligne 68 il veut placer les valeurs des deux plages (celles de la ligne 16 + celles de la ligne 21) triées par ordre croissant.
    Sa formule sait le faire pour la plage 16 ou la plage 21 mais pas les deux à la fois.

    En gros, si j'ai bien compris, il veut que sa formule prenne en compte 2 plages de valeurs en même temps.

    ESVBA, si tu pouvais mettre les formules que tu as déjà testé sur une seule plage, ça pourra peut-être aider ?

  7. #7
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Tu sélectionnes la plage C16:Q16 et C21:R21 et tu lui donnes un nom, par exemple "Heures"
    Formules > Définir un nom
    Tu mets en C68 la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =PETITE.VALEUR(Heures;COLONNE(A68))
    Tu la recopies dans les autres cellules de la ligne 68.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  8. #8
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut Merci toujours de vous intéresser à mon cas
    sur les deux plages en ligne (nommées avec un nom si l'on veut), je regarde la plus petite valeur,
    je la place en ligne 68.

    je regarde la seconde plus petite valeur différente de la première et
    la place dans la ligne 68 dans la colonne d'à côté.

    Je cherche la 3e plus petite valeur différente des précédentes et
    la place dans la ligne 68 colonne encore à côté.

    Ainsi de suite...

    La formule "Petite.Valeur" ne fonctionnera pas comme cela car la seconde plus petite valeur peut être la même que la première et donc il faut chercher le nombre de valeur identique à la première plus petite valeur pour le placer dans le second paramètre.

    ESVBA

  9. #9
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Ce que tu souhaites ne peut pas se faire par de simples formules. Il faut que tu passes en macro VBA.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  10. #10
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut Bonsoir LG-69 et Menhir
    voici donc ma formule : Nom : Sans titre.PNG
Affichages : 274
Taille : 24,4 Ko

    Je vais chercher du côté de "petite.valeur()" bien que ma formule l'utilise aussi.


    ESVBA

  11. #11
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut Bonsoir à tous
    effectivement devant mon échec et le manque de réponse favorable, je me suis tourné vers une solution VBA.

    C'est lent bien que j'ai limité l'exécution à la plage utile.
    Voici mon code pour ceux qui passent par ici :
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    ' Récapitulatif des horaires
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim Rg As Range
        Dim c As Range
        Dim Deb As Range
     
        Const DateLigne1 = "C16:Q16"
        Const DateLigne2 = "C21:R21"
        Const DateLigneRecap = "C67:P67"
     
        Set Rg = Application.Union(Range(DateLigne1), Range(DateLigne2))
     
        'Si on change un horaire
        If Not Intersect(Target, Rg) Is Nothing Then
            'Dans la fenêtre VBA, sélectionner Outils, Références et cocher Microsoft Scripting Runtime
            Dim Dico As Object
            Set Dico = CreateObject("scripting.dictionary")
     
            'Pour chaque cellule sur le calendrier
            For Each c In Rg
                'Si la cellule n'est pas vide
                If IsEmpty(c) = False Then             'And Val(c) <> 0
                    If Not Dico.Exists(c.Value) Then
                        'Si la clé n'existe pas affecte la première valeur (=1) c'est initialisation
                        Dico(c.Value) = 1
                    Else
                        'Si la clé existe déjà : on ajoute un pour les compter
                        Dico(c.Value) = Dico(c.Value) + 1
                    End If
                End If
            Next c
     
            'Réalise un tri
            Dim bas()
            Dim t
            ReDim bas(1 To Dico.Count)
            Dim i As Integer
            i = 1
            For Each t In Dico.keys
                bas(i) = t
                i = i + 1
            Next t
            Call Tri(bas, 1, Dico.Count)
     
            '--- Place les résultats dans la bonne ligne
            Set Deb = Sheets("essai").Range(DateLigneRecap).Resize(1, 1)
            For i = 1 To UBound(bas())
                Deb.Offset(0, i).Value = bas(i)
            Next i
     
            '--- Détruit les variables
            Set Dico = Nothing
            Set Rg = Nothing
            Set Deb = Nothing
        End If
    End Sub
     
    Sub Tri(a, Gauche, Droit)          ' Tri type "Quick sort"
        ref = a((Gauche + Droit) \ 2)
        G = Gauche
        D = Droit
        Do
            Do While a(G) < ref
                G = G + 1
            Loop
            Do While ref < a(D)
                D = D - 1
            Loop
            If G <= D Then
                'Permute
                temp = a(G)
                a(G) = a(D)
                a(D) = temp
     
                G = G + 1
                D = D - 1
            End If
        Loop While G <= D
     
        If G < Droit Then Call Tri(a, G, Droit)
        If Gauche < D Then Call Tri(a, Gauche, D)
    End Sub
    Si vous avez mieux...
    Je vais afficher [Résolu] bien que ce ne l'est pas réellement.

    Merci à Menhir, LG-69 et à ataraxie.

    ESVBA

  12. #12
    Membre habitué Avatar de LG-69
    Homme Profil pro
    Analyste statisticien
    Inscrit en
    Juillet 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste statisticien

    Informations forums :
    Inscription : Juillet 2014
    Messages : 162
    Points : 189
    Points
    189
    Par défaut
    Merci pour ton code, c'est toujours intéressant d'avoir la solution finale d'un problème sur lequel on a planché.
    Dommage qu'on n'ait pas trouvé de solution par formule.

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

Discussions similaires

  1. [SQL] Nombre de jours d'activité des clients dans le mois
    Par bafafamiageugb dans le forum SAS Base
    Réponses: 1
    Dernier message: 12/10/2014, 20h43
  2. Pointage des horaires du personnel
    Par SubZiggy dans le forum ALM
    Réponses: 6
    Dernier message: 06/01/2012, 08h10
  3. [E-03]comptage des jours dans un mois
    Par Overcrash dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 12/06/2008, 10h36
  4. Gestion des jours dans un mois
    Par Prodige2020 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 29/05/2008, 09h48
  5. [Fonction][Compter des semaines dans un mois
    Par mat2424 dans le forum VBA Access
    Réponses: 10
    Dernier message: 12/04/2007, 17h16

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