XL 2019 Extraire des données dans une parenthèse

ravuth

XLDnaute Nouveau
Bonjour, je voulais savoir si il était possible d'extraire des données dans ce type de parenthèse :
{"CAD":1.415,"EUR":0.926,"MXN":25.103,"USD":1,"SGD":1.434,"AUD":1.648,"GBP":0.813}

Par exemple en B1 : CAD en B2 :1,415 en B3 : EUR en B4 : 0,926 etc...

Merci d'avance de votre aide.

Ravuth
 

Pièces jointes

  • Exemple.xlsx
    8.6 KB · Affichages: 12

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Ravuth,
un essai en PJ avec cette petite fonction perso :
VB:
Function ExtraireValeur(Chaine$, Indice%)
    tablo = Split(Chaine, ",")
    ExtraireValeur = Val(Split(tablo(Indice - 1), ":")(1))
End Function
La syntaxe est : =ExtraireValeur(Chaine;Niveau)
avec Chaine : chaine à analyser, Niveau le N° du paramètre à remonter.
 

Pièces jointes

  • Exemple (12).xlsm
    13.7 KB · Affichages: 4

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Il s'agit de données JSON
Oui il est possible de plusieurs manières dont la suivante : Outils de conversion d'excel, (onglet Données/Outils de données/Convertir)

A l'étape 2 de l'assistant conversion choisir la virgule ET les deux-points (autre) comme séparateur de texte.
1655892468710.png

A l'étape 3 choisir le point comme séparateur décimal dans la fenêtre qui s'ouvre après avoir cliqué sur 'Avancé'.
Cliquer sur chaque entête de colonne et choisir son type, Texte pour le text et Standard pour les nombres.
1655892690858.png


Il ne vous restera plus qu'à corriger la première et dernière colonne celles avec "{" et "}"
avec l'enregistreur de macro ça donne ça :
VB:
Sub Macro1()
'
' Macro1 Macro
'

'
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=True, OtherChar:= _
        ":", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 2), Array(4, 1), Array(5, 2), _
        Array(6, 1), Array(7, 2), Array(8, 1), Array(9, 2), Array(10, 1), Array(11, 2), Array(12, 1) _
        , Array(13, 2), Array(14, 1)), DecimalSeparator:=".", TrailingMinusNumbers:=True
End Sub
Vous pouvez utiliser cet assistant sur une colonne de données.

Si vos données sont issues d'un fichier json, alors Power Query pourrait le traiter et les répartir en colonne/

cordialement
 

M92_

XLDnaute Junior
Bonjour à tous,

En PJ, une proposition avec l'aide de Power Query.

JsonTransfo.gif


La requête s'actualise automatiquement à chaque changement de valeur de A1.

VB:
Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = Me.Range("A1").Address Then _

    ActiveWorkbook.Connections("Requête - Tableau1").Refresh

End If

End Sub

Cdlt,
M92
 

Pièces jointes

  • Exemple.xlsm
    23.2 KB · Affichages: 4

Discussions similaires

Statistiques des forums

Discussions
312 304
Messages
2 087 062
Membres
103 449
dernier inscrit
pulco41