Recopie partielle d'une cellule

Bonjour à tous

Tout d'abord bonne et heureuse année 2020.

Je ne sais pas si cela est faisable avec Excel et je souhaiterais avoir une réponse de personnes qui s'y connaissent en Excel.

Je souhaiterais réaliser une recopie partielle d'information d'une cellule dans une autre cellule. C'est à dire que dans fichier Excel je suis des informations que je mets à jour une fois par mois, mais en regardant de plus près je me retrouve des fois avec une multitudes d'informations dans une cellule datant des fois de plusieurs mois et ce que je voudrais faire et de garder uniquement dans cette cellule les deux dernières informations renseignées et le reste serait recopié dans un autre onglet. Puis à chaque mise à jour d'une information dans la cellule l'ancienne se recopie à la suite des autres.

La mise à jour des cellules pourrait se faire soit automatiquement ou via un bouton.

Pourriez-vous me dire déjà si cela est réalisable et ensuite comment je peux faire car niveau macro je ne suis pas très doué.

10test.xlsx (10.41 Ko)

Cordialement,

seb92110

Sans faire tout le code, voici une piste avec des splits (en pj)

Après il faut l'adapter à ton tableau réel.

Pour tester le code, observe les cellules en jaune, dans les deux feuilles, puis clique sur le bouton macro.

Il va te splitter les 01/2020 des mois précédents.

10refour-test.xlsm (21.08 Ko)

Salut tout le monde,

une autre idée à adapter

Sub splitCellule()
Dim ws1 As Worksheet, ws2 As Worksheet, LastRow As Long, LastRow1 As Long
Dim nameCol As Range, nameCol1 As Range

Set ws1 = Worksheets("Feuil1")
Set ws2 = Worksheets("Feuil2")
LastRow = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row
nameCol = "$A$4:$A$" & LastRow
LastRow1 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row
nameCol1 = "$A$4:$A$" & LastRow1
For Each cell In ws1.Range(nameCol)
a = 0
Set found = ws2.Range(nameCol1).Find(cell, LookAt:=xlWhole)

    For Each found In ws2.Range(nameCol1)

        If found & found.Offset(0, 1) Like cell & cell.Offset(0, 1) Then

            temp = Split(ws1.Range("C" & cell.Row), Chr(10))
            For i = LBound(temp) To UBound(temp)
                If i < UBound(temp) - 1 Then
                ws2.Cells(found.Row, 3).Value = ws2.Cells(cell.Row, 3).Value & vbLf & temp(i)
                Else
                ws1.Cells(cell.Row, 4).Value = ws1.Cells(cell.Row, 4).Value & vbLf & temp(i)
                End If
            a = 1
            Next i

             End If
    Next found

If a = 0 Then
    ws2.Cells(LastRow1, 1).Value = ws1.Cells(cell.Row, 1).Value
    ws2.Cells(LastRow1, 2).Value = ws1.Cells(cell.Row, 2).Value

    temp = Split(ws1.Range("C" & cell.Row), Chr(10))
    For i = LBound(temp) To UBound(temp)
        If i < UBound(temp) - 1 Then
        ws2.Cells(LastRow1, 3).Value = ws2.Cells(LastRow1, 3).Value & vbLf & temp(i)
        Else
        ws1.Cells(cell.Row, 4).Value = ws1.Cells(cell.Row, 4).Value & vbLf & temp(i)
        End If
    Next i

End If
Next cell
End Sub
Rechercher des sujets similaires à "recopie partielle"