IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Recherche V sous VBA [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Actuaire
    Inscrit en
    Juillet 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Actuaire
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 49
    Par défaut Recherche V sous VBA
    Bonjour à tous
    j'essaie de creer une petite fonction qui va effectuer une recherche V sur un tableau spécifique
    voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    function recherche_cat_soc(col_cible As Integer, type_c1 As String, wbk_dcs As Workbook, wbk_input As Workbook, row_title As Integer)
     
        Dim i As Integer, j As Integer
        Dim tab_code As Range
     
        If type_c1 = "vie" Then
            Set tab_code = wbk_dcs.sheets(3).Range("A4:B10")
     
         ElseIf type_c1 = "mixte" Then
            Set tab_code = wbk_dcs.sheets(3).Range("A17:B23")
         End If
     
     
         j = 1
         While Cells(row_title, j) <> "Catégorie / Mont" ' récupération de la colonne contenant catégorie / Mont
                j = j + 1
         Wend
     
         i = 3
         While wbk_input.ActiveSheet.Cells(i, j) <> ""
          wbk_input.ActiveSheet.Cells(i, col_cible).Value = WorksheetFunction.VLookup(wbk_input.ActiveSheet.Cells(i, j).Value, tab_code, 2, False)
     
            i = i + 1
          Wend
     
     
     
    End Function
    En gros col_cible va indiquer dans quelle colonne va etre insérée la valeur recherchée, type_c1 va indiquer dans quel tableau rechercher, wbk dcs et wbk_input permettent de désigner les classeurs utilisés (les tables sur lesquelles pointent type_ci sont dans wbk_dcs, les données recherchées dans wbk_input)

    En gros j'ai le message d'erreur suivant:
    "Erreur d'execution 1004, impossible de lire la propriété Vlookup de la propriété Worksheetfunction"

    Comment faire pour débuger cela?
    Merci d'avance
    guillaume

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonjour,

    C'est une erreur d'exécution, donc le code en lui même n'est pas faux.
    Mais la valeur d'un des paramètres passé à VLookup doit être à l'origine du problème.

    Lorsque le problème se produit, clique sur <Debugger> et évalue la valeur des variables passé à VLookup.
    Regarde notamment les valeurs de wbk_input.ActiveSheet.Cells(i, j).Value et tab_code.

    Est-ce que la valeur passée VLookup fait bien parti du tableau de valeur de tab_code ?

    A+

    P.S. : Tu peux aussi utilisé des sorties dans la fenêtre d'exécution avec Debug.Print <variable à évaluer>.

  3. #3
    Membre confirmé
    Homme Profil pro
    Actuaire
    Inscrit en
    Juillet 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Actuaire
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 49
    Par défaut
    En effet ca marche, j'avais mal rentré un argument en appelant la fonction!
    merci pour ton aide!

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Re.

    Content pour toi que tu es trouvé.
    Pour détecter plus facilement des erreurs d'exécution, je te conseil de ne pas laisser un test If / ElseIfsur une variable reçue en paramètre sans gérer le cas par défaut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If type_c1 = "vie" Then
        Set tab_code = wbk_dcs.Sheets(3).Range("A4:B10")
    ElseIf type_c1 = "mixte" Then
       Set tab_code = wbk_dcs.Sheets(3).Range("A17:B23")
    Else
        MsgBox "Argument invalide [type_c1] = " & type_c1, , "Function recherche_cat_soc()"
    End If
    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Copie de valeur sous VBA avec un bouton recherche
    Par vefa12 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/08/2013, 16h01
  2. Rechercher une valeur sous VBA
    Par vefa12 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 19/08/2013, 13h19
  3. Recherche chaine de caractères sous VBA
    Par nyto35 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 15/04/2013, 17h11
  4. [XL-2003] Problème fonction recherche / remplacer sous VBA
    Par DVano dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 01/04/2010, 12h13
  5. Réponses: 7
    Dernier message: 18/05/2009, 17h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo