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 SubNota : 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 SubMerci
Bonjour à tous,
Je me permets de relancer mon message précédant pour avoir de l'aide ou direction.
Merci par avance.