S'il y a une date dans la cell alors les reporter VBA

Bonjour !

J'ai un petit soucis : il n'y a peut-être pas besoin de code VBA, peut-être simplement une formule mais je ne la connais pas.

Il s'avère que des fois je dois encodé une date dans la colonne mais pas toujours à la suite des autres donc je peux très bien encodé une date en M54 puis en M56 puis en M60 (ma colonne commence à partir de M54) ... Et j'aimerais reporter ces dates dans un autre tableau (qui se trouve sur la même feuille) en R (à partir de R54). Donc j'aimerai obtenir comme résultat final toutes les dates situées dans ma colonne M54 en R54 et donc avoir les dates dans les cellules R54 R55 R56.

Petite question de curiosité .. la méthode serait la même si à la place des dates, je voudrais faire par rapport à un mot ? Exemple: s'il y a "CLOTURE" dans cette colonne alors reporter dans la colonne R54...

Merci de votre aide!

Bonjour,

Quelque chose comme ça devrait marcher :

Sub ReportM()
    Dim MtoR(), n%, m%, i%
    With ActiveSheet
        n = .Range("M" & .Rows.Count).End(xlUp).Row
        If n < 54 Then Exit Sub
        For i = 54 To n
            If .Range("M" & i) <> "" Then
                ReDim Preserve MtoR(54 To n + m)
                MtoR(n + m) = .Range("M" & i): m = m + 1
            End If
        Next i
        Application.ScreenUpdating = False
        .Range("R54:R" & n).ClearContents
        .Range("R54").Resize(m).Value = WorksheetFunction.Transpose(MtoR)
    End With
End Sub

Il faudra peut-être la complétér une mise au format date de la plage affectée en R (si la date est reproduite sous forme numérique, ce qui devrait être le cas). La fin deviendrait alors :

        .Range("R54:R" & n).ClearContents
        With .Range("R54").Resize(m)
            .Value = WorksheetFunction.Transpose(MtoR)
            .NumberFormat = "dd/mm/yyy"
        End With
    End With
End Sub

Vérifier également que les dates sont exactement répercutées (là, cela devrait être le cas, mais mieux vaut toujours vérifier...)

Cordialement.

Merci d'avoir répondu!

Malheureusement, ce code ne fonctionne pas, les dates ne sont pas reportées dans la colonne :s

Petite erreur de calcul (mais pas de fichier = non testé !)

Sub ReportM()
    Dim MtoR(), n%, m%, i%
    With ActiveSheet
        n = .Range("M" & .Rows.Count).End(xlUp).Row
        If n < 54 Then Exit Sub
        For i = 54 To n
            If .Range("M" & i) <> "" Then
                ReDim Preserve MtoR(54 To 54 + m)
                MtoR(54 + m) = .Range("M" & i): m = m + 1
            End If
        Next i
        Application.ScreenUpdating = False
        .Range("R54:R" & n).ClearContents
        .Range("R54").Resize(m).Value = WorksheetFunction.Transpose(MtoR)
    End With
End Sub

Ca fonctionne ! Merci encore !

Tu es tellement un crack que tu n'as même pas besoin de fichiers

Tu es tellement un crack que tu n'as même pas besoin de fichiers

A moitié vrai seulement ! J'ai supposé qu'il s'agissait du même que celui sur lequel j'étais précédemment intervenu...

Rechercher des sujets similaires à "date reporter vba"