Bonjour le forum,
Je me permet de venir ici chez les pros pour poser ma question. Je ne suis pas informaticien, en général j'arrive à résoudre mes problèmes en consultant différents forums mais ici le problème semble plus ardu puisqu'on n'arrive pas à m'aider...
J'ai une macro qui est censée passer en revue toutes les cellules de différentes sheets (j'ai choisi For Each ... in ActiveWorkbook.Sheets auquel j'ai soustrait certains sheets avec un If Not). A chaque fois qu'elle trouve une occurence, elle copie une cellule de ma sheet "traduction". Le résultat obtenu est que tous les termes sont traduits automatiquement sur base d'une liste de mots (3 colonnes, une par langue).
Pour cette traduction, on utilise la fonction .Cells.Find().
Mon problème est que, depuis que j'ai recopié mon code dans mon fichier définitif, j'obtiens une erreur "Run-time error '13': Type mismatch".
J'ai effectué de nombreux tests. En fait mon code avait été développé dans un fichier séparé où il ne traduisait que 2-3 pages. Il fonctionnait parfaitement.
Maintenant qu'il doit traduire une quinzaine de pages, ça plante.
J'ai essayé de trouver sur quelles sheets le problème se passait (car avec le Debug, je n'obtiens rien). Il semblerait que les sheets concernées soient celles qui contiennent des messages d'erreurs:
- evolution (si on ne fait pas le lien avec Bob-OLE (macro complémentaire faisant le lien entre mon programme de comptabilité et Excel et grâce à laquelle je peux récupérer automatiquement des données). Si la macro complémentaire n'est pas active, elle renvoie un message #NAME?)
- dividende (idem)
- tax1 (4 formules renvoie actuellement #DIV/0!) car je n'ai encore rien complété comme données. Division par 0 impossible.
- tax4 (dans ma colonne AK, il y a une autre division par 0 car les données ne sont pas complétées).
Lorsque je n'ai pas ces pages contenant des erreurs, la macro fonctionne telle qu'elle est actuellement.
Pour les divisions par 0, je peux créer un If (... = 0; 0; formule) directement dans Excel pour qu'elles n'affichent jamais de message d'erreur. Par contre, pour le lien avec Bob-OLE, la décision appartient à l'utilisateur de lier ou non le fichier Excel.
Un utilisateur d'un autre forum m'avait proposé les solutions suivantes:
- For Each c In Ws.UsedRange _ On Error Resume Next --> ça ne fonctionne pas. Ca me bousille certaines formules en allant y copier du texte. Je ne comprends même pas sur quelle base il copie ou non du texte.
- Set trouve = Sheet02.Cells.SpecialCells(xlCellTypeConstants).Find(c, lookat:=xlWhole) --> le message d'erreur Type mismatch continue
Dites-moi que vous avez une idée lumineuse
Je vous annexe mon fichier de travail. La macro s'appelle traduction() et se trouve dans ThisWorbook.
Merci d'avance,
Partager