[Résolu] - Calcul d' un nombre de jours uniques dans une liste selon un autre critère

grhum29

XLDnaute Junior
Bonjour,

Je suis à la recherche d'une formule Excel me permettant de calculer un nombre de jours unique dans une liste par véhicule.

Je mets, en pièce jointe, le fichier sur lequel je travaille.

Dans la colonne A, j'ai différentes dates et dans la colonne B, j'ai différents véhicules. L'idée est donc de connaître le nombre de jours que chaque véhicule a roulé.

Dans la colonne H, j'ai effectué un filtre avancé me permettant d'avoir les différents véhicules sans doublons.

J'ai essayé différentes manières mais je n'ai pas trouvé ce que je voulais.

J' espère avoir été clair dans mes explications.

Merci de votre aide.

Grhum29
 

Pièces jointes

  • com_véhicules.xlsm
    88.6 KB · Affichages: 35
Dernière édition:

R@chid

XLDnaute Barbatruc
Re : Calcul d' un nombre de jours uniques dans une liste selon un autre critère

Bonjour,
une parmi d'autres,
tu sélectionnes la plage I5:I9,
tu colles cette formule matricielle dans la barre de formule.
Code:
=FREQUENCE(SI(FREQUENCE(EQUIV(A5:A2714&B5:B2714;A5:A2714&B5:B2714;0);LIGNE(INDIRECT("1:"&LIGNES(A5:A2714))));EQUIV(B5:B2714;H5:H9;0));LIGNE(INDIRECT("1:"&LIGNES(H5:H9))))
@ valider par Ctrl+Shift+Enter

Je ne sais pas s'il y aura des jours communs entre les véhicules ou non ??



@ + +
 

grhum29

XLDnaute Junior
Re : Calcul d' un nombre de jours uniques dans une liste selon un autre critère

Bonjour R@chid,

Pour commencer, merci pour ta réponse.

Effectivement cette formule fonctionne très bien.

Cependant, j'ai un problème qui persiste et que j'aurai du préciser dans mon 1er post : Les colonnes A à F sont importées depuis un fichier texte (export CSV généré depuis une autre application) ce qui fait que le nombre de lignes est susceptible de changer en fonction de la période préalablement choisie dans l'autre application et du nombre de véhicules sélectionné...

La ligne de fin n'est donc pas forcément la ligne 2714.

Est-ce qu'il fait que je passe par une déclaration de ce type :

Code:
LFinD = Feuil1.[B65000].End(xlUp).Row

Merci encore,

Grhum29
 

job75

XLDnaute Barbatruc
Re : Calcul d' un nombre de jours uniques dans une liste selon un autre critère

Bonjour grhum29,

Formule matricielle en L5 :

Code:
=NB(LN(LIGNE(A$1:A$3000)=EQUIV(A$1:A$3000&H5;A$1:A$3000&B$1:B$3000;0)))
A valider par Ctrl+Maj+Entrée et tirer vers le bas.

Cela prend déjà pas mal de temps.

Vous pouvez essayer en remplaçant dans la formule 3000 par 50000, alors soyez patient...

Edit : j'avions point vu les autres, salut à tous :)

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Calcul d' un nombre de jours uniques dans une liste selon un autre critère

Re,

Rendons à César...

Pour traiter 2714 lignes avec la formule dans 5 cellules, sur Win XP - Excel 2003 :

- job75 4,75 secondes

- R@chid 4,06 secondes :)

A+
 

grhum29

XLDnaute Junior
Re : Calcul d' un nombre de jours uniques dans une liste selon un autre critère

Bonjour et merci à tous pour vos réponses.

J'ai effectué des tests sur des fichiers CSV importés qui comportent 17 000 lignes environ pour les 2 solutions proposées et effectivement les temps de traitement sont importants dans les 2 cas et Excel fige pendant ce temps.

Existe t'il un autre moyen de faire ce calcul qui soit plus rapide?

Merci de votre aide.

Grhum29
 

job75

XLDnaute Barbatruc
Re : Calcul d' un nombre de jours uniques dans une liste selon un autre critère

Bonjour grhum29, le fil,

Existe t'il un autre moyen de faire ce calcul qui soit plus rapide?

Bien sûr, avec du VBA, placez ce code dans un module standard (Alt+F11) :

Code:
Function CompteJours(vehicule As Range, plage As Range)
'dans plage, jours en 1ère colonne, véhicules en 2ème colonne
Dim v, t, d As Object, i&
v = vehicule
t = plage 'matrice, plus rapide
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(t)
  If t(i, 2) = v Then d(t(i, 1)) = ""
Next
CompteJours = d.Count
End Function
Et entrez cette formule en L5, à tirer vers le bas :

Code:
=CompteJours(H5;A$5:B$2714)
Les 5 formules en L5:L9 se calculent en 0,03 seconde...

A+
 

Discussions similaires