VBA vers fichier JSON

Bonjour à tous,

J'ai une macro qui me permet de convertir les plages de données Excel en JSON en créant un fichier texte. Pour réaliser ceci j'ai donc créer deux modules avec du code dedans ( en pièce jointe module1 et module2).

168module1.txt (1.28 Ko)
94module2.txt (1.57 Ko)

et ce code fonctionne vraiment très bien car il me convertis parfaitement les données en JSON. Le problème c'est que la première ligne se copie tout le temps sur chaque données par exemple :

image

Donc la ça commence par bonjour, puis non… et cela va convertir donc les deux première ligne (ligne 1 et 2). Mais lorsque la troisième ligne doit être converti elle reprend la ligne 1 puis la 3 alors que moi je veux seulement que ça s'écrive à la suite sans reprendre la première ligne et donc obtenir une conversion de type (ligne 1,2,3) plutôt que (ligne 1,2 et 1,3). Comment faire ???

Merci d'avance pour votre aide !

Cordialement,

fichier Excel ici pour ceux qui veulent :

80classeur1.xlsm (25.59 Ko)

NE PAS OUBLIER DE CHANGER L'ENDROIT OU S'ENREGISTRE LE FICHIER JSON :)

Bonjour Joannn1 et

Une petite présentation ICI serait la bienvenue

Si vous ne l'avez pas encore fait, je vous invite à lire :
- La charte du forum
- Quelques fonctionnalites du forum à connaître

Regardez aussi les petites icônes mises à votre disposition dans la barre de menu qui :
- vous permettent de poster un code (</>)
- ou de clôturer un fil lorsque vous avez terminé (V)

Merci pour votre participation

Concernant votre demande, il est mieux de joindre un fichier exemple au format ".xlsm" avec le code dedans

Cordialement

J'ai mis un fichier exemple en effet merci.

Re,

Le code est fait pour avoir un tableau avec entête, mais je n'en vois pas

Il faut donc changer le code de la fonction

Public Function ExcelToJSON(rng As Range) As String
  ' Check there must be at least two columns in the Excel file
  If rng.Columns.Count < 2 Then
      ExcelToJSON = CVErr(xlErrNA)
      Exit Function
  End If

  Dim dataLoop, headerLoop As Long
  ' Get the first row of the Excel file as a header
  Dim headerRange As Range: Set headerRange = Range(rng.Rows(1).Address)
  ' Count the number of columns of targeted Excel file
  Dim colCount As Long: colCount = headerRange.Columns.Count
  Dim json As String: json = "["
  For dataLoop = 1 To rng.Rows.Count
    ' Start data row
    Dim jsonData As String: jsonData = "{"
    ' Loop through each column and combine with the header
    For headerLoop = 1 To colCount
        'jsonData = jsonData & """" & headerRange.Value2(1, headerLoop) & """" & ":"
        jsonData = jsonData & """" & rng.Value2(dataLoop, headerLoop) & """"
        jsonData = jsonData & ","
    Next headerLoop
    ' Strip out the comma in last value of each row
    jsonData = Left(jsonData, Len(jsonData) - 1)
    ' End data row
    json = json & jsonData & "},"
  Next
  ' Strip out the last comma in last row of the Excel data
  json = Left(json, Len(json) - 1)
  json = json & "]"
  ExcelToJSON = json
End Function

A+

Merci BrunoM45 pour ta réponse en effet cela fonctionne !

Le seul truc c'est qu'en fait je sélectionne deux plage de données différentes comme tu as pu le voir ! Et j'aimerai qu'il n'y ai pas d'entête pour la première plage mais qu'il y en ai une pour la deuxième plage !

Est ce que c'est possible ?

Cordialement,

Bonjour,

Il faudra alors laisser 2 fonctions, l'une d'origine et celle que j'ai donné

En les nommant différemment bien évidemment

A+

Bonjour, d'accord je vais essayer, merci !

Donc je dois inclure deux fonctions ? ou je dois en mettre une pour la première plage et une pour la deuxième ?

Cordialement,

Bonjour Joann1,

Voici le fichier donné avec la fonction modifiée afin de l'appeler avec ou sans Entête

J'espère que ce sera compréhensible pour vous

A+

Bonjour BrunoM45 et merci pour le temps que vous m'accorder.

J'ai encore une erreur avec le code de ce type :

capture capture

Voici avec le débogage.

Merci pour votre aide !

J'ai réussi en cherchant l'erreur qu'il y avait et c'est bon ca fonctionne bien.

Merci pour votre aide BrunoM45 !! :)

PS: Si je rencontre un problème je reposterai un message ici.

Cordialement,

Bonjour

A+

Rechercher des sujets similaires à "vba fichier json"