Aide débutant, calculer l'occurence d'un modèle par rapport à une colonne. Merci

Nicokili

XLDnaute Nouveau
Bonjour à tous,

Je suis loin (trés loin) d'être un expert Excel et j'ai donc besoin de votre aide pour réussir à faire ce que souhaite sans y passer la semaine.

J'ai une liste de données excel 2010 avec une colonne A et une colonne B, dans la colonne A j'ai les années d'utilisation des modèles présents en colonne B. Je voudrais savoir pendant combien d'années sont utilisés tel ou tel modèle.
Je ne sais pas si mon explication est très claire mais je vous joins mon fichier qui vous aidera sans doute à mieux comprendre.

Exemple dans ce fichier : La modèle "ANACONDA" est utilisé pendant 10 ans, de l'année 2005 à 2015, mais pour le savoir je dois faire un filtre modèle par modèle et il y en a plus de 400 en tout, je ne peux pas y passer la journée.
Ainsi, je sais que ce modèle a été utilisé pendant 10 ans et une fois que j'aurai la durée de vie de chaque modèle, je pourrai faire une moyenne.

Merci d'avance pour votre précieuse aide,

Nico
 

Pièces jointes

  • Classeur1.xlsx forum excel.xlsx
    54.5 KB · Affichages: 51
  • Classeur1.xlsx forum excel.xlsx
    54.5 KB · Affichages: 43

Paf

XLDnaute Barbatruc
Re : Aide débutant, calculer l'occurence d'un modèle par rapport à une colonne. Merci

Bonjour

une solution macro plus rapide que l'utilisation de formules (a priori)

Code:
Sub AnnéeService()
 Dim DerL As Long, MonTab, Deb As Integer, Fin As Integer
 Dim Durée As Integer
 Start = Timer
 With Worksheets("Feuil1")
 DerL = .Range("A" & .Rows.Count).End(xlUp).Row
 .Range("A2:B" & DerL).Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("A2") _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1

 MonTab = .Range("A2:C" & DerL)
 Prec = ""
 For i = LBound(MonTab) To UBound(MonTab)
    If MonTab(i, 2) = Prec Then
       MonTab(i, 3) = Durée
    Else
        Deb = MonTab(i, 1)
        Fin = MonTab(i, 1)
        For j = i + 1 To UBound(MonTab)
            If MonTab(j, 2) = MonTab(i, 2) Then
                If MonTab(j, 1) > Fin Then Fin = MonTab(j, 1)
            End If
        Next
     Durée = Fin - Deb + 1
     MonTab(i, 3) = Durée
     Prec = MonTab(i, 2)
    End If
 Next
 .Range("A2").Resize(UBound(MonTab, 1), UBound(MonTab, 2)) = MonTab
 .Range("A2:C" & DerL).Sort Key1:=Range("A1"), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1

 .Range("D2") = Timer - Start
 End With
End Sub

j'ai rajouté 1 à la différence de l'année la plus récente et de la plus ancienne pour éviter 0 s'il n'y avait qu'une seule année. Pour modifier si besoin, supprimer +1 dans:

Durée = Fin - Deb + 1

A+
 

CISCO

XLDnaute Barbatruc
Re : Aide débutant, calculer l'occurence d'un modèle par rapport à une colonne. Merci

Bonjour

Cf. en pièce jointe. Ce n'est pas parfait, car beaucoup trop long en temps de calcul. Avec les macro, ça va beaucoup plus vite.
Cf. aussi la définitions de DATE dans le gestionnaire de noms.

Si tu préfères avoir le nom des modèles dans l'ordre alphabétique, cherche un peu sur le forum, là par exemple :
https://www.excel-downloads.com/threads/resolu-par-ordre-alphabetique.20001591/

@ plus
 

Pièces jointes

  • Classeur1.xlsx forum excel.xlsx
    58.4 KB · Affichages: 38
  • Classeur1.xlsx forum excel.xlsx
    58.4 KB · Affichages: 43
Dernière édition:

Nicokili

XLDnaute Nouveau
Re : Aide débutant, calculer l'occurence d'un modèle par rapport à une colonne. Merci

Bonjour Messieurs,
Merci beaucoup pour votre aide, je comprends (à peu près) les macros utilisées. J'ai gagné beaucoup de temps grâce à vous.
Bonne journée et encore merci ;)
Cordialement,
Nico
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Aide débutant, calculer l'occurence d'un modèle par rapport à une colonne. Merci

Re

Une version un peu plus rapide
 

Pièces jointes

  • Classeur1.xlsx forum excel.xlsm
    72.6 KB · Affichages: 38
  • Classeur1.xlsx forum excel.xlsm
    72.6 KB · Affichages: 36

Discussions similaires

Statistiques des forums

Discussions
312 389
Messages
2 087 898
Membres
103 674
dernier inscrit
Marco74