REPLACE inéfficace

Fanfan20167 - 17 juin 2013 à 17:31
 Fanfan20167 - 18 juin 2013 à 19:03
Bonjour le forum!
Je suis confronté à une énigme:
j'ai créé une macro VBA qui effectue un "nettoyage" sur une feuille à l'aide de la fonction "Replace".
Ce nettoyage consiste en 3 remplacements:
des "#DIV/0!", des "0" et des "00:00:00" par "" (rien). Il se trouve que le 3e remplacement ne fonctionne pas! Mais lorsque je le lance manuellement (les derniers paramètres sont conservés) juste après l'exécution de ma macro, cela fonctionne!
Quelqu'un aurait-il une explication ?
Voici la portion de ma macro :
            On Error Resume Next
            Debug.Print "Effacement de '#DIV/0!'",
            Cells.Replace What:="#DIV/0!", Replacement:="", LookAt:=xlWhole, _
                SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                ReplaceFormat:=False
            Debug.Print "Effacement de '0'",
            Cells.Replace What:="0", Replacement:=""
            Debug.Print "Effacement de '00:00:00'"
            Cells.Replace What:="00:00:00", Replacement:=""
            On Error GoTo 0


Merci pour vos réponses éclairées.

7 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 juin 2013 à 19:57
Bonjour,
c'est la cause et non l'effet, qu'il faut soigner.
si tu as par exemple des #DIV/0!, c'est qu'ils sont le résultat d'une formule Excel et ils réapparaîtront tant qu'existera la cause et que la formule sera présente.
Tu as donc très probablement à "revoir" la conception (ton alimentation en données).



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Fanfan20167
18 juin 2013 à 12:46
Bonjour et merci de ta prompte réponse UCFOUTU, mais je ne peux pas agir sur la source car il s'agit du résultat quotidien d'extractions d'un outil de supervision qui est exporté au format Excel. Ce qui me chagrine c'est que ça fonctionne en mode manuel donc ce n'est pas un problème de paramètres...
Je vais inverser les 2 dernières commandes de remplacement et voir ce que ça donne; si ça bloque toujours sur la même ou bien sur la dernière commande.
En attendant, j'attends vos suggestions !
Merci.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 juin 2013 à 13:01
mais je ne peux pas agir sur la source car il s'agit du résultat quotidien d'extractions d'un outil de supervision qui est exporté au format Excel

agis donc sur l'extraction.
et tu ne parles pas de l'existence d'une formule (que je devine). Quelle est-elle ?
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Fanfan20167
18 juin 2013 à 17:58
Désolé mais ce n'est pas possible car l'outil de supervision (de PabX) n'est pas paramétrable. C'est une usine à gaz dont une des nombreuse fonctionnalités est d'effectuer des extractions au format Excel.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 juin 2013 à 18:21
Oui ? et ?
et tu ne parles pas de l'existence d'une formule (que je devine). Quelle est-elle ?

car ce n'est tout-de-même pas ton appareil qui envoie des "#DIV/0!" (ou alors, il est mal utilisé ou complètement déréglé !)

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Fanfan20167
18 juin 2013 à 18:52
Comme je l'ai précisé dans mon précédent message, cet outil n'est pas paramétrable (je travaille dans une grande entreprise et tous les logiciels sont télédistribués par un service national et ne sont pas modifiables).
Mais ce n'est pas le remplacement des "#DIV/0!" qui pose problème, mais des "00:00:00".
J'ai donc effectué l'inversion des 2 derniers remplacements; ça donne ceci :
            On Error Resume Next
            Debug.Print "Effacement de '#DIV/0!'",
            Cells.Replace What:="#DIV/0!", Replacement:="", LookAt:=xlWhole, _
                SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                ReplaceFormat:=False
            Debug.Print "Effacement de '00:00:00'"
            Cells.Replace What:="00:00:00", Replacement:=""
            Debug.Print "Effacement de '0'",
            Cells.Replace What:="0", Replacement:=""
            On Error GoTo 0

Et les "0" sont biens effacés, ainsi que les "#DIV/0!" mais pas les "00:00:00".
Et je confirme que lorsque je fais CTRL+H et que je mets "00:00:00" dans le champs "rechercher" en laissant les autres paramètres intacts, cela fonctionne !
Qui a une idée ?
0
Fanfan20167
18 juin 2013 à 19:03
CA Y EST ! J'AI TROUVÉ !

C'était tout bête mais il est vrai que ce que l'on rentre en mode manuel est toujours interprété; les cellules contenant "00:00:00" sont bien au format heure; il fallait donc mettre timeserial(0,0,0) et non pas "00:00:00" comme entré en mode manuel...
Il faut toujours faire attention au traitement des dates et heures !

Merci quand même !
Cordialement.
0
Rejoignez-nous