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é.
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.
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