Insertion de caractères dans une cellule en VBA

jeff1494

XLDnaute Occasionnel
Bonjour à toutes et tous;
Je reviens vers vous car je dois modifier la valeur d'une cellule contenant la chaine de caractères suivants:
[[-11],[-1-1],[1-1],[11]]​
La transformation est d'insérer une virgule et un espace après chaque 1er chiffre entre crochet, ce qui doit donner la chaine suivante :
[[-1, 1],[-1, -1],[1, -1],[1, 1]]​

J'avoue que je ne sais pas comment appréhender le problème.
Donc y-aurait-il quelqu'un pour m'expliquer comment le faire?

D'avance je remercie ceux qui voudront bien se pencher sur mon problème.
Bonne soirée à toutes et tous.
 

jeff1494

XLDnaute Occasionnel
Bien, en pièce jointe vous avez un exemple de fichier que je souhaite traiter.

Bon le code n'est certainement pas le plus beau, ni le plus optimisé du monde, mais pour l'instant il fonctionne (ou presque).
Dans ce fichier j'ai créé un onglet dans le ruban qui me permet de centraliser toutes mes actions. Onglet nommé "Analyse des Gcodes" en position 2.

Le ruban est découpé en 4 groupes, et c'est dans le groupe 2 (Création Référence et Cura) que j'appelle une macro qui me pose problème.
Le but de cette macro est de créer 2 feuilles correspondant aux deux fichiers "Référence" = Resref et Cura" = Rescura. La création du fichier "CURA" fonctionne sans problème.

La création se fait au travers de la macro "Trtlignes" qui est dans le module "Module3_TrtLignes"
Lors de la création de la feuille Resref (Fichier Référence), le principe est de lire la colonne A de la première feuille (Cette feuille contient un fichier de type 'json' importé depuis le Web, ce fichier correspond aux valeurs de paramètres que je veux exploiter).

Je désire exploiter seulement les valeurs des étiquette suivantes : "label" , "default_value", "unit", et "description".
Même si mon code n'est pas académique (ce pour quoi je présente mes excuses, mais en tant que débutant on fait comme on peut), le traitement des étiquette fonctionne sauf le traitement de certaines valeurs de l'étiquette "default_value".

Le cas qui me pose problème est celui traitant de "polygon", en effet je dois concaténer plusieurs valeurs qui sont sur des lignes contiguës.
Cette valeur de "polygon" est détecté par la présence de cette chaine dans une cellule avec la chaine "type" qui est la ligne précédent la ligne contenant la valeur "default_value" déclenchant mon traitement.
Le nombre de lignes et les valeurs de chaque ligne concernant le type "polygon", n'est pas prévisible.

Dans mon fichier exemple, si on regarde plus particulièrement les lignes 10 et 11 de la feuille Resref les valeurs obtenues ne sont pas celles que je dois obtenir.

Au lieu d'obtenir la chaine "[[-1, 1], [-1, -1], [1, -1], [1, 1]]" pour la ligne 10 j'obtiens "[[-11], [-1-1], [1-1], [11]]".
La différence tient à la chose suivante : manque une virgule et un espace entre les chiffres.
La même chose se produit avec les valeurs de la ligne 11
Je devrais avoir "[[-20, 10], [10, 10], [10, -10], [-20, -10]]" et j'obtiens "[[-2010], [1010], [10-10], [-20-10]]"

C'est là que réside mon problème, réussir à obtenir ce que je veux (en vert dans le texte).
Voilà, en espérant que cette fois-ci ma demande est compréhensible, et que le fichier joint permettra à celles et ceux qui voudront bien m'aider, à résoudre mon problème.
Bonne journée à toutes et tous.

PS : Le fichier joint correspond au résultat de la macro attachée à l'élément du groupe 2 (Création Référence et Cura). Pour "initialiser le fichier et pouvoir relancer la macro il suffit de supprimer les 4 colonnes (A - D) de la feuille Resref, et la colonne A de la feuille Rescura.
Ce fichier ne contient aucune des solution qui m'ont été données par mapomme et sousou, que je remercie au passage pour leur attention;
 

Pièces jointes

  • PB valeur Polygone.xlsm
    80.6 KB · Affichages: 5

sousou

XLDnaute Barbatruc
RE
Évidemment cà ne correspond pas exactement à ta première description
Test ceci.
j'ai ajouter une variable flag, et ajouté deux ligne de code dans polygone entourées des reamarques sousou
à Tester peut-être sur d'autres valeurs
 

Pièces jointes

  • Copie de PB valeur Polygone.xlsm
    79.4 KB · Affichages: 4

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

Je vous propose une autre démarche.
Il s'agit de remplir la colonne C de la feuille provenant de JSON par une formule.
Cette formule met en colonne C le texte que vous désirez en face de chaque ligne comprenant "type": "polygon",
La macro le faisant est simple et se trouve dans le module M_FormulePolygone , macro AppliquerFormulePolygone()

Pour votre recherche, il suffira ensuite:
  • au préalable, lancer une fois la macro AppliquerFormulePolygone()
  • puis au cours de votre balayage, repérer chaque ligne "type": "polygon",
  • ==> sur la même ligne en colonne C, vous trouverez votre texte
nota: le bouton Hop! lance la macro à la mano qui complète la colonne C avec la formule. Les textes 'utiles " se retrouvent en cellule C75 et C101
 

Pièces jointes

  • jeff1494- valeur polygone - v1.xlsm
    80.7 KB · Affichages: 10

Discussions similaires