Arreter une fonction quand la cellule est vide

E

Elve

Guest
Bonjour,

J'utilse la fonction "RechercheV" pour une colonne comprenant jusqu'à 20000 caractère.
Je procede de la maniere suivant, j'utilse la fonction "enregistrer macro" puis je selection une cellule afin de rentrer la formule de la recherche verticale puis afin del'etendre sur toute la colonne je copie en cliquant sur la colonne.
Mon problème est que du coup la recherche verticale s'étend jusqu'à la 65535ieme case. J'aimerais trouver un moyen d'arreter la recherche verticale quand la case est vide.

Merci

Elve

Ps: le meme probleme se pose avec la fonction=ANNEE(CASE), car il comprend une case vide comme nulle donc d'année 1900.
 
S

stef

Guest
slt Elve

ta colonne : elle a une nombre de donnée fixe ou qui peut evoluer dans le temps. je veux dire par là: aujourd'hui tu execute ta macro sur 20000 lignes et demain elle peut s'executer sur 20100 lignes ?? ou elle sera toujours sur 20000 ligne?

si c'est fixe: lors de l'enregistrement de ta macro au lieu de selectionner la colonne entiere tu te positionne sur la 1ere case en haut de ta liste et tu fais "Ctrl + fleche du bas" (cela suppose qu'il n'y a pas de blanc dans ta liste sinon ca s'arrete sur le 1er blanc rencontré)

si c'est variable: a ma connaissance pas d'autre solution que de passer par du code VBA... mais j'connais pas toutes les astuces ;-)
si tu ne connais pas le VBA (visual basic) je peux t'expliquer pas à pas pour arriver à ce que tu veux (et avec mon niveau de 'bidouilleur' comme je dis !! ;-) )

stef
 
E

Elve

Guest
Merci pour ta réponse.
Mon nombre de donnée est variable.
En code VBA, je ne m'y connais pas du tout aussi ton aide serai la bienvenue.
En fait j'ai déja pensé à un marche à suivre, mais je ne serais pas l'appliquer à un code sous VBA.
Je rentre la formule dans une cellule(colonne B) , puis je colle la formule sur la cellule suivante et ainsi de suite jusqu'à ce que une cellule de la colonne A soit vide.
Voila pour la théorie, mais pour le code je ne sais pas, j'essaye de me debrouiller avec l'aide mais ce n'est pas évident.


à +
elve
 
S

stef

Guest
ouuuups ! j'ai honte.....
apres une relecture plus attentive de ton post je crois l'avoir mal compris (j'en suis même sure :-( )

Dans un 1er temps je croyais que c'etait la zone de recherche de la fonction recherchev qui etait de dimension variable...mais non... c'est le nombre de ligne sur lequelles tu veux copier la fonction qui est variable ... c'est bien ca?

Si c'est ca... une question : ta macro elle fait uniquement ce 'copier coller' ou elle fais autre chose (un autre copier coller , une mise en forme...)??

si c'est sa seule fonction, il y a un truc bien plus simple qu'une macro.
tu clic sur ta case contenant la fonction puis tu double clic sur le petit carre noir en bas à droite de cette case.... et hop copié jusqu'en bas d'un seul coup.

si elle fait autre chose c'est raté --->VBA
met ton fichier en piece jointe cela sera plus facile pour une reponse.

stef
 
S

simon

Guest
sinon pour repondre a la question du sujet initial sinon:
Par VBA : ce code est donc à inclure dans une macro (exemple ci dessous)
Pour trouver la dernière cellule remplie de la colonne C :
1° possiblité :
LaDerniere = range("C1"). end(xldown)
pb : si il n'y a rien en C1, excel plante. Si il y a des cellules vides dans la colonne, excel
s'arrêtera
sur la cellule au dessus du premier vide.
on préferera donc et de loin la seconde solution qui évite ces deux éceuils:
2° possibilité :
La Derniere= range("C65536").End(XlUp)
Il y a 65536 lignes dans excel donc la C65536 est la dernière. Excel part de cette cellule
et remonte la colonne jusqu'à ce qu'il trouve une cellule pleine.
C excellabo

mais je doute que cela te soit utile sans d autres connaissance ;)
 
E

Elve

Guest
Bonjour,

Merci à tous pour vos réponses, mais je croie que je n'est pas été clair dans requete.
En fait ma recherche V utilise une colonne (objet recherché) de nombres de case variables qui va rechercher dans une colonne de donnée également de nombres de cases variables.
En ce qui concerne le recherche verticale je selectionne toute la colonne à rechercher en cliquant sur la colonne(noircissement de la colonne) et je fais de même pour la colonne dans laquelle j'effectue ma recherche.
Puis je clique sur une case et je tape ma formule de la recherche V et aprés pour appliquer la formule à toute la colonne j'effectue un copier coller sur toute la colonne.
Le probleme est que la requete prend un temps monstrueux à s'effectuer puisqu'elle fait la recherche sur les 65535 cases (nombres de cases maxi d'une colonne) car la fonction rechercheV comprend une case vide comme égale à 0.
Ma demande est donc ne connaissant pas le nombre de case sur lesquelles j'effectue ma rechercheV comment faire pour que cette fonction ne s'effectue que sur des cases non-vides.
Je pense qu'il faut arreter le copier coller lorsque une case est vide.


Je vous joint un fichier.
premiere page
La premier colonne sont les données recherché
La troisieme celle où se situe la fonction rechercheV
deuxieme page
La premiere colonne sont les données où s'effectue la recherche
la troisième , une valeur que doit retourner la recherche si il trouve une équivalence entre les deux colonnes.




Voila, je vous remercie tous, en espérant que vous pourrez m'aider.
Elve
 

Discussions similaires