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 :

Comparaison de valeur/Valeur la plus proche [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2017
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Comparaison de valeur/Valeur la plus proche
    Bonjour à tous !


    Après de nombreuses recherches et des essais non concluants, je me permets de venir vers vous, je m'explique :

    Suite à la réalisation de mesures, mes résultats se trouvent sous la forme suivante : 4 colonnes (A_mesurée, B_mesurée, C_mesurée, D_mesurée) avec environ 10 000 lignes par colonnes
    Je dois comparer ces quelques 40 000 résultats avec une table d'étalonnage : 4 colonnes (A_étal, B_étal, C_étal, D_étal) avec environ 2 000 lignes par colonnes

    L'idée est simple : Pour une valeur de A_mesurée, je souhaite connaître son A_étal correspondant le plus proche, ainsi que le numéro de sa ligne. Et cela pour chaque valeur...
    J'ai déjà essayer pas mal de trucs, faire des différences entre une valeur de A_mesurée et toute les valeurs de A_étal et prendre la valeur minimum, utiliser les fonctions d'équivalence etc... mais je tourne en rond et je bloque.
    Si quelqu'un avait une idée de boucle, ne serait-ce que pour trouver 1 correspondance étalon à 1 valeur mesurée, cela m'aiderait déjà beaucoup.


    En espérant avoir été assez clair, je vous remercie d'avance pour votre aide !

    Etienne

  2. #2
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Bonjour,
    Est-ce que tu pourrais être plus précis sur "comment" tu bloques? Est-ce que tu as déjà des débuts de code?
    J'aurais procédé ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Function ligneEquiv(cible As Long, col As Long) As Long
        Dim i As Long
        Dim plusPetit As Long
        plusPetit = Abs(Cells(1, col).Value - cible)    'on prend la première ligne au début.
        ligneEquiv = 1
     
        For i = 1 To 2000           'boucle sur les valeurs à approcher
            If Abs(Cells(i, col).Value - cible) < ligneEquiv Then       'si on trouve plus petit, on prend.
                ligneEquiv = i
            End If
        Next i
     
    End Function
    pour trouver la ligne de la valeur la plus proche du nombre "cible". Ensuite il faudrait faire une boucle sur toutes les valeurs à comparer.
    C'est une idée... et vu le nombre d'itérations à faire, je pense que le code sera long. Il y a peut-être plus efficace, mais il faudra attendre des plus experts que moi

  3. #3
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    par formule ça se fait très bien
    ici tu as même la méthode pour trouver la ligne comportant la valeur la plus proche : http://www.cathyastuce.com/excel/for...lusproche.html


    si on reste en VBA, petite recherche sur le forum et... https://www.developpez.net/forums/d9...r-plus-proche/

  4. #4
    Invité
    Invité(e)
    Par défaut
    bonjour Joe,
    et oui par formule c'est encore plus rapide qu'une boucle dans tous les sans!

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2017
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Effectivement cela fonctionne bien par formule, j'avais déjà vu ce site mais je ne pensais pas que cela marcherai dans mon cas.

    J'ai réussi à terminer ce que j'avais à faire, je vous en remercie.

    Bonne journée !

    Etienne

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

Discussions similaires

  1. Comparaison d'une valeur pour trouver la plus proche
    Par Falcdyr dans le forum VBA Access
    Réponses: 4
    Dernier message: 16/04/2008, 17h10
  2. rechercher la plus proche valeur dans un tableau ?
    Par Slumpy dans le forum VB.NET
    Réponses: 3
    Dernier message: 13/04/2007, 14h06
  3. [MySQL] Extraire les 50 valeurs les plus proches d'un entier
    Par denis.ws dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 19/01/2007, 08h42
  4. [Oracle] selectionner la valeur la plus proche
    Par jaoued dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/03/2006, 21h15
  5. Récupurer via une requête SQL la valeur la plus proche
    Par yoda_style dans le forum Langage SQL
    Réponses: 9
    Dernier message: 27/04/2004, 13h52

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