Extraire les données d'une cellule

  • Initiateur de la discussion Initiateur de la discussion FaridP
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

FaridP

XLDnaute Occasionnel
Bonsoir à toutes et à tous,

J'ai reçu un fichier dont toutes les données sont à la suite dans une cellule et j'aimerais les récupérer sous un format exploitable c'est à dire une donnée par cellule et par ligne.

Pour information, ce souci est présent sur 31 lignes différentes et je ne peux pas multiplier les étapes pour arriver à mes fins donc si quelqu'un à une solution quasi automatique, j'avoue que ça m'arrange. 🙂😉

Je joins un aperçu du problème (onglet "Reçu") et un aperçu de ce que j'aimerais obtenir (onglet "Attendu").

Merci pour votre aide et votre temps et bonne soirée à tous,

Farid
 

Pièces jointes

bonjour,

un essai macro:
VB:
Sub EnColonne()
Dim T, DL As Long, Plage As Range, CC As Range
Application.ScreenUpdating = False
DL = 1

With Worksheets("Reçu")
.Columns(2).NumberFormat = "@"
Set Plage = .Range("A1:A" & .Range("A" & Rows.Count).End(xlUp).Row)
End With

With Worksheets("Attendu")
For Each CC In Plage
    T = Split(CC.Value, "', ")
    .Range("B" & DL).Resize(UBound(T, 1), 1) = Application.Transpose(T)
    DL = .Range("B" & Rows.Count).End(xlUp).Row + 1
Next
End With
Application.ScreenUpdating = True

End Sub

il reste quelques cellules avec " ;" il faudrait affiner; demain ...

A+

Edit : bonsoir vgendron solution effectivement plus simple !

re edit : sur mon antique version la conversion ne peut être faite qu'en ligne .
 
Dernière édition:
Bonsoir,

Merci pour ton aide.

J'ai envisagé cette solution mais elle m'oblige à recommencer l'opération 31 fois et de supprimer les apostrophes ensuite. C'est ce que je cherche à éviter.

En tout cas, je te remercie pour ton temps.

Bonne soirée,

Farid
 
avec ce code alors..
VB:
Sub Macro1()
'
' Macro1 Macro
'
Dim tablo() As Variant
Dim res As Variant
Application.ScreenUpdating = False

With Sheets("Reçu")
    fin = .Range("A" & .Rows.Count).End(xlUp).Row
    tablo = .Range("A1:A" & fin).Value
End With
For i = LBound(tablo, 1) To UBound(tablo, 1)
    res = Split(tablo(i, 1), ",")
    For j = LBound(res) To UBound(res)
        res(j) = WorksheetFunction.Substitute(WorksheetFunction.Substitute(WorksheetFunction.Substitute(res(j), "'", ""), "(", ""), ")", "")
    Next j
    Sheets("Reçu").Range("A" & i).Resize(1, UBound(res)) = res
Next i
Application.ScreenUpdating = True
End Sub
 
Vgendron, Paf, un grand merci à vous, c'est top.

Sans vouloir exagérer, j'ai oublié un paramètre important : il y a une colonne avec une référence que je dois aussi récupérer (c.f. : exemple), pensez-vous que c'est possible ?

Sincèrement désolé, j'aurais pu et dû tout mettre dès le départ. 🙁
 

Pièces jointes

re,

avec la prise en compte de la colonne B

VB:
EnColonne()
Dim TT, T, DL As Long, i As Long
Application.ScreenUpdating = False

DL = 1
With Worksheets("Reçu")
TT = .Range("A1:B" & .Range("A" & Rows.Count).End(xlUp).Row)
End With

With Worksheets("Attendu")
For i = LBound(TT, 1) To UBound(TT, 1)
    T = Split(TT(i, 1), "', ")
    .Range("B" & DL).Resize(UBound(T, 1) + 1, 1) = Application.Transpose(T)
    .Range("C" & DL).Resize(UBound(T, 1) + 1, 1) = TT(i, 2)
    DL = .Range("B" & Rows.Count).End(xlUp).Row + 1
Next
End With
Application.ScreenUpdating = True
End Sub

Bonne suite
 
re,

avec la prise en compte de la colonne B

VB:
EnColonne()
Dim TT, T, DL As Long, i As Long
Application.ScreenUpdating = False

DL = 1
With Worksheets("Reçu")
TT = .Range("A1:B" & .Range("A" & Rows.Count).End(xlUp).Row)
End With

With Worksheets("Attendu")
For i = LBound(TT, 1) To UBound(TT, 1)
    T = Split(TT(i, 1), "', ")
    .Range("B" & DL).Resize(UBound(T, 1) + 1, 1) = Application.Transpose(T)
    .Range("C" & DL).Resize(UBound(T, 1) + 1, 1) = TT(i, 2)
    DL = .Range("B" & Rows.Count).End(xlUp).Row + 1
Next
End With
Application.ScreenUpdating = True
End Sub

Bonne suite
Hello Paf,

C'est juste top, merci beaucoup ! Exactement comme je le souhaitais.

Excellente fin de journée à toi et encore merci. 😉
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
114
Réponses
2
Affichages
330
Retour