Séparer les valeurs et les mettrent à la ligne

Slt cousinhub,

Merci de t'interesser à mon problème.

voici les 2 fichiers, le premier d'origine et le second avec les écarts suite à la macro.

Re-,

Essaie avec ce nouveau code :

Sub eclate_v3()
Dim Tmp
Dim I As Long
Dim DerLig As Long
Dim Cel As Range
Application.ScreenUpdating = False
DerLig = Cells(Rows.Count, "A").End(xlUp).Row
For I = DerLig To 1 Step -1
    If InStr(1, Cells(I, 2), ";") > 0 Then
        Tmp = Split(Cells(I, 2), ";")
        Cells(I + 1, 1).Resize(UBound(Tmp)).EntireRow.Insert
        With Cells(I, 2)
            .Resize(UBound(Tmp) + 1) = Application.Transpose(Tmp)
            With .Offset(1, -1).Resize(UBound(Tmp), 45)
                .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
                .Value = .Value
                .Replace What:="0", Replacement:="", LookAt:=xlWhole
            End With
        End With
    End If
Next I
End Sub

Nota : Tes chiffres sont entrés avec un point (5.2), et par mon code, les chiffres recopiés sont convertis (à l'insu de mon plein gré...), et deviennent (5,2) avec une virgule.

Si tu veux remplacer de nouveau les virgules par les points, le plus simple est de faire un Edition/Remplacer (ou Ctrl + H), et faire la manip...(car en code VBA, j'ai pas trouvé.....)

Bonne soirée

Re,

Merci c'est parfait tout fonctionne trés bien. 9,9/10. Bon j'ai gardé 0,1 car effectivement j'ai des virgules et non des points.

Faut quand même pas exagéré. Encore une fois, un grand merci. 10/10

Bonne soirée et à bientôt.

Bonjour à tous,

Je déterre mon post, je souhaite faire la procédure inverse, c'est à dire.

Maintenant que le fichier est construit de cette manière, je cherche à reconstruire mon fichier d'origine sous le format suivant :

référence 1; img1_ref1.jpg, img2_ref1.jpg, img3_ref1.jpg, etc;

référence 2; img1_ref2.jpg, img2_ref21.jpg, img3_ref2.jpg, img4_ref2,etc;

référence ; img1_ref3.jpg;

Etc.

Sachant que le nombre d'images n'est pas le même partout.

Actuellement le fichier est sous la forme : (1 par cellule)

Ref1; img1_ref1;

Ref1; img2_ref1;

Ref1; img3_ref1;

Ref2; img1_ref2;

Ref2; img2_ref2;

Ref2; img3_ref2;

Ref2; img4_ref2;

Ref3; img1_ref3;

Etc.

J'ai essayer de mettre la macro en sens inverse mais je n'ai pas réussi et j'avoue ne pas comprendre.

Quelqu'un peut-il m'aider à créer la macro de CousinHub ci-dessous pour faire la procédure inverse ?

Sub eclate()
Dim Tmp
Dim I As Long
Dim DerLig As Long
Dim Cel As Range
Application.ScreenUpdating = False
DerLig = Cells(Rows.Count, "A").End(xlUp).Row
For I = DerLig To 2 Step -1
    If InStr(1, Cells(I, 2), ";") > 0 Then
        Tmp = Split(Cells(I, 2), ";")
        Cells(I + 1, 1).Resize(UBound(Tmp)).EntireRow.Insert
        Cells(I, 2).Resize(UBound(Tmp) + 1) = Application.Transpose(Tmp)
    End If
Next I
For Each Cel In Range("A2:A" & Cells(Rows.Count, "B").End(xlUp).Row).SpecialCells(xlCellTypeBlanks)
    Cel.Value = Cel.Offset(-1).Value
Next Cel
End Sub

Merci

Bonjour à tous,

Je me permets de relancer mon message précédant pour avoir de l'aide ou direction.

Merci par avance.

Rechercher des sujets similaires à "separer valeurs mettrent ligne"