OVH Cloud OVH Cloud

do until

7 réponses
Avatar
xavier
Bonjour,

Je me sers beaucoup de la fonction do until dans mes macro pour faire des
recherches, c-a-d que je me crée une feuille dans laquelle je rentre les
différentes listes dont j'ai besoin(ex: jour de la semaine, délégués,
produits,...) ce qui me permet d'incrémenter facilement mes listes lors de
rajouts (pas nécessaire de rentrer dans ma macro). J'utilise donc la fonction
do until qui me permet souvent d'associer une valeur située dans une des
cellules de la même ligne (ex colonne a : nom , colonne b : code , a1 = TOTO,
b1 = T001) mais le problème avec do until est que si le champ ou l'on peut
introduire la valeur qui permet la recherche, n'est pas limité aux valeurs de
la liste (ex: rowsource) lors de l'introduction d'une valeur différente, il
do until jusqu'à la dernière ligne de la feuille excel, et indique un
déboguage, j'utilise dans ce cas le code if error goto mais cette fois j'ai
un problème:

voici le code
On error goto N


N: If Err <> 0 Then
MsgBox "Indiquez uniquement votre nom orthographe correcte" & Chr(13)
Cancel = True
ENCNOM.Value = ""

jusque là aucun problème mais lors de l'ouverture d'un autre userform suite
à la validation de celui-ci et la fermeture (via l'opération unload me) il
m'affiche la msgbox de l'erreur.

J'ai essayé si je retirais on error goto afin de voir si je n'avais pas un
déboguage dans mon programme et qu'il affichait ce message même si c'est 2
userform différent mais pas de déboguage.

Solution:

-autre façon de stopper la recherche avec le do until que le on error goto
- solutionner le problème actuel c-a-d que le msgbox ne s'ouvre pas lors de
la fermeture de ce userform

MERCI
J'ai essayé d'être le plus clair possible mais si plus d'infos n'hésitez pas

7 réponses

Avatar
AV
J'utilise donc la fonction
do until qui me permet
d'associer une valeur située dans une des
cellules de la même ligne (ex colonne a : nom , colonne b : code , a1 = TOTO,


Je ne pense pas que ce soit une bonne méthode (lenteur des boucles)
Tu devrais te pencher sur la méthode find ou mieux une combinaison index/match

AV

Avatar
xavier
peux-tu m'aider sur cette fonction que tu utilise

merci

"AV" wrote:

J'utilise donc la fonction
do until qui me permet
d'associer une valeur située dans une des
cellules de la même ligne (ex colonne a : nom , colonne b : code , a1 = TOTO,


Je ne pense pas que ce soit une bonne méthode (lenteur des boucles)
Tu devrais te pencher sur la méthode find ou mieux une combinaison index/match

AV






Avatar
AV
Un exemple simple et générique (à adapter)

http://cjoint.com/?dsmnEygIU7

AV
Avatar
xavier
merci de ta réponse ça fonctionne presque bien encore une petite question,
étant donné que le champs n'est pas un menu déroulant mais un champ libre qui
permet d'introduire son nom, lorsque je tape une autre identité ne faisant
pas partie de la lsite il m'affiche un message d'erreur comment puis-je
éviter ce genre d'erreur.


Un exemple simple et générique (à adapter)

http://cjoint.com/?dsmnEygIU7

AV





Avatar
AV
étant donné que le champs n'est pas un menu déroulant mais un champ libre


C'est un tort car ça évite la gestion des erreurs....

....il m'affiche un message d'erreur comment puis-je
éviter ce genre d'erreur.


Modifie les formules sur ce modèle :
=SI(ET(A2<>"";ESTNUM(EQUIV(A2;Codes;0)));INDEX(Noms;EQUIV(A2;Codes;0));"")

Si c'est la macro qui t'intéresse, précise le...
AV

Avatar
xavier
c'est bien pour la macro que je cherche la solution, j'ai essayé les conseils
donnés dans un autre post concernant le on error resume next mais j'ai tjs le
problème que le message apparaît lorsque je ferme le userform suivant.

merci


étant donné que le champs n'est pas un menu déroulant mais un champ libre


C'est un tort car ça évite la gestion des erreurs....

....il m'affiche un message d'erreur comment puis-je
éviter ce genre d'erreur.


Modifie les formules sur ce modèle :
=SI(ET(A2<>"";ESTNUM(EQUIV(A2;Codes;0)));INDEX(Noms;EQUIV(A2;Codes;0));"")

Si c'est la macro qui t'intéresse, précise le...
AV






Avatar
xavier
Ok j'ai trouvé c'étai tout bete j'avais pas placé le error au bon endroit


merci quand même


étant donné que le champs n'est pas un menu déroulant mais un champ libre


C'est un tort car ça évite la gestion des erreurs....

....il m'affiche un message d'erreur comment puis-je
éviter ce genre d'erreur.


Modifie les formules sur ce modèle :
=SI(ET(A2<>"";ESTNUM(EQUIV(A2;Codes;0)));INDEX(Noms;EQUIV(A2;Codes;0));"")

Si c'est la macro qui t'intéresse, précise le...
AV