Boucle de tri pour Matrice

Adriano43

XLDnaute Occasionnel
Bonjour le forum,

Je suis confronté à un nouveau problème, c'est fréquent en ce moment décidément!!!...
J'ai une matrice qui comporte des données, et à gauche les résultats.

Je souhaite pouvoir analyser ces résultats facilement. Je souhaiterais que la macro me remplisse un tableau (exemple dans le fichier joint) et m'indique par intervalle le nombre d'opérations qu'il s'y déroulent..
Il faut passer par un tri je pense, mais je vous avoue avoir pas trop d'idées par où commencer...

En vous remerçiant par avance

Cordialement

Adriano43
 

Pièces jointes

  • Matrice.xlsx
    20.1 KB · Affichages: 57
  • Matrice.xlsx
    20.1 KB · Affichages: 56
  • Matrice.xlsx
    20.1 KB · Affichages: 54

pierrejean

XLDnaute Barbatruc
Re : Boucle de tri pour Matrice

Bonjour Adriano43

Ma boule de Cristal étant embuée (le temps est à la pluie) et mon télépathe Adsl en rade , peux-tu expliciter :
1) Qu'est-ce qu'une opération ?
2) Ou peux-t-on les dénicher ?
3) Les opérations peuvent elles se dérouler sur plusieurs intervalle ?
4) Ou peux-t-on récupérer les horaires qui s'y rapportent ?
 

Adriano43

XLDnaute Occasionnel
Re : Boucle de tri pour Matrice

Bonjour Pierrejean,

Désolé de ne pas être assez explicite; je vais tenter de l'être
Les opérations correspondent aux abréviations en colonne A.
Effectivement, une opération peut être sur 2 intervalles, à ce moment là, on la comptabilisera sur l'intervalle de fin. (début à 14h45, fin à 15h30, opération comptée sur intervalle 15-16h)
Les horaires correspondantes à chaque opérations correspondent aux résultats situés à droite.
Ainsi l'opération "RE" (ligne 4) se déroule 5 fois, la première en colonne G et la dernière en colonne K etc...

Cordialement

Et merci de votre aide

Adriano43
 

pierrejean

XLDnaute Barbatruc
Re : Boucle de tri pour Matrice

Re

Encore une petite explication

Pour RE en K on tombe sur 24:43:17 qui manifestement n'est dans aucun des intervalles prévus ; on ramène a 00:43: 17 ce qui la met en intervalle 0-1H ? ou autre méthode ??
 

Adriano43

XLDnaute Occasionnel
Re : Boucle de tri pour Matrice

Re Pierrejean,

Oui c'est ça, vous avez tout compris!!
De mon côté, je partais sur un code qui est le suivant, mais il doit y avoir plus efficace et moins long:
Code:
Public Sub prctri()

    Dim i As Integer
    
    With Sheets("Feuil1")
        Range("B35:B58").Select
        Selection.ClearContents
        For i = 3 To Range("A30").End(xlUp).Row Step 1
            If 0.62499 < Cells(i, 8).Value < 0.6666 Then Cells(46, 2).Value = Cells(46, 2).Value + Cells(46, 2).Value
            If 0.2916 < Cells(i, 8).Value < 0.3333 Then Cells(38, 2).Value = Cells(38, 2).Value + Cells(38, 2).Value
        Next i
    End With
End Sub

Cordialement

Adriano43
 

Adriano43

XLDnaute Occasionnel
Re : Boucle de tri pour Matrice

Re Pierrejean,

Cela me convient parfaitement Pierrejean!!! Cependant serait'il possible de modifier ce code ou d'adapter si les plages venaient à changer de dimension fréquemment sans avoir à passer par le code directement? (ex: nombre d'opérations jusqu'à A50, nombre d'itérations > 40...)

Par contre pourriez vous m'indiquer à quoi correspondent les variables car lorsque je transpose votre macro dans le fichier réel, je dois déclarer les variables...

Cordialement

Adriano43
 

Adriano43

XLDnaute Occasionnel
Re : Boucle de tri pour Matrice

Re,

Voici comment je l'ai adapté, mais sans réussite...
Code:
Public Sub prctri()

 Dim tablo()
 Dim n As Integer
 Dim x As Range
 Dim cel As Range
 Dim m As Integer
 
 Application.ScreenUpdating = False
 Sheets("Stats").Select
 tablo = Range("A100:B123")
 
 For n = LBound(tablo, 1) To UBound(tablo, 1)
  x = Split(Replace(tablo(n, 1), "H", ""), "-")
  tablo(n, 1) = x(0)
  tablo(n, 2) = x(1)
 Next
 For Each cel In Range("G50:AT90")
 If cel.Value <> "" Then
   x = cel.Value - Int(cel.Value)
    For m = LBound(tablo, 1) To UBound(tablo, 1)
      If x >= tablo(m, 1) / 24 And x < tablo(m, 2) / 24 Then
        tablo(m, 3) = tablo(m, 3) + 1
      End If
    Next m
  End If
Next
 For n = LBound(tablo, 1) To UBound(tablo, 1)
  tablo(n, 1) = tablo(n, 1) & "-" & tablo(n, 2) & "H"
  tablo(n, 2) = tablo(n, 3)
  tablo(n, 3) = ""
Next
Range("A100").Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo
Application.ScreenUpdating = True
End Sub
 

pierrejean

XLDnaute Barbatruc
Re : Boucle de tri pour Matrice

Re

Dim x As Variant 'car défini a partir de Split donc tableau d'ou Variant (obligatoire dans les tableaux)

tablo = Range("A101:C124") 'il s'agit d'avoir les valeurs limites (l'en-tête ne sert à rien)

x = Split(Replace(tablo(n, 1), "h", ""), "-") ' il faut enlever le h pour n'avoir que les valeurs (avant c’était le H)
 

pierrejean

XLDnaute Barbatruc
Re : Boucle de tri pour Matrice

Re

Prière de relire le post au dessus S.T.P
Avant c’était H qu'il fallait enlever pour avoir les valeurs , maintenant c'est h parce que tu as changé l'orthographe
La ligne doit être

x = Split(Replace(tablo(n, 1), "h", ""), "-")

dans laquelle il ne faut pas enlever le h !!!!!
 

Discussions similaires

Statistiques des forums

Discussions
312 310
Messages
2 087 119
Membres
103 478
dernier inscrit
Frederic Lagger