FormulaR1C1 de colonne à colonne avec Find

Résolu/Fermé
dhaze Messages postés 109 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 6 février 2020 - 3 juin 2015 à 15:42
dhaze Messages postés 109 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 6 février 2020 - 4 juin 2015 à 10:31
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.
A voir également:

2 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
3 juin 2015 à 17:28
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
dhaze Messages postés 109 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 6 février 2020
4 juin 2015 à 10:31
Bonjour f894009,

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

Bonne journée
Lo.
0