Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 supprimer/Renommer la dernière clé d'un dictionary

vgendron

XLDnaute Barbatruc
Bonjour à toutes et tous
dans le fichier ci joint, je m'amuse à transformer des chaines de caractères (colonne Input) en SOUS chaines de caratères (ColonneS output)

dans le fichier (lignes 2 à 7), c'est ce que je veux.
à partir de la ligne 10, c'est ce que j'obtiens après execution de la macro

Suite au découpage en une ou plusieurs sous chaines, j'ai besoin de modifier la dernière sous chaine pour supprimer l'indice "_1" (lignes 2 3 4 5) ou indice "_3" (ligne6) ou indice "_4" (lignes 7 et 8)

La solution est sans doute toute simple, mais elle m'échappe...
en fait, il faut juste pouvoir acceder à la dernière clé

PS: pour l'exemple, je colle le dictionnaire dans le fichier excel, mais au final, pas question de les afficher.
donc les solutions à base de "recuperer la dernière souschaine de la ligne" / découper avant le "=" / supprimer le dernier indice / et recopier dans la feuille.. ca n'ira pas.

Avez vous des suggestions?

Merci à vous
 

Pièces jointes

  • Separer ChaineBool.xlsm
    21.5 KB · Affichages: 15

vgendron

XLDnaute Barbatruc
@job75 merci, mais tu n'as pas tout lu; notamment le PS
la solution que tu proposes modifie le résultat DANS le fichier excel
ce que je veux, c'est modifier directement DANS le dictionnaire
parce que celui ci, ensuite sert à alimenter autre chose

mais à priori, j'ai trouvé la (une) solution
selon la facon de déclarer le dictionnaire, la ligne suivante fonctionne.. ou pas...encore une subtilité que je ne maitrise pas..

NomCléTochange = Dicolistvar.Keys(Dicolistvar.Count - 1)

je vous rejoins mon fichier pour info.
 

Pièces jointes

  • Separer ChaineBool.xlsm
    22.3 KB · Affichages: 4
Dernière édition:

job75

XLDnaute Barbatruc
Avec ce fichier (2) le Dictionary est bien modifié :
VB:
    a = Dicolistvar.Keys
    b = Dicolistvar.Items
    Dicolistvar.Remove a(UBound(a))
    Dicolistvar(Replace(a(UBound(a)), "_" & UBound(a) + 1, "")) = b(UBound(b))
 

Pièces jointes

  • Separer ChaineBool(2).xlsm
    23.3 KB · Affichages: 6

vgendron

XLDnaute Barbatruc
Effectivement, j'avais bien pensé à passer par des tableaux.. mais je voyais ca plus compliqué.. du coup, je n'étais pas allé au bout de la solution..
mais je vois que finalement.. ca ne fait que 4 lignes de code simples :-D
Merci Job
 

Discussions similaires

Réponses
22
Affichages
1 K
Réponses
7
Affichages
688
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…