FormulaR1C1 de colonne à colonne avec Find

Résolu
dhaze Messages postés 113 Date d'inscription   Statut Membre Dernière intervention   -  
dhaze Messages postés 113 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un petit problème, je ne trouve pas où ma macro coince...
Je devrait avoir ce type de résultat:
+---+--------------+-+-+-+-+------------------------+------
| | ? | | | | | ? |
+---+--------------+-+-+-+-+------------------------+-----
| 1 | Durée totale | | | | | Début et durée plage 1 |
+---+--------------+-+-+-+-+------------------------+----
| 2 | 18:02:33 | | | | | 00:00:00/18:02:33 |
+---+--------------+-+-+-+-+------------------------+---
| 3 | 27:41:25 | | | | | 00:00:00/27:41:25 |
+---+--------------+-+-+-+-+------------------------+--
| 4 | 15:37:12 | | | | | 00:00:00/15:37:12 |
+---+--------------+-+-+-+-+------------------------+-

Etc...

Sub Copier_Durées()

    Dim Durée_totale As Long
    Dim Début_durée_plage_1 As Long
    Dim Derniere_Ligne As Long
    Dim Numération As Long

        Durée_totale = Rows(1).Find("Durée totale", lookat:=xlWhole).Column
        Début_durée_plage_1 = Rows(1).Find("Début et durée plage 1", lookat:=xlWhole).Column
    
    Derniere_Ligne = Columns(Durée_totale).Offset(, -1).Find("*", , , , xlByColumns, xlPrevious).Row
    
        For Numération = Derniere_Ligne To 2 Step -1
        Cells(Numération, Début_durée_plage_1).Select
            With ActiveCell.FormulaR1C1 = "00:00:00/" & Cells(Numération, Durée_totale).Value
            End With
        Next Numération

End Sub

Une idée ?
Lo.

2 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    traitement des heures superieures a 24

    Sub Copier_Durées()

    Dim Durée_totale As Long
    Dim Début_durée_plage_1 As Long
    Dim Derniere_Ligne As Long
    Dim Numération As Long
    Dim Jour, h As Byte
    Dim hhmmss As String, mmss As String, hhh As String

    Durée_totale = Rows(1).Find("Durée totale", lookat:=xlWhole).Column
    Début_durée_plage_1 = Rows(1).Find("Début et durée plage 1", lookat:=xlWhole).Column

    Derniere_Ligne = Columns(Durée_totale).Find("*", , , , xlByColumns, xlPrevious).Row

    For Numération = Derniere_Ligne To 2 Step -1
    Jour = Cells(Numération, Durée_totale)
    hhmmss = Format(Cells(Numération, Durée_totale), "hh:mm:ss")
    mmss = Right(hhmmss, 6)
    If Jour > 1 Then
    h = 24
    Else
    h = 0
    End If
    hhh = CStr(CInt(Left(hhmmss, 2)) + h)
    Cells(Numération, Début_durée_plage_1) = "00:00:00/" & hhh & mmss
    Next Numération

    End Sub
    0
  2. dhaze Messages postés 113 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour f894009,

    Merci pour cette résolution efficace !
    Avec ce traitement en bonus...

    Bonne journée
    Lo.
    0