[Excel] equiv/match : recherche d'une variabl

Résolu
Blourte -  
 Blourte -
Bonjour,

J'ai un petit soucis ( de syntaxe je pense ) dans l'une de mes macros.

J'aimerais cherche dans une colonne ( la colonne Q ) la variable que j'ai nommée : cle . J'aimerais obtenir le numéro de la ligne qd la valeur est trouvée .

J'ai donc pour code :

Range("R269").Select
 ActiveCell.FormulaR1C1 = "=match(cle,Q:Q,0)"


Le problème c'est qu'il me note dans la case correspondante : #NOM?

Je pense que c'est juste un problème de syntaxe dans ma fonction "match", mais je ne trouve pas la solution..
Merci d'avance.
A voir également:

11 réponses

ben13.51 Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   7
 
Quand tu utilises la formule Match sous VBA tu doit spécifié une Range
Enleve également R1C1 après Formula ça devrait être mieux
Ce qui donne

ActiveCell.Formula = "=match(cle,Sheet(1).Range("Q1:Q65000"),0)"
0
Blourte
 
Salut,

Merci pour ton aide. Malheureusement il me met la ligne en rouge : Erreur de syntaxe. Et il pointe sur le "Q1" .
Tu saurais pourquoi ?
0
ben13.51 Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   7
 
alors essaye de passer par une variable:

Dim MyVar as integer

MyVar = Application.WorksheetFunction _
.Match(cle,WorkSheet(1).Range("Q1:Q65000"),0)
Range("R269")=MyVar
0
Blourte
 
Hey,

En fait à la base mon but était de passer par une variable, mais je voulais voir ce qu'il faisait donc j'ai mis le résultat dans une cellule.

Concernant ta proposition, il bloque sur le 2e "worksheet" ( dans la fct match ) en disant : " Sub ou Fonction non définie".
Du coup je ne sais pas trop quoi faire. En l'enlevant il n'y arrive pas non plus...
En tout cas, merci pour le temps que tu consacres à mon pb !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Blourte
 
Bonjour,

En gros mon coeur de problème est : ( si jamais qlq'1 est inspiré ).

- Je considère la colonne Q
- Je recherche dans cette colonne la valeur de ma variable que j'ai nommée "cle"
- Quand je tombe dessus : je veux en tirer le numéro de la ligne.

Merci d'avance pour votre aide !
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
bonjour,

XL<65536

Dim lig As Long
lig = Columns(17).Find(cle, Range("Q65536")).Row

Msgbox lig
0
Blourte
 
Bonjour Michel,

Merci pour ton aide.

Toutefois :

- Je ne comprend pas : XL<65536 . Qu'est ce que ca veut dire ?
- En executant la macro, il me dit : Erreur d'execution 91 : Variable objet ou variable de bloc With non définie.

Pour info, je définis "cle" comme ceci avant :

dim cle
cle = Val(352009) ' Pour tester la macro
sem = Val(Left(clé, 2)


Merci d'avance..
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Excuses moi mais je voulais dire XL<2007
(retour de vacances....)

je viens d'essayer, ca marche...
Sub chercher_cle()
Dim cle As Long, lig As Long

cle = 352009
lig = Columns(17).Find(cle, Range("Q65536")).Row
MsgBox lig

End Sub

ci joint la demo
https://www.cjoint.com/?itqn4ianaB

mais je ne vois pas trop l'intérêt de ta fonction VAL... (regarde l'aide...)

si tu utilises match il faut que "cle"soit déclaré en LONG et non comme INTEGERr comme proposé plus haut...
0
Blourte
 
C'est vraiment trop fou !

Ton exemple marche, ta macro marche. J'execute ta macro dans mon fichier, ca ne marche pas, et ca me sort toujours l'erreur 91.

... et j'ai bien vérifié :
- la valeur "cle" existe bien dans la colonne Q.
- J'ai fait "Afficher" toutes les lignes qui étaient masquées
- J'ai converti la colonne Q en format "Nombre".

... je ne sais plus quoi faire !
0
Blourte
 
Nouvelle avancé :

Je prends la colonne Q de mon fichier, que je colle dans le tiens. Ta macro ne fonctionne pas... et guess what ? toujours la même erreur.
0
Blourte
 
Bon j'ai trouvé !

Ma colonne Q était composée de Formules du type : Q3= R3&S3

Et du coup en copie/collant les valeurs, ma recherche marche.

Merci de m'avoir consacré du temps !!
0