XL 2016 [Résolu] Sommation de nombre de jours sous conditions

kingfadhel

XLDnaute Impliqué
Bonjour, les XLdnautes,
Je voudrais faire la somme du nombre de jours sous conditions
1- Le même matricule, un ou plusieurs (CODE, DATE DEBUT, DATE FIN)
2- Suppression des lignes inutiles.

Plus de détails dans la pièce jointe.
 

Pièces jointes

  • AT_kingfadhel.xlsx
    15.1 KB · Affichages: 32

job75

XLDnaute Barbatruc
Bonjour kingfadhel,

Il suffit de faire le tri manuellement comme indiqué :
1- Tri par "MATRICULE" puis "CODE" puis "DEBUT"
Formule en G2 pour la colonne "Cumul" du tableau :
Code:
=SI(C2<>"SUITE AT";F2;F2+G1)
Edit : ou mieux :
Code:
=F2+N(G1)*(B2=55)
Enfin créer une MFC en colonne G pour n'afficher que le dernier cumul.

Fichier joint.

PS : les dates des lignes 14 et 15 sont incorrectes, il faut les intervertir.

A+
 

Pièces jointes

  • AT_kingfadhel par formules(1).xlsx
    21.9 KB · Affichages: 18
Dernière édition:

job75

XLDnaute Barbatruc
Re,

Pour pouvoir traiter les résultats ajouter la colonne H avec cette formule en H2 :
Code:
=SI(B3=55;"";G2)
la colonne G étant maintenant une colonne auxiliaire.

Fichier (2).

A+
 

Pièces jointes

  • AT_kingfadhel par formules(2).xlsx
    22.2 KB · Affichages: 26

kingfadhel

XLDnaute Impliqué
Re,
une petite rectification du code pour éviter un bug

VB:
Sub Date_fin()
For i = [a2].End(xlDown).Row To 2 Step -1
    x = i
    lig = Cells(i, 2).End(xlUp).Row
    Cells(lig, 5) = Cells(x, 5)
    i = lig
Next
End Sub
Sub vide()
For i = [a2].End(xlDown).Row To 2 Step -1
If Cells(i, 2) = "" Then
Rows(i).Delete Shift:=xlUp
End If
Next
End Sub
 

job75

XLDnaute Barbatruc
Re,

Après remise en ordre ce fichier (3) tient beaucoup mieux la route.

J'ai introduit des DECALER dans les formules pour qu'on puisse supprimer ou insérer des lignes.

Bonne nuit.
 

Pièces jointes

  • AT_kingfadhel par formules(3).xlsx
    21.7 KB · Affichages: 31

job75

XLDnaute Barbatruc
Bonjour kingfadhel, JHA, JM, le forum,

Si l'on tient à supprimer les "SUITE AT" voyez la feuille "Résultat" du fichier joint et ce code :
Code:
Private Sub Worksheet_Activate()
Dim a As Range
Application.ScreenUpdating = False
With Feuil1.[A1].CurrentRegion 'à adapter
  If .Parent.FilterMode Then .Parent.ShowAllData 'si la feuille est filtrée
  .Sort .Columns(2), xlAscending, .Columns(5), , xlAscending, Header:=xlYes 'tri
  .EntireColumn.Copy [A1]
End With
Application.Calculation = xlCalculationManual 'évite le recalcul des formules volatiles
With [A1].CurrentRegion
  .Value = .Value 'supprime les formules
  On Error Resume Next 'si aucune SpecialCell
  For Each a In .Columns(9).SpecialCells(xlCellTypeBlanks).Areas
    a(1, -2) = a(a.Count + 1, -2)
    a(1) = a(a.Count + 1): a(a.Count + 1) = ""
  Next
  .Columns(9).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  .Columns(7).Resize(, 2).EntireColumn.Delete
End With
Application.Calculation = xlCalculationAutomatic
With UsedRange: End With 'actualise les barres de défilement
End Sub
Bonne journée.
 

Pièces jointes

  • AT_kingfadhel VBA(1).xlsm
    30.3 KB · Affichages: 22
Dernière édition:

Discussions similaires

Réponses
14
Affichages
540
Réponses
11
Affichages
515

Statistiques des forums

Discussions
312 294
Messages
2 086 906
Membres
103 404
dernier inscrit
sultan87