Fonction qui retourne le numero d'un ligne ?? (excel) [RESOLU] - VB/VBA/VBS - Programmation
Marsh Posté le 08-09-2005 à 17:29:28
Salut wfs-tibal,
Si tu veux trouver le numero de la ligne de la première apparition du nom présent dans la case sélectionée en feuille 1 pour moi il n'y a pas d'autre choix que de faire un test de valeur sur ta 2ème feuille.
Un truc un peu dans ce style (impose un tri sur la table de la feuille 2 si tu veux la première occurence en selection et la suite en dessous):
Code :
|
Sinon ton problème me fait plutot penser à un filtre automatique, comme ça tu ne vois que les données de la personne sélectionnée (imposde une ligne de nom de colone avant les données - ne nécessite aucun tri des données):
Code :
|
Pour les 2 exemples, j'ai pris comme argument que le nom de la première collone se retrouvait adans la première colonne de la feuille 2.
@+
Marsh Posté le 09-09-2005 à 08:29:21
Merci WaTaShi de t'etre penché sur mon probleme, mais ce n'est pas tt a fais ça :
j'ai un tableau, ou la premiere ligne a des onglet(dans chaque colonne) pour choisir ce que l'on a besoin exemple:
1 nom numero adresse ... <<-- cette ligne comporte que des onglets
2 paul 135121 31 jhg jhg
3 mik 464466 54 rue pdh
4 truc 1547 36 quai dsfg
.
.
. Donc voila si ici tu choisi "mik" ou "truc" tes lignes sur ton tableau seront la 1 PUIS la 3 et la est tout mon probleme,
Il faut que j'arrive a savoir quel ligne renvoie tel ou tel nom...Pour ensuite donner ce numero de ligne a une boucle...
Car pour cet exemple si tu commence ta boucle a 1 ça fausse tout car la 2 ne sera pas "mik" mais "paul" !
En fait il faudrait que des que l'on selectionne un critere sur l'onglet de la premiere ligne,et que par la suite il selectionne la ligne du dessous
ET NON PAS LA LIGNE SUIVANTE.Apres je sors le numero de la ligne selectionné et ainsi je commence ma boucle avec cette valeur ...
Mais faire tt sa pour moi qui debute bah c'est plus que du chinois ,et pourtant croyez moi que je cherche bcp,mais
rien ne correspond a ça...
Si quelqu'un voit comment resoudre ce probleme d'une autre maniere je suis preneur
Voila jespere metre mieux expliqué qu'auparavant et merci a ceux qui ce pencheront sur mon soucit !
Marsh Posté le 09-09-2005 à 10:24:40
Oh la la ! Tes explications m'ont embroulé plus qu'autre chose, mais bon .... je suis sure que tu vas réussir à nous eclaircir ça un peu mieux
Ca c'est ta première feuille de ton classeur :
wfs-tibal a écrit : |
Quand ton utilisateur sélectionne "mik" tu veux que l'ordi te donne sur cette feuille le numéro de ligne ? ou sur une autre ?
Si c'est sur cette feuille alors ActiveCell.Row te renvois ici 3. (c'est ce chiffre dont tu a besoin pour ta boucle ?)
Pourquoi ton utilisateur aurait-il besoin de sélectionner un critère en première ligne ? Est-ce pour permettre la sélection d'un onglet pour une recherche après ?
Ta feuille 1 c'est bon je vois à quoi elle correspond mais je comprends pas les chiffres que tu attends. Essaye de clarifier un peu plus ce que tu recherches.
@+
Marsh Posté le 09-09-2005 à 10:59:42
LoL dsl pour mes explication qui embrouille je vais essayer d'etre clair cette fois ...
Bon alors j'ai une feuille ou sur la premiere ligne il y des titres...
exemple de titre : le nom, le numero, l'adresse...
Donc pour que ce soit plus simple j'ai fait : DONNEE-->>Filtre-->>FiltreAutomatique
Ce qui me donne maintenant la possibilité de clické,par exemple sur "nom" et de choisir "michel"(c'est un exemple,je n'est rien contre les michel) ce qui me donnera tt les renseignements sur tt les personnes qui s'appelle "michel" dans cette liste...
Donc lorsque je choisi "michel"sur ma feuille ça m'affiche tjrs ma ligne de titre, et en dessous dans la colonne "nom" que des "michel" et
les renseignement qui leur corrsepondent,les autres personnes ne sont pas affichés(normal).
Mais voila, la est mon probleme, mettons que dans ma feuille AU DEPART(donc feuille non trié) "michel" etait a la ligne 52 et 53 par exemple et bien une fois le trie effectué sur les "michel", ma feuille sera comme ceci :
col1 col2 col3
ligne 1 nom numero adresse
ligne 52 michel 153131 45 rue qsdf
ligne 53 michel 15635 5 avn fdsf
tu suis toujours ?
Bon et bien maintenant j'utilise une macro qui a besoin de savoir, que lorsque l'on choisie "michel" (par exemple), le numero de la premiere ligne ou il y a "michel" .(ici 52)
Pour que ce soit moin compliqué, lorsque l'on choisie un nom ("michel","paul",ou n'importe qui d'autre) les numeros de ligne ce suivrons tjrs,come dans ce cas ou "michel" est en ligne : 52 et 53 !!! et non pas 5 , 12 ....
Donc voila il faut que je trouve un moyen de savoir quel et le numero de la ligne que j'ai choisi de trier et non pas la ligne de trie qui est la n°1 !
Voila jespere avoir ete un peu plus clair ...
Et je te remercie enormement de prendre le temps de comprendre mes explication tordues WaTaShi
EDIT -->> l'utilisateur selectionne la case de trie et nom celle choisie ("michel" ),on ne peux pas fonctionné avec les case de selections...
Sauf si on fais une boucle qui compare dans la colonne trié,exemple "nom",tt les nom jusqua celui selectionné :
il faudrait comparer le choix de l'utilisateur(si une variable le renvoi,Compar je crois...) avec le text qui est dans la colonne selectionné et on test
tte les case de cette collonne en descendant...
mais je sai pas faire sa...
Code :
|
dans mon code je voudrais que "Criteria1" retourne le choix de l'utilisateur,sa marcherait alors non?
Marsh Posté le 09-09-2005 à 13:34:45
re,
J'ai un peu du mal avec ton code mais j'ai peut-être une autre piste pour ta recherche si j'ai bien compris la problématique...
1- Ton utilisateur fait manuellement le tri sur le colone 1
2- Tu veux récupérer la valeur de critère du tri (j'ai pas trouver comment récupérer la valeur de criteria1 sur le filtre automatique, mais tu peux la reprendre comme ça :
Code :
|
3- tu récupère la ligne de la première apparition soit à partir de la cellule que tu as en selection (deriere apparition) soit partir du début de ton tableur
Code :
|
ou
Code :
|
C'est ça ? ou pire ? lol
Marsh Posté le 09-09-2005 à 13:47:31
Merci !
Bon c'est ça mais non lol !
non en fait c'est tt a fait sa dans la theorie, mais en pratique non car quand l'utilisateur choisie son tri,
la colone du trie valide indique "nom" et non pas "michel" (par exemple) ...
Donc quand tu fait :
Code :
|
la valeur de Nom sera : "nom" !!! Et c'est sa qui me soul !!
Au lieu d'etre "michel"...Car c'est un onglet et pas un endroit ou tu tape ce que tu veux...
Bon sinon en me balladant un peu partout j'ai entendu parler de "combobox",dans certain exemple je me dis que sa pourrait marcher mais je sais pas du tout m'en servir ni comment les creer...
Donc en fait je sais pas si je continue de chercher dans cette voie ou si je m'oriente vers un "combobox" ...
La j'ai vraiment besoin d'aide parce que je suis vraiment bloqué ...
Merci encore WaTaShi !
Marsh Posté le 09-09-2005 à 14:28:01
Décidément c'est pas top ! lol
regarde j'ai enfin réussi à faire récipréere la donnée criteria1 du tri :
Code :
|
ensuite je comprends pas si ton utilisateur fait son tri sur "michel" ton tableau devrait être
ligne 1 Nom
Ligne 52 Michel
Ligne 53 Michel ...
Mais si t'arrive à utiliser le code ci dessus tu dois pourvoir récuperer le critère du filtre mais il faut que ce soit un filtre effectif
pour ce qui est des boîtes de dialogue tu peux demander à ton utilisateur de saisir le nom sur lequel il veut le filtre
Code :
|
avec l'une ou l'autre sollution tu récupère le critère et tu l'utilise pour rechercher ton numèro de ligne.
vois si-tu peux pas joindre un fichier exemple ce sera peut etre plus simple pour comprendre.
Marsh Posté le 09-09-2005 à 15:14:57
MERCI ! MERCI WaTaShi
Trop bien sa marche nikel !!!
pffuu c'etait bien dure en tout cas...J'aurais jamais pu trouver le code tout seul,surtout que je debute alors la...
Voila mon code (que la partie qui concerne la recherche de ligne a partir du critere),le reste est bien trop long...
Code :
|
Encore merci !!!!!
Marsh Posté le 09-09-2005 à 16:29:25
De rien !
Tu devrai marquer résolu dans le titre du sujet Ca pourra en aider d'autres
bon courage pour le reste
Marsh Posté le 08-09-2005 à 15:12:53
Salut,
Je cherche a savoir un numero de ligne, y a t'il une commande qui retourne le numero de ligne selectionné...
Je vous explique : j'ai une colonne avec des noms de personne dedant,et un onglet en haut qui me permet de choisir tel ou tel personne.
Ensuite je dois lancer une macro qui marche avec une boucle qui compte les lignes,et comme j'ai choisie une personne,je n'ai plus qu'elle a l'ecran.
J'aimerais pouvoir connaitre le numero de la ligne ou est le nom de cette personne,la premiere,pour pouvoir donner cette valeur a ma variable de boucle...
J'espere que vous m'avez compris et que quelqu'un pourra m'aider,car je suis debutant et je ne connais pas tte les variable qui existe sous VB,meme en cherchant dans l'aide ...
EDIT -->> Je sais que : ActiveCell.Row retourne le numero de la ligne selectionné,mais comme l'utilisateur choisie dans la 1ere ligne d'onglet la personne sur qui il veut des renseignement,cela nous donne 1ere ligne : 1 mais la deuxieme ne sera pas 2 mais 155 par exemple...
Donc en fait ce qu'il me faudrai c'est que quand l'utilisateur choisi une personne dans l'onglet soit, que ça me selectionne la premiere ligne de cette personne soit, que grace au nom de la personne je puisse retrouver la ligne... pffu c'est la galere non?
Message édité par wfs-tibal le 09-09-2005 à 16:31:38