Problème fonction IF (passage vers ELSE refusé)

Bonjour à tous !

Je suis en cours de développement d'une petite macro pour comparer 2 tableaux. Le système est basé sur un IF, le code fonctionne bien tant que la condition est vrai (donc que mes comparaisons sont identiques), mais quand la condition est fausse au lieu de me renvoyer vers le ELSE il m'affiche un message d'erreur :

Erreur d’exécution '91' :

Variable objet ou variable bloc With non définie

Ma seule variable est "i" et c'est un Integer

Vous trouverez ci-joint un fichier avec le code qui me pose problème.

Je suis sûr que c'est le fonction FIND qui est un problème mais je ne sais pas comment le résoudre... :/

Ci quelqu'un a des idées ...

Merci d'avance !

13bug-tri.xlsm (14.65 Ko)

Bonjour,

L'utilisation de la méthode Find réclame quelque précaution !

Find renvoie un objet Range (quelle que soit la propriété de l'objet qu'on prélèvera), mais si ce qui est cherché n'est pas trouvé, il n'y a pas d'objet ! Si l'on n'a pas testé avant son existence, on a une erreur !!

Avec ta méthode baroque d'utilisation de Find c'était inévitable... La macro est a refaire en changeant de méthode... Cela te permettra de pouvoir l'écrire correctement en indentant sans sauter de lignes à tire-larigot et en supprimant tous les Select...

Mais tu as de la chance d'avoir une erreur, cela permet l'arrêt de la macro ! Ta boucle Do... Loop sous condition que (IsEmpty(Activecells)) outre qu'elle est encadrée de parenthèses inutiles, indique que la boucle doit se poursuivre tant que Activecells est vide mais comme Activecells qui n'est pas un mot clé VBA est donc interprétée comme une variable non déclarée, donc de type Variant qu'on peut justement tester avec IsEmpty, et qui est effectivement vide puisque non initialisée, et qui n'a aucune chance de changer de contenu au cours de l'exécution, elle remplira en permanence la condition de poursuite de la boucle.

Ta boucle qui n'a ainsi aucune condition d'arrêt pourrait se poursuivre indéfiniment...

Je n'ai par ailleurs pas compris pourquoi cette procédure est appelée Tri puisqu'elle ne fait pas de tri.

Cordialement.

Rechercher des sujets similaires à "probleme fonction passage else refuse"