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 :

Erreur avec le fonction "Find"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Par défaut Erreur avec le fonction "Find"
    Bonjour.

    J'ai fait une fonction qui renvoi un boolean si il trouve une certaine valeur dans une plage de cellule.
    Seulement la fonction "find" me retourne une erreur si elle ne trouve pas le mot alors qu'elle devrait me renvoyer "Nothing".

    Je ne comprend pas mon erreur ...

    *EDIT* : en fait je viens de me rendre compte que la fonction find me renvoie une valeur de type string contenant le résultat de ma recherche. Normalement elle ne devrait pas me renvoyer un type "Range" ? ...

    Du coup ma fonction ne fonctionne jamais si ma variable "rngCellTx" n'est pas de type string ou variant ...

    Bon bin là je suis complètement perdu ...

    */EDIT*

    Voici ma fonction :
    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
    Private Function AvecTaux() As Boolean
    ' Renvoie true si la valeur "Taux" est trouvé dans l'onglet VAP du fichier "0001-95.xls"
        Dim rngCellTx As Range
     
        ' Initialise le retour de la fonction
        AvecTaux= False
     
        ' On recherche la valeur dans le fichier excel
        rngCellTx = Workbooks("0001-95.xls").Sheets("VAP").Range("A1:AZ50").Find("Taux", , , xlPart, , , False) 'Cherche si la valeur "Taux" est présente
        ' Si on trouve un résultat on retourne la valeur true au résultat de la fonction
        If Not rngCellTx Is Nothing Then
            AvecTaux= True
        End If
     
    End Function
    Si quelqu'un à une idée.

    Pour le moment je peu me débrouiller avec une gestion d'erreur mais je trouve pas ça très propre.

    L'erreur qu'il me retourne est "Variable objet ou variable de block with non définie". ... o_O?

    Merci d'avance pour vos réponses.

  2. #2
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    Salut,

    Essaie comme ca :
    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
    Private Function AvecTaux() As Boolean
    ' Renvoie true si la valeur "Taux" est trouvé dans l'onglet VAP du fichier "0001-95.xls"
        Dim rngCellTx As Variant
     
        ' Initialise le retour de la fonction
        AvecTaux= False
     
        ' On recherche la valeur dans le fichier excel
        Set rngCellTx = Workbooks("0001-95.xls").Sheets("VAP").Range("A1:AZ50").Find("Taux", , , xlPart, , , False) 'Cherche si la valeur "Taux" est présente
        ' Si on trouve un résultat on retourne la valeur true au résultat de la fonction
        If Not rngCellTx Is Nothing Then
            AvecTaux= True
        End If
     
    End Function
    ++
    Minick

  3. #3
    Membre éclairé Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Par défaut
    Merci pour ta proposition.

    J'avais déjà essayé la variable de type variant :
    - ça récupère correctement la valeur mais il faut changer le test du coup
    - dans le cas où la valeur n'est pas trouvé, ça me renvoie l'erreur "Variable objet ou variable block with non défini".

    Hors c'est justement cette erreur que j'aimerai supprimer.

    Je continue de chercher mais en tout cas merci.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Bonjour,

    Pour avoir testé, tu peux laisser En revanche, tu as effectivement oublié le Set. J'ai testé ta fonction avec une Sub chez moi, pas de soucis de cette manière.

    Bonne journée

    EDIT : voilà ma procédure de test, pour info.
    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
    Sub test()
     
        Dim rngCellTx As Range
        Dim avectaux As Boolean
     
        avectaux = False
     
        Set rngCellTx = Worksheets("Feuil1").Range("A1:AZ50").Find("Salut", , , xlPart, , , False)
     
        If Not rngCellTx Is Nothing Then
            avectaux = True
        End If
     
        MsgBox avectaux
     
    End Sub
    EDIT : Il fallait surtout retenir l'histoire du Set dans le message de Minick et non le Variant

  5. #5
    Membre éclairé Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Par défaut
    Super!!!!!

    Oui je suis désolé Minick j'avais pais fait gaffe au "Set".

    Arf ...

    En tout cas ça fonctionne bien il manquait donc juste le Set.

    Je met la fonction corrigé pour info :
    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
    Private Function AvecTaux() As Boolean
    ' Renvoie true si la valeur "Taux" est trouvé dans l'onglet VAP du fichier "0001-95.xls"
        Dim rngCellTx As Range
     
        ' Initialise le retour de la fonction
        AvecTaux= False
     
        ' On recherche la valeur dans le fichier excel
        set rngCellTx = Workbooks("0001-95.xls").Sheets("VAP").Range("A1:AZ50").Find("Taux", , , xlPart, , , False) 'Cherche si la valeur "Taux" est présente
        ' Si on trouve un résultat on retourne la valeur true au résultat de la fonction
        If Not rngCellTx Is Nothing Then
            AvecTaux= True
        End If
     
    End Function
    Encore MERCI à tous!!!

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

Discussions similaires

  1. [XSLT] erreur avec les fonctions
    Par frouge dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 18/07/2006, 10h15
  2. [Mail] erreur avec utilisation fonction mail
    Par taka10 dans le forum Langage
    Réponses: 7
    Dernier message: 12/07/2006, 16h19
  3. erreur avec la fonction putfile() sur connexion FTP
    Par stefane1981 dans le forum C++
    Réponses: 2
    Dernier message: 23/09/2005, 09h13

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