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

Résolu
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.
Configuration: Windows XP
Firefox 3.0.13

11 réponses

  1. 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
    1. 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
      1. 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
        1. 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
          1. 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
            1. Contributeur
              bonjour,

              XL<65536

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

              Msgbox lig
              0
              1. 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
                1. Contributeur
                  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
                  1. 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
                    1. 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
                      1. 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