Un bug de substitue()
La fonction substitue() est
censée remplacer toutes les occurrences d’une chaîne donnée de caractères par
une autre chaîne donnée.
En fait, les choses ne sont pas si simples que cela…
Dans les trois exemples ci-dessous, nous avons la même formule entrée en B1, puis recopiée vers le bas, dont le texte est reproduit en colonne C.
Pour la ligne 1, aucun problème : les trois occurrences de « 0110 » sont bien remplacées par « 0a0 »…
En fait, les choses ne sont pas si simples que cela…
Dans les trois exemples ci-dessous, nous avons la même formule entrée en B1, puis recopiée vers le bas, dont le texte est reproduit en colonne C.
Pour la ligne 1, aucun problème : les trois occurrences de « 0110 » sont bien remplacées par « 0a0 »…
En ligne 2, on constate que
seules la première et la troisième occurrence sont modifiées.
En ligne 3, seules la
première et la seconde occurrence sont modifiées.
Cela est dû à une sorte de
bug de conception (ou de programmation ?) qui fait que la partie du texte qui a été modifiée ne peut
plus concourir à une seconde modification. Dans le cas de la cellule A2,
puisque le « 0110 » des quatre premiers caractères a été remplacé par
« 0a0 », c’est uniquement à partir du cinquième caractère de A2 que les
tentatives de remplacement de chaîne reprennent, ce qui fait que la seconde
occurrence de « 0110 » n’est plus reconnue comme telle et modifiée,
puisqu’elle démarre avec le « 0 » en quatrième position qui n’est
plus considéré comme candidat…
Et c’est pour cette raison
que, pour la chaîne en A3, les deux premiers remplacements attendus ont bien
lieu, mais que le troisième est loupé…
En conclusion, faites bien
attention quand vous utilisez la fonction substitue() : il faut bien la
connaître pour l’utiliser sans tomber dans ses pièges…
1 Commentaire(s):
Bonjour,
Je ne vois pour ma part aucun bug. Il n'y a aucune raison que cette formule soit récursive.
Il se passera exactement la même chose si vous utilisez la fonction "rechercher et remplacer" (Ctrl+H) d'Excel.
Il en va de même pour n'importe quel éditeur de texte.
Exemple, quand j'effectue un remplacement de " " par " ". je sais très bien qu'il pourra y avoir plus d'un "espace" dans mon texte final.
Benjamin.
By
Benji, sur 11:37 AM
Enregistrer un commentaire
<< Accueil