Conversion de données

Bonjour à tous!

Dans le cadre de mes activités, je reçois des données par sms de différents gérants. J'utilise l'application sms to excel pour compiler les sms reçus sur un fichier Excel afin de mettre en place une base de données. Je sollicite votre aide pour avoir un macro ou éventuellement une formule qui peut me permettre d'éclater chaque information contenue dans la colonne D en 6 colonnes (cf tableau 2, colonnes L à Q).

Ci-joint un fichier exemple.

Merci d'avance.

Bonjour,

en L3

=STXT($D3;CHERCHE("Pluie du ";$D3)+NBCAR("Pluie du ");CHERCHE(":";$D3)-CHERCHE("Pluie du ";$D3)-NBCAR("Pluie du "))

je te laisse adapter aux autres colonnes ?

en M3

=STXT($D3;CHERCHE(":";$D3)+NBCAR(":");CHERCHE("mm";$D3)-CHERCHE(":";$D3)-NBCAR(":"))

en N3

=STXT($D3;CHERCHE("Cumul: ";$D3)+NBCAR("Cumul: ");CHERCHE(" mm";$D3)-CHERCHE("Cumul: ";$D3)-NBCAR("Cumul: "))

en O3

=STXT($D3;CHERCHE("Total jour de pluie: ";$D3)+NBCAR("Total jour de pluie: ");CHERCHE("Phe";$D3)-CHERCHE("Total jour de pluie: ";$D3)-NBCAR("Total jour de pluie: "))

en P3

=STXT($D3;CHERCHE("Phenomene observe: ";$D3)+NBCAR("Phenomene observe: ");CHERCHE("Pluvio";$D3)-CHERCHE("Phenomene observe: ";$D3)-NBCAR("Phenomene observe: "))

en Q3

=STXT($D3;CHERCHE("Pluvio: ";$D3)+NBCAR("Pluvio: ");99)

Bon, j'aurais mieux fait de poster le fichier ...

Bonsoir, Salut Steelson !

Une solution macro :

Sub EclaterDonnées()
    Dim Tbl(), aa, dd, i%
    aa = ActiveSheet.Range("A1").CurrentRegion
    ReDim Tbl(UBound(aa) - 3, 8)
    For i = 3 To UBound(aa)
        Tbl(i - 3, 0) = aa(i, 1): Tbl(i - 3, 1) = aa(i, 2): Tbl(i - 3, 2) = aa(i, 3)
        dd = Split(aa(i, 4), Chr(10))
        Tbl(i - 3, 3) = Trim(Replace(Split(dd(0), ":")(0), "Pluie du", ""))
        Tbl(i - 3, 4) = Val(Split(dd(0), ":")(1))
        Tbl(i - 3, 5) = Val(Split(dd(1), ":")(1))
        Tbl(i - 3, 6) = Val(Split(dd(2), ":")(1))
        Tbl(i - 3, 7) = Trim(Split(dd(3), ":")(1))
        Tbl(i - 3, 8) = Trim(Split(dd(4), ":")(1))
    Next i
    With ActiveSheet.Range("I3")
        .Offset(2).Clear
        Application.ScreenUpdating = False
        With .Resize(UBound(aa) - 2, 9)
            .Value = Tbl
            .Borders.Weight = xlThin
        End With
    End With
End Sub

Cordialement.

Bonjour MFerrand,

en fait j'ai voulu faire sans macro ...

Salut Steelson !

J'ai vu ! C'est pas toujours plus simple !

en réalité, j'aurais voulu faire une suite de paramètres (texte avant / texte après) de façon à lui laisser la main ensuite

avec paramétrage et conversion numérique

Bon, j'aurais mieux fait de poster le fichier ...

Bonjour Steelson!

Merci infiniment de m'avoir aidé à trouver une solution à mon problème.

Great thanks

Bonsoir, Salut Steelson !

Une solution macro :

Sub EclaterDonnées()
    Dim Tbl(), aa, dd, i%
    aa = ActiveSheet.Range("A1").CurrentRegion
    ReDim Tbl(UBound(aa) - 3, 8)
    For i = 3 To UBound(aa)
        Tbl(i - 3, 0) = aa(i, 1): Tbl(i - 3, 1) = aa(i, 2): Tbl(i - 3, 2) = aa(i, 3)
        dd = Split(aa(i, 4), Chr(10))
        Tbl(i - 3, 3) = Trim(Replace(Split(dd(0), ":")(0), "Pluie du", ""))
        Tbl(i - 3, 4) = Val(Split(dd(0), ":")(1))
        Tbl(i - 3, 5) = Val(Split(dd(1), ":")(1))
        Tbl(i - 3, 6) = Val(Split(dd(2), ":")(1))
        Tbl(i - 3, 7) = Trim(Split(dd(3), ":")(1))
        Tbl(i - 3, 8) = Trim(Split(dd(4), ":")(1))
    Next i
    With ActiveSheet.Range("I3")
        .Offset(2).Clear
        Application.ScreenUpdating = False
        With .Resize(UBound(aa) - 2, 9)
            .Value = Tbl
            .Borders.Weight = xlThin
        End With
    End With
End Sub

Cordialement.

Merci MFerrand, c'est parfait.

Bonne continuation.

Bonjour à tous!

Je vous remercie de m'avoir aidé à solutionner mon problème.

Big up à vous!

Rechercher des sujets similaires à "conversion donnees"