Bug de l'instruction "replace"

Bonjour à tous,

Dans une macro qui permet de générer automatiquement des rapports dans un template particulier à partir de données extraite (en format XL) d'un ERP, j'ai à un certain endroit l'instruction suivante :

(...)

Dim x As Byte

For x = 3 To Sheets.Count

'remplacer les valeurs "faux" par une cellule vide

Sheets(x).Activate

Range("A1:I50").Select

For Each cellule In Selection

cellule.Value = Replace(cellule, "Faux", " ")

cellule.Value = Replace(cellule, "FAUX", " ")

Next cellule

Next x

Pour une raison inconnue, j'ai de temps en temps un bug en plein milieu de cette boucle. J'ai, par exemple, 20 cellules contenant "Faux" à remplacer, ça fonctionne 5 fois (ou 8 ou 12, c'est aléatoire) et puis paf, ça plante.

De manière aléatoire sur certains fichiers.

Mieux que ça, l'utilisateur final de la amcro m'a dit avoir eu le problème systématiquement sur plusieurs fichiers bien précis. Je fais tourner la macro sur les mêmes fichiers sur ma machine...sans problème.

Je ne pense donc pas que le problème vienne du code VBA en lui-même.

Mais par contre, auriez-vous une idée de ce qui peut provoquer ça?

D'avance merci pour vos lumières

Bonjour,

Je ne vois pas du tout quel fichier joindre pour éclairer ma question....

re,

seulement pour montrer de quoi on l'air les cellules contentent une valeurs FAUX en problème

c'est à dire nous aider à vous aider...

ps/ voir le point 6 de la charte du forum

Charte du forum : explications et règles à respecter

Avant de poster sur ce forum, il est important de prendre connaissance des quelques règles indiquées ci-dessous.

6. Pensez à joindre un fichier pour faciliter la compréhension du problème et augmenter les chances de vous faire aider (taille maximale autorisée : 1mo). N'oubliez pas de retirer toutes les informations confidentielles avant de joindre votre fichier !

Hé bien si, je plussoie la demande.

Car tout dépend comment est écrit FAUX qui peut être du texte ou la valeur "fausse" (false)

Du reste, tu pourrais aussi essayer

Replace(__________, False, "")

Donc il serait bon d'avoir juste la collection des valeurs de la colonne pour pouvoir réellement voir ce que c'est que cette donnée !

Et parfois il suffit aussi de préciser cellule.value

Désolée, je ne voulaias pas enfreindre le règlement.

Voici un exemple en PJ (mais ce coup-ci la macro ne beugue pas).

Etant donné que le bug arrive de manière aléatoire et pas à chaque exécution sur le même fichier, je ne pense pas que ça va beaucoup vous éclairer.

Ca ne peux pas non plus (je pense) être lié à la manière dont "Faux" est écrit vu que ce sont des champs exportés directement de notre ERP, donc toujours au même format. Et si c'était lié à la manière dont "faux" est écrit, ça planterait à chaque exécution sur le même fichier.

J'ai comme l'impression, mais je peux vraiment me tromper, qu'il y a quelque chose qui "sature" quelque part. Que la macro peut tourner 5 fois, 10 fois, 20 fois et puis PAF! ça coince de manière aléatoire.

Est-il possible que la fonction "replace" laisse un trace quelque part, un peu comme une espèce de buffer temporaire qui se remplirait petit à petit à chauqe remplacement et qui coincerait à un moment donné?

Bonjour frannou,

lors d'un extraction il peut il avoir des caractères parasite,

voici un exemple pour les éliminer,

Sub valeur_clean()
tx = Range("A1").Value
arr = Array(1, 9, 10, 13, 28, 29, 30, 31, 32, 129, 141, 143, 144, 157, 160)
For i = LBound(arr) To UBound(arr)
 x = Application.Substitute(tx, Chr(arr(i)), "")
 tx = x
Next
Debug.Print tx
End Sub

Merci Isabelle, je vais tester ça

Bonjour,

reçois-tu un message d'erreur ? quel est-il ? avec un même fichier, si tu executes plusieurs fois ta macro, reçois-tu toujours le même bug au même endroit ?

J'ai un message d'erreur oui, mais je ne l'ai pas noté et depuis que j'ai posté ce message, je n'arrive plus à reproduire l'erreur.

Jusqu'ici ça refonctionne bien.

Je ne suis pas l'utilisatrice de la macro, je vais demander à ma collègue qu'elle me signale quand ça arrive encore pour que je puisse noter ce qui se passe et tester la solution proposée.

Rechercher des sujets similaires à "bug instruction replace"