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

Macros et VBA Excel Discussion :

Somme.si.ens 2 critères et sur plusieurs feuilles


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Architecte technique
    Inscrit en
    Avril 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2018
    Messages : 1
    Par défaut Somme.si.ens 2 critères et sur plusieurs feuilles
    Bonjour,

    Je vous écris en espérant trouver une solution à des jours de recherches et réflexions, sans succès
    Je vous joins mon fichier excel pour la visualisation

    L'objectif, est de regrouper dans un tableau les heures de employés par semaine. Les heures sont inscrites de manière journalière dans la feuille client correspondant, puis par date, tâche et employé etc...
    Les données que je veux extraire de chaque feuille client pour le tableau récapitulatif des heures sont : la date (num semaine), le nom de l'employé et le nombre d'heure correspondant.

    Il faut donc que je demande à excel de chercher la correspondance entre un nom d'employé et un numéro de semaine, puis d'en extraire le nombre d'heure. Ça je les réglé avec la fonction somme.si.ens et c'est merveilleux ! Malheureusement, il me faudrait la formule pour qu'il fasse la combinaison sur toutes les feuilles avec deux critères ... C'est à ce sujet que je vous demande votre aide...

    Merci infiniment
    Adeline
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut
    Bonjour

    avec cette forme en C3:N38 dans la feuille heure employés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMME.SI.ENS(CLIENT1!$F$9:$F$19;CLIENT1!$C$9:$C$19;$B3;CLIENT1!$D$9:$D$19;C$2)
    je pense que ça fonctionne les $ sont la pour que la formule placée en C3 puisse étre recopié dans la zone

    il suffit d'y ajouter les autres clients

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMME.SI.ENS(CLIENT1!$F$9:$F$19;CLIENT1!$C$9:$C$19;$B3;CLIENT1!$D$9:$D$19;C$2)+SOMME.SI.ENS(CLIENT2!$F$9:$F$19;CLIENT2!$C$9:$C$19;$B3;CLIENT2!$D$9:$D$19;C$2)+ etc

  3. #3
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 969
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 969
    Par défaut
    Bonsoir adelinep, a_diard lq forum

    Merci de te conformer aux règles du forum et éviter les pièces jointes dès le premier message
    voila une proposition à améliorer : à tester sur une copie de ton travail car je suis débutant et il y a un risque de perte de données

    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
    Dim WD As Worksheet
     
    Sub test()
    Dim Ommal As New Collection
    Dim cel As Range
    Dim i As Integer
     
    Application.ScreenUpdating = False
    '****************************nettoyer feuille ("Heures employés")
    Set WD = Sheets("Heures employés")
    WD.Activate
        Cells.Select
        Selection.ClearContents
     
    '********************************collecter la liste des employés des feuilles nommée CLIENT + qqchose
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
     
            If ws.Name Like "CLIENT*" Then
            ws.Activate
                On Error Resume Next
                For Each cell In ws.Range("D9:D" & [D65000].End(xlUp).Row)
                    If cell.Value <> "" Then
                    Ommal.Add cell.Value, CStr(cell.Value)
                    End If
                Next cell
            End If
        Next ws
     
     
    ' ********************************enregistrer la liste des employés à partir de la colonne C ligne 3 de la feuille ("Heures employés")
    On Error GoTo 0
    j = 3
    For i = 1 To Ommal.Count
    WD.Cells(2, j) = Ommal(i)
    j = j + 1
    Next i
     
    ' ********************************* recherche des heures pour chaque employé
    Dim dercol As Long
    Dim h As Integer
    dercol = WD.Cells(2, Cells.Columns.Count).End(xlToLeft).Column
     With WD
     .Activate
     .Range("A2").Value = "Date"
    .Range("B2").Value = "Num Semaine"
     
      For b = 3 To dercol
      h = 3
                For Each ws In ThisWorkbook.Worksheets
                    If ws.Name Like "CLIENT*" Then
                    ws.Activate
                        On Error Resume Next
                        For Each cel In ws.Range("D9:D" & [D65000].End(xlUp).Row)
                            If cel.Value = .Cells(2, b) Then
                            .Cells(h, 1) = ws.Cells(cel.Row, 2)
                            .Cells(h, b) = ws.Cells(cel.Row, 6)
                            End If
                         h = h + 1
                        Next cel
                    End If
             Next ws
    Next b
    End With
    '********************remplir numéro de semaine
    Dim dernligne As Long
    dernligne = WD.Range("A" & Rows.Count).End(xlUp).Row
    For n = 3 To dernligne
    WD.Cells(n, 2).FormulaR1C1 = "=WEEKNUM(RC[-1])"
    Next n    
    WD.Select
      Application.ScreenUpdating = True
    End Sub
    BONNE CONTINUATION

Discussions similaires

  1. somme.si.ens sur plusieurs feuilles
    Par Kevin59279 dans le forum Excel
    Réponses: 2
    Dernier message: 27/05/2016, 22h37
  2. formule somme.si.ens avec critére sur les dates
    Par AMEDDO79 dans le forum Excel
    Réponses: 15
    Dernier message: 10/02/2016, 10h35
  3. [XL-2010] Transposer somme.si.ens avec critère sur date et heures en vba ?
    Par novice06 dans le forum Excel
    Réponses: 25
    Dernier message: 30/04/2015, 13h10
  4. Formules somme d'un critère sur plusieurs feuilles
    Par f4steph dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 28/06/2012, 13h55
  5. [Excel 2003] Somme.si sur plusieurs feuilles
    Par leo2v2o dans le forum Excel
    Réponses: 6
    Dernier message: 24/01/2007, 15h35

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