[Résolu ]Remplacement/Interversion multiples et simultanés dans une string [VBA]

Profkitroll

XLDnaute Nouveau
Bonjour à toutes et à tous,

Je vous écris car j'essaye de réaliser une fonction en VBA qui s'avère finalement plus compliquée que je ne l'avais prévu et j'espère trouver quelques pistes avec votre aide.

Ce que j'aimerais :

Mon objectif est d'intervertir deux mots entre eux à de multiples reprises au sein d'une même string.

Sur quoi je le fais :

Exemple avec la string "COS(x)SIN(x)SIN(x)COS(x) Bla bla SIN(x)"
Je souhaite remplacer COS par SIN et SIN par COS pour avoir le résultat : "SIN(x)COS(x)COS(x)SIN(x) Bla bla COS(x)"

La difficulté :
Le principal problème est que une fois les COS ayant remplacé les SIN, ma string devient "COS(x)COS(x)COS(x)COS(x) Bla bla COS(x)". Je ne distingue alors plus les "anciens" COS des "nouveaux" et ne peux donc pas procéder à une interversion.

Ce que j'ai fait :
J'avais commencé par lister les positions des premières lettres de mes COS dans un tableau PosiCOS(i) (avec i allant de 0 à 2 ici) et de mes SIN avec PosiSIN(i) (avec i allant de 0 à 3 ici). Donc PosiCOS(0) = 1 et PosiCOS(1) = 19.

Mais je pensais pouvoir utiliser SUBTITUE(string, COS, SIN, 1) puis SUBTITUE(string, COS, SIN, 19) avant de me rendre compte que le chiffre représente le numéro d'occurence et non la position de la première lettre.

Autre problème de cette "solution" (qui n'en n'est pas une) remplacer "SIN" par "COS" et vis versa ok même nombre de lettre mais "SIN" par "sinus" et vis versa ne fonctionne plus avec la différence de 2 caractères.

Comment je ferais :

Sans votre aide je pense m'orienter vers une solution qui découpe ma string en fonction des positions des caractères au début de chaque élément à remplacer, remplacer seulement la première occurence et recoller le tout puis recommencer mais tout cela me semble bien compliqué et il va falloir bricoler un truc quand le nombre de lettre est différent pour sélectionner la bonne position. Bref une usine à gaz pour une tache pas si complexe que ça initialement.

Je vous remercie d'avance pour la lecture de ce sujet que j'espère un minimum clair. La string en question n'est qu'un exemple simplifié d'une chaine bien plus longue.
 
Dernière modification par un modérateur:

Dranreb

XLDnaute Barbatruc
Re : Remplacement/Interversion multiples et simultanés dans une string [VBA]

Bonjour.
À part des astuces un peu spéciales pour des numériques à base de xor ou de soustractions qui ne nécessitent pas de variable intermédiaire mais quand même 3 opérations, pour intervertir deux choses il en faut une 3ième intermédiaire. Pour Substituer c'est une valeur intermédiaire impossible comme "?" par exemple. Substituer "COS" par "?", "SIN" par "COS", enfin "?" par "SIN".
 
Dernière édition:

Profkitroll

XLDnaute Nouveau
Re : Remplacement/Interversion multiples et simultanés dans une string [VBA]

Bonjour.
À part des astuces un peu spéciales pour des numériques à base de xor ou de soustractions qui ne nécessitent pas de variable intermédiaire mais quand même 3 opérations, pour intervertir deux choses il en faut une 3ième intermédiaire. Pour Substituer c'est une valeur intermédiaire impossible comme "?" par exemple. Substituer "COS" par "?", "SIN" par "COS", enfin "?" par "SIN".

Merci beaucoup de ta réponse.
Je vais essayer de m'orienter vers l'utilisation d'une variable intermédiaire alors, ça sera beaucoup plus simple et son utilisation consommera probablement moins qu'un grand nombre d'opérations.

Je te remercie d'avoir apporté ton point de vu pour m'aider.
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 206
Messages
2 086 207
Membres
103 157
dernier inscrit
youma