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 :

Faire une recherche quelconque


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Par défaut Faire une recherche quelconque
    Bonjour,

    Je souhaite faire une fonction utilisable dans la barre de formule excel...(alors déjà est ce que c'est faisable?). Cette fonction marcherait comme la fonciton recherchev(...) mais en argument on metterai la cellule dont la valeur est recherchée, la table dans laquelle on cherche,et surtout:
    le nombre de ligne et de colonne que l'on souhaite rajouter à l'adresse de la cellule que la fonction à trouvé pour qu'il nous retourne la valeur de cette nouvelle celulle.
    Comme rien ne vaut un bonne exemple: si on met add_ligne =1 et add_colonne=2, au lieu de nous retourner la valeur de "B2" il nous retourne la valeur de "C4".

    Pour cela j'ai donc codé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Public Function perso_recherche(Cellule, Table, add_ligne, add_colonne)
    Dim ligne As Integer
    Dim col As Integer
    Dim feuil As String
    Set celluletrouvee = Range(Table).Find(Cellule.Value, lookat:=xlWhole)
     
    ligne = celluletrouvee.Row + add_ligne
    col = celluletrouvee.Column + add_colonne
    feuil = celluletrouvee.sheets
     
    rjgj_recherche = sheets(feuil).Cells(ligne, col).Value
    End Function
    Mais ca me retourne un #VALEUR!

    Que faire?

    Merci par avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut Dantore et le forum
    Utilise les balises, sinon c'est moins lisible et à quoi ça sert que le forum il se décarcasse pour les fournir ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuil = celluletrouvee.sheets
    ??? tu inventes des codes et tu espères qu'Excel va t'exaucer ?
    Pas comme ça que ça fonctionne! pour chaque objet, Excel lui attribue un certain nombre de propriétés et de méthodes. Si tu prenais la peine de déclarer toutes tes variables dans le bon type, Excel te fournirait les possibilités offertes. mais comme tu ne déclares pas tes ranges, Excel les déclare en VARIANT et ne peut vérifier la syntaxe des propriétés qu'à l'exécution.
    Essaies avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuil = celluletrouvee.parent.name
    A+

  3. #3
    Membre habitué
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Par défaut
    Bonjour, j'ai donc retouché le code comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function recherche(Cellule As Cells, Table As Range, add_ligne As Integer, add_colonne As Integer)
    Dim ligne As Integer
    Dim col As Integer
    Dim feuil As String
    Dim celluletrouvee as Range
    Set celluletrouvee = Range(Table).Find(Cellule.Value, lookat:=xlWhole)
     
    ligne = celluletrouvee.Row + add_ligne
    col = celluletrouvee.Column + add_colonne
    feuil = celluletrouvee.Parent.Name
     
    rjgj_recherche = sheets(feuil).Cells(ligne, col).Value
    End Function

    Bien sur j'ai tjrs une erreur: type défini par l'utilisateur non défini....
    (je suis vraiment pas sur du Dim celluletrouvee as Range...mais le chef à dit de déclaré...d'ailleurs ca me réponds la même chose si je déclare pas "celluletrouvee")
    Je pense pas être loin mais il me manque kkchose...
    Vous en pensez quoi?

  4. #4
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Hello,

    Pour commencer, ce qui me gêne c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function recherche(Cellule As Cells
    essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function recherche(Cellule As range

  5. #5
    Membre habitué
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function recherche(Cellule As Range, Table As Range, add_ligne As Integer, add_colonne As Integer)
    Dim ligne As Integer
    Dim col As Integer
    Dim feuil As String
    Dim celluletrouvee As Range
    Set celluletrouvee = Range(Table).Find(Cellule.Value, lookat:=xlWhole)
     
    ligne = celluletrouvee.Row + add_ligne
    col = celluletrouvee.Column + add_colonne
    feuil = celluletrouvee.Parent.Name
     
    recherche = sheets(feuil).Cells(ligne, col).Value
    End Function
    Et toujours un #valeur! quand j'essaye de l'utiliser... Snif!

    C'est bon pour:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuil = celluletrouvee.Parent.Name
    ?

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut Dantore et le forum
    La même, à peine modifiée
    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
    Function recherche_C(Cellule As Range, Table As Range, add_ligne As Integer, add_colonne As Integer)
    Dim ligne As Integer
    Dim col As Integer
    Dim feuil As String
    Dim celluletrouvee As Range
    Application.Volatile
    Set celluletrouvee = Table.Find(Cellule.Value, lookat:=xlWhole)
    If celluletrouvee Is Nothing Then
        recherche_C = "# pas de réponse#"
        Exit Function
    End If
    ligne = celluletrouvee.Row + add_ligne
    col = celluletrouvee.Column + add_colonne
    feuil = celluletrouvee.Parent.Name
     
    recherche_C = Sheets(feuil).Cells(ligne, col).Value
    End Function
    Juste une remarque : c'est chercher le bâton pour se faire battre que d'utiliser des noms de fonctions d'Excel pour créer une Function!
    A+

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

Discussions similaires

  1. Faire une recherche avec/sans accents
    Par Wedge3D dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 21/02/2007, 10h43
  2. [VB.NET] Faire une recherche dans une treeview
    Par Aspic dans le forum VB.NET
    Réponses: 3
    Dernier message: 15/11/2005, 19h10
  3. Réponses: 9
    Dernier message: 07/11/2005, 19h57
  4. faire une recherche sans tenir compte de la casse
    Par richard038 dans le forum SQL
    Réponses: 5
    Dernier message: 11/10/2005, 09h07
  5. cherche une fonction qui permet de faire une recherche
    Par vbcasimir dans le forum Langage
    Réponses: 7
    Dernier message: 01/09/2005, 17h24

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