RoadRunner
XLDnaute Nouveau
Bonjour à tous
je voudrai améliorer mon 'ensemble de macros'
dans ceci :
Sub Transformation_HHMMSS()
Dim Cell As Range
Dim TmpMM As String
Dim TmpSS As String
Dim Container As Variant
Dim WS As Worksheet
For Each WS In ActiveWorkbook.Worksheets
With WS
For Each Cell In Union(.Range('B4:B300'), .Range('C4:C300'))
If InStr(1, Cell, 'mn', 1) <> 0 Then
On Error Resume Next
Container = Split(Cell, 'mn')
TmpMM = Val(Container(0))
TmpSS = Val(Container(1))
Cell = '00:' & Format(TmpMM, '00') & ':' & Format(TmpSS, '00')
End If
Next Cell
With .Range('B400')
.Formula = '=AVERAGE(B4:B300)'
.NumberFormat = 'hh:mms'
End With
With .Range('C400')
.Formula = '=AVERAGE(C4:C300)'
.NumberFormat = 'hh:mms'
End With
End With
Next WS
End Sub
EXPLICATION : dans mes feuilles j'ai une colonne D qui contient des lettres : soit A ou B ou C ou D
Ces lettres sont dans une plage D4300
Je voudrai, juste avant le calcul des moyennes, que toutes les lignes de cette plage qui n'ont pas soit 'A' soit 'B' en colonne D soient supprimées.
puis que les formules de moyennes suivantes changent :
(il y en a 2 ici mais ils m'en faut 4 comme citées plus bas)
With .Range('B400')
.Formula = '=AVERAGE(B4:B88)'
.NumberFormat = 'hh:mms'
End With
With .Range('C400')
.Formula = '=AVERAGE(C4:C88)'
.NumberFormat = 'hh:mms'
End With
1/ pour qu'en cellule B400 je n'ai la moyenne que des cellules de la colonne B qui ont en regard dans la colonne D la lettre 'B'
2/ pour qu'en cellule C400 je n'ai la moyenne que des cellules de la colonne C qui ont en regard dans la colonne D la lettre 'B'
3/ pour qu'en cellule B401 je n'ai la moyenne que des cellules de la colonne B qui ont en regard dans la colonne D la lettre 'A'
4/ pour qu'en cellule B401 je n'ai la moyenne que des cellules de la colonne B qui ont en regard dans la colonne D la lettre 'A'
tout ça au format 'hh:mms' comme d'hab
c'est tout pour le moment !
j'imagine qu'il faut créer une variable qui va de 4 à 300
puis faire une boucle pour vérifier la présence des lettres 'A' et 'B' sinon effacer la ligne
puis trouver toutes les valeurs de la colonne B qui ont la lettre 'B' en colonne D pour en calculer la moyenne à mettre en cellule B400
et recommencer pour la colonne C avec toujours la lettre 'B' moyenne à mettre en cellule C400
et recommencer pour la colonne B et C mais lettre 'A' moyennes à mettre en cellule B401 et C401 respectivement
Peut paraitre simple !
enfin pour moi ;-)
mais mettre ça en VBA c'est autre chose !
Alors la je demande de l'aide car je n'y arriverai jamais seul !
à bientot
je voudrai améliorer mon 'ensemble de macros'
dans ceci :
Sub Transformation_HHMMSS()
Dim Cell As Range
Dim TmpMM As String
Dim TmpSS As String
Dim Container As Variant
Dim WS As Worksheet
For Each WS In ActiveWorkbook.Worksheets
With WS
For Each Cell In Union(.Range('B4:B300'), .Range('C4:C300'))
If InStr(1, Cell, 'mn', 1) <> 0 Then
On Error Resume Next
Container = Split(Cell, 'mn')
TmpMM = Val(Container(0))
TmpSS = Val(Container(1))
Cell = '00:' & Format(TmpMM, '00') & ':' & Format(TmpSS, '00')
End If
Next Cell
With .Range('B400')
.Formula = '=AVERAGE(B4:B300)'
.NumberFormat = 'hh:mms'
End With
With .Range('C400')
.Formula = '=AVERAGE(C4:C300)'
.NumberFormat = 'hh:mms'
End With
End With
Next WS
End Sub
EXPLICATION : dans mes feuilles j'ai une colonne D qui contient des lettres : soit A ou B ou C ou D
Ces lettres sont dans une plage D4300
Je voudrai, juste avant le calcul des moyennes, que toutes les lignes de cette plage qui n'ont pas soit 'A' soit 'B' en colonne D soient supprimées.
puis que les formules de moyennes suivantes changent :
(il y en a 2 ici mais ils m'en faut 4 comme citées plus bas)
With .Range('B400')
.Formula = '=AVERAGE(B4:B88)'
.NumberFormat = 'hh:mms'
End With
With .Range('C400')
.Formula = '=AVERAGE(C4:C88)'
.NumberFormat = 'hh:mms'
End With
1/ pour qu'en cellule B400 je n'ai la moyenne que des cellules de la colonne B qui ont en regard dans la colonne D la lettre 'B'
2/ pour qu'en cellule C400 je n'ai la moyenne que des cellules de la colonne C qui ont en regard dans la colonne D la lettre 'B'
3/ pour qu'en cellule B401 je n'ai la moyenne que des cellules de la colonne B qui ont en regard dans la colonne D la lettre 'A'
4/ pour qu'en cellule B401 je n'ai la moyenne que des cellules de la colonne B qui ont en regard dans la colonne D la lettre 'A'
tout ça au format 'hh:mms' comme d'hab
c'est tout pour le moment !
j'imagine qu'il faut créer une variable qui va de 4 à 300
puis faire une boucle pour vérifier la présence des lettres 'A' et 'B' sinon effacer la ligne
puis trouver toutes les valeurs de la colonne B qui ont la lettre 'B' en colonne D pour en calculer la moyenne à mettre en cellule B400
et recommencer pour la colonne C avec toujours la lettre 'B' moyenne à mettre en cellule C400
et recommencer pour la colonne B et C mais lettre 'A' moyennes à mettre en cellule B401 et C401 respectivement
Peut paraitre simple !
enfin pour moi ;-)
mais mettre ça en VBA c'est autre chose !
Alors la je demande de l'aide car je n'y arriverai jamais seul !
à bientot