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 :

Problème Fonction Find


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2013
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 14
    Par défaut Problème Fonction Find
    Bonsoir,

    Dans un tableau j'ai des valeurs qui sont toutes des valeurs décimales, parfois certaines sont de la forme 4.5E-05 quand les valeurs sont très petites.

    Avec la fonction .Find, je souhaite aller chercher le numéro de ligne et colonne de la valeur la plus petite d'une plage de valeur. J'ai donc repris certains codes trouvés sur la toile et adapté pour mes besoins, ce qui donne:
    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
     
    Sub recherche()
     
    Dim celluletrouvee As Range
    Dim ligne As Integer
    Dim col As Integer
    Dim PlusPetiteValeur As Single
     
    Sheets("O2").Select
     
    PlusPetiteValeur = Application.WorksheetFunction.Min(Range("B6:BK8"))
     
    Set celluletrouvee = Range("B6:BK8").Find(PlusPetiteValeur)
     
    If celluletrouvee Is Nothing Then
    MsgBox ("pas trouvé")
     
    Else
    ligne = celluletrouvee.Row
    col = celluletrouvee.Column
    MsgBox ("trouvé : ligne = " & ligne & " , colonne = " & col)
    End If
     
    End Sub
    Le problème, c'est que j'ai toujours un message "pas trouvé" qui apparaît. Je pensais que ça vient du fait que mes données dans mon tableau sont au format numérique, parfois avec des puissances de 10 ( E-05...) et que la fonction Find va prendre la valeur dans la variable PlusPetiteValeur et la comparer comme une String avec la valeur numérique exacte.

    J'ai donc modifié mon tableau en arrondissant toutes mes données avec ROUND afin de ne plus avoir de puissances de 10, mais c'est toujours le même problème...

    Quelqu'un aurait-il une idée?

    Merci!

  2. #2
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Ca fonctionne avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim PlusPetiteValeur As Double

  3. #3
    Membre averti
    Inscrit en
    Mai 2013
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 14
    Par défaut [XL 2007] Problème Fonction Find
    Bonjour!

    Merci de ta réponse rapide Docmarti.

    Il est vrai que ça marche si je remplace Single par Double, mais je rencontre encore le problème avec des données plus grande...

    Pour y voir plus clair, voilà le document test_fail.zip

    J'ai deux tableaux, O2 et CO2. Les fonctions "differenceO2" et "differenceCO2" me créent en dessous de chaque tableau un deuxième tableau qui contient les valeurs absolue de la différence de chaque valeur du premier tableau avec une valeur de consigne (située tout à droite).

    Bref, les fonctions "rechercheO2" et "rechercheCO2" sont censées rechercher le minimum de chaque deuxième tableau et me dire ou il se trouve; et; comme vous pouvez le voir, ça marche avec le tableau O2 et pas avec le tableau CO2...

    Quelqu'un verrait où est le problème?

    Merci beaucoup!

    Sankae

  4. #4
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Le problème est qu'il y a 19 décimales à la valeur recherchée dans le tableau CO2 et que cela rencontre un problème de précision numérique des valeurs à virgule flottante.

    Au lieu d'utiliser la méthode FIND, il faut faire la recherche avec un FOR NEXT sur chacune des valeurs.

  5. #5
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Pour gagner en temps, tu peux réaliser ta recherche en utilisant un tableau intermédiaire.
    La plage utile est copiée dans le tableau et la recherche da la valeur mini est effectuée dans ce tableau. Le minimum ayant été trouvé, on en déduit la position de la cellule dans la plage initiale.

    Cordialement.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Problème fonction find
    Par mloic38 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/10/2014, 12h47
  2. [XL-2013] Problème fonction "Find" pour valider donnée
    Par Loanito31 dans le forum Macros et VBA Excel
    Réponses: 29
    Dernier message: 24/12/2013, 13h57
  3. Problème fonction find
    Par nini94 dans le forum MATLAB
    Réponses: 3
    Dernier message: 22/02/2011, 16h28
  4. [XL-2003] Problème Fonction Find
    Par Crusoe dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/01/2011, 22h57
  5. [VBA-E]Problème avec la fonction Find
    Par Mirx1 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 27/04/2006, 18h43

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