Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1508 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Renvoi du numéro de ligne d'une cellule en VBA

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Renvoi du numéro de ligne d'une cellule en VBA

n°2043748
aidevba
Posté le 22-12-2010 à 15:26:08  profilanswer
 

Bonjour,
 
Je souhaite savoir comment faire en VBA pour automatiser le renvoi du numéro de ligne d'une cellule. Je m'explique j'ai un tableau avec des noms :
 
       A
       
 1  Michel  |
 2  Paul     |
 3  Truk     |
 4  Bidule   |
 
En VBA je fais un filtre qui cherche un nom précis dans la colonne A et je cherche à savoir quel est le numéro de ligne qui correspond à ma recherche avec mon filtre.
Pour être clair, l'utilisateur clique dans une combobox un nom et ceci est mis dans une variable nommée var et je veux savoir sur quelle ligne il se trouve sans passer par une boucle qui est beaucoup trop longue.
Plutôt en utilisant la méthode Find(var).row mais ça ne marche pas.
 
Si quelqu'un peut m'aider.
 
Merci d'avance.

mood
Publicité
Posté le 22-12-2010 à 15:26:08  profilanswer
 

n°2043917
aidevba
Posté le 23-12-2010 à 07:57:22  profilanswer
 

Personne ne peut m'aider?

n°2043923
GuiGui013
Posté le 23-12-2010 à 08:59:52  profilanswer
 

Je pense que le plus simple est de te créer un second ComboBox dans lequel tu renseigneras les numéros de lignes correspondants dans Excel pour chaque entrée de ton premier ComboBox.

n°2044275
dje69r
Arme de distraction massive
Posté le 24-12-2010 à 14:35:11  profilanswer
 

GuiGui013 a écrit :

Je pense que le plus simple est de te créer un second ComboBox dans lequel tu renseigneras les numéros de lignes correspondants dans Excel pour chaque entrée de ton premier ComboBox.


Euh... Tu es sérieux quand tu dis ca ?????
Et s'il passe finalement "Mickael" en ligne 3, il fait quoi ??
Quand on ne sait pas, le mieux c'est quand meme d'eviter de raconter des aneries...
Il va se faire une gestion de clé primaire numérique incrémentée pour récuperer les numéros de ligne...  
 
 
Pour aidevba :
 
Pas besoin de vba pour faire ce genre de chose.
Je pars du principe que ton tableau est en colonne A, et que les valeurs commencent à la ligne 2 (la ligne 1 etant le titre de la colonne)
En C2 : tu saisis ton critere de recherche, Ex : Mickael
En D2 : Tu saisis : =SOMMEPROD((A2:A20=C2)*LIGNE(A2:A20)) et tu valides avec Ctrl+Shift+Entree
Tu te retrouves donc en D2 avec : {=SOMMEPROD((A2:A20=C2)*LIGNE(A2:A20))}  
 
EnJoY

Message cité 2 fois
Message édité par dje69r le 24-12-2010 à 14:38:51

---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !
n°2045289
GuiGui013
Posté le 31-12-2010 à 01:50:04  profilanswer
 

dje69r a écrit :


Euh... Tu es sérieux quand tu dis ca ?????
Et s'il passe finalement "Mickael" en ligne 3, il fait quoi ??
Quand on ne sait pas, le mieux c'est quand meme d'eviter de raconter des aneries...
Il va se faire une gestion de clé primaire numérique incrémentée pour récuperer les numéros de ligne...  
 
 
Pour aidevba :
 
Pas besoin de vba pour faire ce genre de chose.
Je pars du principe que ton tableau est en colonne A, et que les valeurs commencent à la ligne 2 (la ligne 1 etant le titre de la colonne)
En C2 : tu saisis ton critere de recherche, Ex : Mickael
En D2 : Tu saisis : =SOMMEPROD((A2:A20=C2)*LIGNE(A2:A20)) et tu valides avec Ctrl+Shift+Entree
Tu te retrouves donc en D2 avec : {=SOMMEPROD((A2:A20=C2)*LIGNE(A2:A20))}  
 
EnJoY


 
Tu me fais bien rigoler avec tes formules à deux balles ...

n°2045386
Xxxaaavvv
Posté le 31-12-2010 à 14:47:06  profilanswer
 

GuiGui013 a écrit :


 
Tu me fais bien rigoler avec tes formules à deux balles ...


Il a peut être tord, mais on argumente stp.
Ta phrase ne devrait pas avoir de place ici, ça n'apporte rien au posteur initial.
 
 
Personnellement je serais passé par la formule
=EQUIV("XAVIER";D16:D30)
ça donne le numéro de ligne du tableau indiqué D16:D30
en gros si Xavier est en D18, ça rend 3  (car c'est la 3ème ligne de D16:D30)


Message édité par Xxxaaavvv le 31-12-2010 à 14:52:03
n°2045437
dje69r
Arme de distraction massive
Posté le 31-12-2010 à 19:19:21  profilanswer
 

Je ne vois pas où j'ai tort. Ces formules a "deux balles" comme le souligne guigui013, expert en recuperation de numero de ligne par le biais d'une combo, fonctionnent sans souci.
Encore faut il les comprendre.


---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !
n°2045855
Xxxaaavvv
Posté le 03-01-2011 à 14:29:23  profilanswer
 

J'ai dis "peut être"
mais faut argumenter ;)

n°2046006
Jubijub
Parce que je le VD bien
Posté le 03-01-2011 à 23:48:12  profilanswer
 

Tu chercherais pas a réinventer le vlookup ?

 

Tu crées une colonne avec les numéros de ligne, une autre avec les prénoms, et le vlookup sur le prénom te permettras de renvoyer le numéro de ligne stocke dans la colonne d'a coté)

 

Rustique, mais fonctionnel :)


---------------
Jubi Photos : Flickr - 500px
n°2046008
Jubijub
Parce que je le VD bien
Posté le 03-01-2011 à 23:51:04  profilanswer
 

dje69r a écrit :


Euh... Tu es sérieux quand tu dis ca ?????
Et s'il passe finalement "Mickael" en ligne 3, il fait quoi ??
Quand on ne sait pas, le mieux c'est quand meme d'eviter de raconter des aneries...
Il va se faire une gestion de clé primaire numérique incrémentée pour récuperer les numéros de ligne...

 


Pour aidevba :

 

Pas besoin de vba pour faire ce genre de chose.
Je pars du principe que ton tableau est en colonne A, et que les valeurs commencent à la ligne 2 (la ligne 1 etant le titre de la colonne)
En C2 : tu saisis ton critere de recherche, Ex : Mickael
En D2 : Tu saisis : =SOMMEPROD((A2:A20=C2)*LIGNE(A2:A20)) et tu valides avec Ctrl+Shift+Entree
Tu te retrouves donc en D2 avec : {=SOMMEPROD((A2:A20=C2)*LIGNE(A2:A20))}

 

EnJoY


Les matrices c'est puissant, mais j'évite : très peu de gens savent s'en servir, et on peut te casser la formule facilement

 

Mais jolie utilisation ;€


---------------
Jubi Photos : Flickr - 500px
mood
Publicité
Posté le 03-01-2011 à 23:51:04  profilanswer
 

n°2046025
dje69r
Arme de distraction massive
Posté le 04-01-2011 à 09:33:32  profilanswer
 

L'avantage des formules matricielles c'est que ca marche tout le temps.
 
L'exemple de Xxxaaavvv est fonctionnel. Certes. Mais le jour ou pour X raisons, le tableau ne commence plus en ligne 16, il faut changer non seulement la reference de cellule du début, mais en plus modifier la variable pour calculer le numéro de ligne.

Citation :

=EQUIV("XAVIER";D16:D30)  
ça donne le numéro de ligne du tableau indiqué D16:D30  
en gros si Xavier est en D18, ça rend 3  (car c'est la 3ème ligne de D16:D30)


Donc si Xavier est en 18, il faut ajouter 15 a la valeur renvoyee. Mais si le tableau commence en ligne 10, il faut changer 15 en 9. Je trouve plus pratique de ne changer que "A16" en "A10" et ce meme s'il faut valider par Ctrl+Shift+Entrée.
 
Quant au VLookUp, oui c'est une solution, mais ca oblige a gerer les numéros de lignes. Alors qu'Excel fait ca tres bien. Ca veut dire faire attention quand tu travailles sur ton tableau lors de copier/couper/coller etc.
 
Et comme souvent, je pars du principe (peut etre a tort) que l'histoire du prénom n'est qu'un exemple simplifié d'un tableau plus complexe. Et comme on a pas la tronche du tableau, moins on ajoute d'info a ce dit tableau mieux c'est.
 
Après toutes les manieres proposées ici fonctionnent (sans parler de celle de GuiGui013 :sarcastic: ) il n'a qu'a choisir la plus simple en ayant tous les tenants et les aboutissants.
 
:jap:


Message édité par dje69r le 04-01-2011 à 09:34:17

---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !
n°2046096
Xxxaaavvv
Posté le 04-01-2011 à 13:11:44  profilanswer
 

Oui enfin bon, le coup du tableau qui évolue c'est un autre problème limite HS par rapport a la question de base...
 
Et la solution simple contre les tableaux qui bougent, c'est les plages nommées, la formule devient :
=EQUIV("XAVIER";MON_TABLEAU)
ou MON_TABLEAU est la plage "D16:D30" ou ce que l'on veux par la suite...
 
Et puisqu'il faut ajouter un chiffre pour avoir le numéro de ligne absolu (et non par pas rapport au tableau)
Quid de :
= EQUIV("XAVIER";MON_TABLEAU) + LIGNE(MON_TABLEAU) - 1


Message édité par Xxxaaavvv le 04-01-2011 à 13:16:57
n°2046135
dje69r
Arme de distraction massive
Posté le 04-01-2011 à 15:01:54  profilanswer
 

Euh un tableau sous Excel qui evolue c'est HS...?
J'ai pas beaucoup de tableau statique sous Excel...
 
Oui donc au final on se retrouve avec une formule au résultat équivalent, tout aussi complexe avec deux fonctions, et plus longue a saisir.
 
Bref, je vais arreter la je pense.
 
Topic clos pour ma part :jap:
 
Putin ces lyonnais de 1978 m'exasperent...  :o

Message cité 1 fois
Message édité par dje69r le 04-01-2011 à 15:09:20

---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !
n°2046151
Xxxaaavvv
Posté le 04-01-2011 à 15:16:16  profilanswer
 

dje69r a écrit :

Euh un tableau sous Excel qui evolue c'est HS...?
J'ai pas beaucoup de tableau statique sous Excel...


Ce n'est pas la question du premier post :o
 

dje69r a écrit :


Oui donc au final on se retrouve avec une formule au résultat équivalent, tout aussi complexe avec deux fonctions, et plus longue a saisir.


J'ai été cordial jusqu'à maintenant, mais sur la "complexité" comparée de nos formules, tu me prend un tout petit peu pour du jambon la :D
Je n'ai fait que proposer ma solution sans la comparer aux autres, et la défend face aux critiques :o
 

dje69r a écrit :


Bref, je vais arreter la je pense.
 
Topic clos pour ma part :jap:
 
Putin ces lyonnais de 1978 m'exasperent...  :o


Idem.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Renvoi du numéro de ligne d'une cellule en VBA

 

Sujets relatifs
Colorisation d'une cellule suivant la valeurModifier des capsules de texte sur une image en ligne
VBA Excel : Question simple, Textbox stocke des nombres en texteLes puces vont à la ligne
problème macro VBARenommer automatiquement nom cellule Excel
[Vba pour Excel 2003] Ouverture auto ComboBox et reco touche Entrée.[EXCEL] Numéroter ligne Uniquement remplies
[VBA/EXCEL07] Copier une chaîne dans plusieurs cellulesAide VBA : Copier des cellules non vides ...
Plus de sujets relatifs à : Renvoi du numéro de ligne d'une cellule en VBA


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR