XL pour MAC Traitement de données brutes

agnesd

XLDnaute Occasionnel
Chers tous,

Ravie de revenir sur le forum et de découvrir la nouvelle ergonomie (et le fameux téléverser un fichier pour joindre qqc...) !

Je vous sollicite aujourd'hui pour des conseils, car j'ai une masse de données brutes à traiter mais celles-ci ne sont vraiment pas formatées et je bloque. Je dois aller chercher des données entre parenthèses, scinder avant ou après une virgule, etc. pour avoir un seul élément par ligne. Je joins un petit fichier exemple (en 1 les données que je reçois, en 2, le formatage que je souhaiterais leur donner).

Merci d'avance pour votre aide et bonne journée,

Agnès
 

Pièces jointes

  • testexcel.xls
    36.5 KB · Affichages: 90

Efgé

XLDnaute Barbatruc
Bonjour agnesd

Je ne sais pas si cela fonctionne sous Mac, mais on ne sais jamais:
VB:
Sub test()
Dim i&, J&, K&, Rw&
Dim TData As Variant, Tmp As Variant, TmpFilm As Variant
Dim Sh As Worksheet

Set Sh = Sheets("Resultat proposé") 'A adapter

With Sheets("Festivals") ' a adapter
  TData = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(3)(1, 6))
End With

For i = LBound(TData, 1) To UBound(TData, 1)
  Tmp = Split(TData(i, 6), Chr(10))
  Rw = Sh.Cells(Sh.Rows.Count, 1).End(3)(2).Row
  For J = LBound(Tmp) To UBound(Tmp)
          For K = 1 To 5
                 Sh.Cells(Rw + J, K) = TData(i, K)
           Next K
           TmpFilm = Split(Tmp(J), "(")
           Sh.Cells(Rw + J, 6) = TmpFilm(0)
           If UBound(TmpFilm) = 2 Then Sh.Cells(Rw + J, 7) = Replace(TmpFilm(1), ")", "")
           Sh.Cells(Rw + J, 8) = Split(TmpFilm(UBound(TmpFilm)), ")")(0)
  Next J
Next i
Sh.Columns.AutoFit
End Sub

D'autre part, dans ton exemple, le film 18 a un réalisateur 14 ??!!??

En espérant que cela t'iras.

Cordialement
 

agnesd

XLDnaute Occasionnel
C'est sans doute moi, mais je n'arrive pas à avoir autre chose que la première ligne de ma cellule qui est traitée, sinon c'est faux ?
En plus, dans les données que je reçois, il y a un nombre illimité de titres (pas juste 3 comme dans mon exemple), et la seule manière de savoir où est la fin, c'est de voir qu'il n'y a pas de virgule cette fois-ci. Ce n'est vraiment pas évident !
Peux-tu stp me dire où je me trompe ou bien me dire comment procéder pas à pas, stp ?

Merci !

Agnès
 

thebenoit59

XLDnaute Accro
Existe t'il un renvoi à la ligne à chaque film ?
Efgé et moi-même sommes partis sur ce principe.

Tu peux modifier mon code ainsi :

VB:
'Nous nous plaçons sur la feuille f1.
With f1
    For J = 2 To i
        temp = Split(Replace(.Range("F" & J).Value, Chr(10), ""), ",")
        Call Récupération_Données(temp, J)
    Next J
End With

Ainsi on ne traitera les différentes lignes qu'avec le ","
 

agnesd

XLDnaute Occasionnel
wow, ça a l'air de marcher ! Je pensais devoir traiter au moins la dernière ligne à la main, mais les données apparaissent aussi (je dis cela par rapport à la virgule).

Un grand merci, je vais essayer d'appliquer cela à tous les fichiers que je dois traiter !

Comment puis-je faire ? Je rajoute (colle) simplement les données à traiter dans le tableau festivals ou bien je dois suivre une procédure particulière et modifier la macro, stp ?

Agnès
 

Discussions similaires