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 :

Excel 2003 VBA- RECHERCHEV


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Par défaut Excel 2003 VBA- RECHERCHEV
    Bonjour,

    Je souhaite obtenir dans le vecteur "par", le résultat d'un "RECHERCHEV" sur une plage de cellules ("C4:F43") de la feuille "PARAMETRES".

    Dans les valeurs à chercher, j'ai deux entiers et une chaîne de caractères. J'écris le code suivant :

    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
     
     
    Sub tt()
     
    Worksheets("Parametres").Select
     
    Dim par(3)
     
    For j = 0 To 2
     
    par(j) = WorksheetFunction.VLookup("DNPNP0", Range("C4:F43"), " & j + 2 & ", 0)
     
    Next j
     
     
    MsgBox par
     
     
    End Sub
    J'obtiens une erreur d'execution 1004 "Impossible de lire la propriété VLookup de la classe Worksheet function".

    J'ai cherché longtemps mais sans trouver de solutions.

    Quelqu'un pourrait-il m'aider à résoudre le problème ou me proposer une solution alternative qui résolvrait mon problème ?

    Merci d'avance pour vos réponses.

  2. #2
    Membre averti
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 18
    Par défaut
    Bonjour,

    Si j'ai bien compris tes deux entiers et ta chaîne de caractères sont dans 3 colonnes différentes ? d'où la tentative de décalage "J+2" ?

    Je te suggère déjà d'essayer cette syntaxe, car là tu donnes comme paramètre " & j + 2 & " en chaine de caractère au lieu de la valeur de j+2. (il me semble que ta syntaxe est copiée sur une insertion de formule dans une cellule)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For j = 0 To 2
     
    par(j) = Application.WorksheetFunction.VLookup("DNPNP0", Activesheet.Range("C4:F43"), j + 2, 0)
     
    Next j
    Je ne sais pas si c'est la source de ton erreur 1004, mais ça devrait aider à avancer.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Par défaut
    Tout d'abord merci pour cette prompte réaction !!

    Non en fait les éléments à trouver se trouvent respectivement en colonne 2,3 et 4 de ma matrice située en plage C4:F23 (d'où la boucle)

    Cela dit en appliquant ta correction, j'ai maintenant une erreur d'execution 13 : Incompatibilité de type dans ma mxgbox

  4. #4
    Membre averti
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 18
    Par défaut
    ReBonjour,

    ça devrait aller. tu ne peux pas faire un msgbox d'un tableau directement comme ça. Il faut que tu construise la ligne que tu veux afficher dans un String.

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    strAffich = "Données : "
    For i = 0 to 2
         strAffich = strAffich & par(i) & ", "
    Next i
     
    Msgbox strAffich
    Tu devrais pouvoir vérifier si les données récupérées par la boucle sont les bonnes.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Par défaut
    ca marche effectivement.

    Juste une question pour ma connaissance personnelle, pourquoi un le code suivant ne marche pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    MsgBox par(0) & " " & par(1) & " " & par(2)
    PS : je met une icône résolue !!

    Merci et bonne soirée !!

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 10
    Par défaut
    Excuses moi de revenir vers toi

    Maintenant je souhaite généraliser cette procédure à un ensemble de données à chercher. Donc faire une boucle qui remplace chaque fois l'élément à chercher (précedemment DNPNP0).

    J'ai donc trois choses en idée :

    1) Créer un vecteur qui recense les données à chercher (telle que DNPNP0)
    2) Parcourir ce vecteur et refaire le calcul précédent pour chaque élément
    3) Alimenter une matrice avec chacun des vecteurs (à trois éléments) crées
    4) Editer ladite matrice.

    Mon problème c'est que je n'ai aucune idée de comment déclarer et créer des matrices et surtout COMMENT RESTITUER LE RESULTAT d'une fonction

    Merci encore pour votre aide

  7. #7
    Membre averti
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 18
    Par défaut
    Alors là comme ça, de visu, J'aurais cru que le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox par(0) & " " & par(1) & " " & par(2)
    aurait marché...
    Mais si ce n'est pas le cas, cela doit être un problème de type, qu'on peut résoudre en "castant" les données dans le bon type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox CStr(par(0)) & " " & CStr(par(1)) & " " & CStr(par(2))
    Sinon, je donnais la solution de la boucle pour plus d'évolutivité.

    Content d'avoir pu aider.

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

Discussions similaires

  1. DLL COM entre VS2010 et Excel 2003 VBA
    Par talrashha dans le forum Développement Windows
    Réponses: 2
    Dernier message: 29/08/2012, 22h27
  2. Excel 2003 VBA
    Par uzinagaz dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/09/2011, 15h50
  3. VBA-protection classeur et feuille sous Excel 2003 et 97
    Par derf3183 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 28/07/2006, 14h04
  4. [VBA-E]Excel 2002 / Excel 2003: influence sur VB?
    Par julyBL dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/06/2006, 19h17
  5. [VBA-E]Projet VB perdu dans un fichier Excel 2003
    Par cotmar dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 23/03/2006, 17h39

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