Gestion congés

zoe&co Messages postés 1 Statut Membre -  
 zoe&co -
Bonjour les cracks d'Excel,

Dans une 1ère feuille Excel, je colle une extraction mensuelle des congés des salariés correspondants. Sur une autre feuille, je voudrais qu'un cumul des congés se fasse automatiquement à chaque nouvelle extraction, pour cette fois-ci, tous les salariés (reste à 0 si pas de congés). J'utilise la formule suivante: =RECHERCHEV('extraction_mois'!$A$2;'extraction_mois'!$A$2:$F$118;4;FAUX); la colonne A contenant le nom des salariés et 4 la colonne des congés du mois et le code suivant pour le cumul:

If Target.Column = 4 And Target.Count = 1 Then
Application.EnableEvents = False
ValSaisie = Target
Application.Undo
Target = ValSaisie + Target
Application.EnableEvents = True
End If

Le problème est que je ne sais pas comment intégrer la formule recherchev avec le code de manière à faire une boucle pour la lecture des noms de la 1ère feuile.
Si vous voulez bien m'aider?
En vous remerciant,

1 réponse

  1. WeaponEDGE
     
    Bonjour,

    Si je comprends bien, ton extraction récapitule par salarié le nombre de congés pris.
    Si une personne à pris plusieurs congé il y a donc plusieurs ligne sur ton extraction pour un même salarié.

    Petite question : La colonne 4 te donne le nombre de jour pris ?

    Si oui :

    T'oublies ta formule rechercheV

    Visiblement tu sais programmer en VBA donc tu vas dans ton module et tu rentres le programme suivant :

    Sub Test_Cumul()
    Sheets("Sheet2").Cells(1, 1) = "NOM"
    Sheets("Sheet2").Cells(1, 2) = "Cumul Conge"

    'Cacul du nbre de ligne à traiter pour la boucle.
    'L'onglet où se trouve l'extract doit se nommer "Sheet1"
    'sinon modifies la macro
    Nb_Ligne = Sheets("Sheet1").Cells(1, 1).End(xlDown).Row

    For i = 2 To Nb_Ligne
    Trouve = 0
    If Sheets("Sheet2").Cells(2, 1) = "" Then
    Trouve = 1
    Sheets("Sheet2").Cells(2, 1) = Sheets("Sheet1").Cells(i, 1).Value
    Sheets("Sheet2").Cells(2, 2) = Sheets("Sheet1").Cells(i, 4).Value
    Else
    Nb_Ligne2 = Sheets("Sheet2").Cells(1, 1).End(xlDown).Row
    For u = 2 To Nb_Ligne2
    If Sheets("Sheet1").Cells(i, 1) = Sheets("Sheet2").Cells(u, 1) Then
    Trouve = 1
    Sheets("Sheet2").Cells(u, 2) = Sheets("Sheet2").Cells(u, 2).Value + Sheets("Sheet1").Cells(i, 4).Value
    Exit For
    End If
    Next u
    End If
    If Trouve = 0 Then
    Sheets("Sheet2").Cells(1, 1).End(xlDown).Offset(1, 0) = Sheets("Sheet1").Cells(i, 1).Value
    Sheets("Sheet2").Cells(1, 2).End(xlDown).Offset(1, 0) = Sheets("Sheet1").Cells(i, 4).Value
    End If
    Trouve = 0
    Next i
    End Sub

    En le lançant ça devrait de donner le cumul des congé par Salarié
    0
    1. zoe&co
       
      Bonjour,

      Merci beaucoup pour ta réponse. Tu as bien saisi l'extraction. Pour l'instant, j'ai un message erreur l'indice n'appartient pas à la sélection. Dès que, je regarde ça de plus près pour passer tout en revue. En VBA , je débute. Je n'ai pas dû placer le code correctement.
      Je te tiens au courant.
      Bonne journée!
      0
    2. zoe&co
       
      Merci encore pour ton code. Ca m'a bien aidé.
      Bonne journée!
      0