|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
|
Expert Confirmé Sénior
![]() Jérôme FONTAINEContrôleur de Gestion Inscription : juin 2006 Messages : 3 894 ![]() |
Bonjour à Tous,
Ce matin, je ne comprend pas le fonctionnement d'une de mes fonctions. Celle ci utilise Find pour trouver des noms dans un onglet et retourner le matricule Quand on trouve le nom, on test si la période est celle souhaité sinon on passe au suivant. Les problèmes sont : - Il ne trouve pas le suivant (alors qu'il existe) => rg =nothing au 2eme tour - dans le loop While il sort de la fonction et retourne #VALEUR Code :
![]() EDIT : la fonction fonctionne pour le premier nom trouvé
__________________
Jérôme Citation:
nous encouragera.Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
|
|||
|
|
00
|
|
|
#2 |
|
Membre actif
![]() Inscription : novembre 2008 Messages : 188 ![]() |
Et en étant plus explicite, ça donne quoi?
Sinon tu peux essayer de relancer la méthode 'find tout court' en spécifiant la direction de la recherche: |
|
|
00
|
|
|
#3 | ||
|
Expert Confirmé
![]() |
bonjour jfontaine
pour bien comprendre je vais commenter les lignes de ton code dis moi si je me trompe? Code :
__________________
mes fichiers dans les contributions: mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA mon nouveau mouse in out pour les boutons dans un userform mon addin pour prendre un cliché de selection de cellules si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres et n'oublie pas de voter ![]()
|
||
|
|
00
|
|
|
#4 | |
|
Expert Confirmé Sénior
![]() Jérôme FONTAINEContrôleur de Gestion Inscription : juin 2006 Messages : 3 894 ![]() |
merci pour vos réponses,
Sclarckone : toujours le meme problème patricktoulon : non ce n'est pas la le problème, a noter que j'ai testé en alimentant juste un compteur pour qu'il me retourne le nombre de nom trouvé. et meme problème, il ne passe pas au nom suivant La ligne ci dessous retourne un rg = nothing Et quand le code passe sur celle ci, au lieu de passer à la suite, il sort de la fonction Code :
Loop While Not Rg Is Nothing And Rg.Address <> Ad
__________________
Jérôme Citation:
nous encouragera.Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
|
|
|
|
00
|
|
|
#5 | |||||
|
Expert Confirmé Sénior
![]() Jérôme FONTAINEContrôleur de Gestion Inscription : juin 2006 Messages : 3 894 ![]() |
mon interrogation se poursuit,
La procédure suivante (qui compte le nombre de fois que l'on trouve le nom) me retourne bien 3 Code :
Pas de boucle et sortie sur le loop Code :
![]() ![]() EDIT : je remarque que ce problème se passe quand j'utilise cette fonction dans une cellule
__________________
Jérôme Citation:
nous encouragera.Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
|
|||||
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() |
rebonjour jfontaine
quand tu appelle ta fonction comme ceci =Matricule($A4;B$1) il faudrais que dans l'énoncer de ta fonction il y ai ces variables dans ton dernier post elles n'y sont plus regarde bien après pourquoi a4 et b1 si la fonction find recherche seulement dans la colone B au plaisir
__________________
mes fichiers dans les contributions: mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA mon nouveau mouse in out pour les boutons dans un userform mon addin pour prendre un cliché de selection de cellules si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres et n'oublie pas de voter ![]()
|
|
|
00
|
|
|
#7 | ||
|
Membre Expert
![]() Hervé SilveInscription : août 2010 Messages : 773 ![]() |
Bonjour,
Je pense que Find pose problème quand il est employé dans une fonction. Le mieux dans ton cas est d'utiliser la fonction COUNTIF (mais là, je me demande à quoi sert la tienne ?) ou alors, de boucler sur les cellules de la plage : Code :
|
||
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() |
rebonjour jfontaine
je persiste a dire que le exit function y est pour beaucoup avec effectivement il te donne le premier et donc pour continuer la recherche il faudrais relancer le find pour cela il te faudrai une variable de type range en haut de module et un bouton cette variable prendrais le range de la cellule trouvé et dans le bouton utiliser cette variable +1 pour définir le début de la plage a examiner et appeler la function avec la nouvelle plage a partir de la la function find suffirait mais avant tout il faudrait que je sache comment se présente "periode " c'est une date, un code ,un mot ,un chiffre? au plaisir
__________________
mes fichiers dans les contributions: mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA mon nouveau mouse in out pour les boutons dans un userform mon addin pour prendre un cliché de selection de cellules si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres et n'oublie pas de voter ![]()
|
|
|
00
|
|
|
#9 | ||
|
Expert Confirmé Sénior
![]() Jérôme FONTAINEContrôleur de Gestion Inscription : juin 2006 Messages : 3 894 ![]() |
Citation:
Jusqu’à preuve du contraire je vais considérer qu'une fonction appelée en formule ne fonctionne pas correctement si utilisation d'un Find avec boucle While. dans mon cas, j'ai contourné le problème en alimentant mon tableau par une procédure qui appel ma fonction (légèrement modifiée). Je perd le coté dynamique, mais pas sur que ce soit utile sur ce projet.
__________________
Jérôme Citation:
nous encouragera.Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com