Bonjour Hupold,
Je ne suis toujours pas certain d'avoir parfaitement compris le besoin exact. D'instinct, j'aurais plutôt eu tendance à essayer de joindre les valeurs de la colonne C plutôt que celles de la colonne D.
En tout cas, voici un essai :
Sub Rajouter()
With ActiveSheet
dl = .Cells(.Rows.Count, 1).End(xlUp).Row
codes = .Range("A2:D" & dl)
For i = LBound(codes) To UBound(codes)
If codes(i, UBound(codes, 2)) <> "" Then
decompose = Split(codes(i, 1), ":")
decompose(UBound(decompose)) = codes(i, UBound(codes, 2))
codes(i, 1) = Join(decompose, ":")
End If
Next i
.Range("A2").Resize(UBound(codes), 1) = codes
End With
End Sub
Si une valeur est inscrite en colonne D, on remplace la dernière partie du code en colonne A (la partie à droite des derniers ":") par la valeur en colonne D. Lorsque le code en colonne A se termine par ":" (à 31 caractères), cela a pour effet d'ajouter la valeur en colonne D.
Cdlt,