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 :

Fonction (ou macro) pour chercher valeur dans plage variable et 2 conditions [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Mai 2017
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 54
    Points : 38
    Points
    38
    Par défaut Fonction (ou macro) pour chercher valeur dans plage variable et 2 conditions
    Bonjour à tous,

    J'ai un souci de fonctions! je n'arrive pas à bricoler une fonction qui permettrait de rechercher dans une bdd (excel) selon 1 critère de vitesse moteur qui se situe dans des limites et qui donne un résultat recherché variable en function de ces limites (inf et sup).

    Je m'explique :
    En fonction de la vitesse moteur, j'aurai une valeur à remonter (par ex colonne "ok") qui sera donnée par la ligne de la plage encadrant la vitesse de rotation

    ex :
    GR2; 1482 trs/min --> acceleration : [ limite inf 1250, limite sup [ 1500; --> valeur recherché = 0.8 mm.s-²

    GR2; 2980 trs/min --> acceleration : [ limite inf 2500, limite sup [ 3000; --> valeur recherché = 1.2 mm.s-²

    ci-dessous : copie des valeurs pour les 3 colonnes

    >= < Accélération en g(mm.s-²) rms

    0 500 0.2
    500 750 0.35
    750 1000 0.5
    1000 1250 0.6
    1250 1500 0.8
    1500 1750 0.9
    1750 2000 1
    2000 2500 1
    2500 3000 1.2
    3000 3500 1.35
    3500 4000 1.5
    4000 5000 2
    5000 7500 3
    7500 10000 4.5
    10000 600000 4.5


    J'ai tenté index equiv et rechercheV mais n'arrive pas à remonter la valeur (ça remonte la valeur de la ligne inférieure) en cas de valeur approximative (pas valeur = valeur limite).

    Je ne sais pas si le problème est soluble avec fonctions ou s'il faut créer une petite macro?

    Merci d'avance de vos conseils.
    JC

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Etant donné que la seconde colonne est la copie de la première avec une ligne de décalage, il est inutile de la faire participer à la recherche.
    En mettant le quatrième paramètre de RECHERCHEV() à vrai, cette fonction pourra faire ce que tu souhaites sans tenir compte de la seconde colonne.
    Il est également possible de faire ça avec la fonction EQUIV() (à associer à INDEX) qui a en plus l'avantage, en fonction de son troisième paramètre, de permettre de choisir entre la valeur sup et la valeur inf quand on tape entre deux valeurs.

    A lire :
    RECHERCHEV : https://support.office.com/fr-FR/art...8-93a18ad188a1
    EQUIV : https://support.office.com/fr-FR/art...9-533f4a37673a

  3. #3
    Membre habitué
    Homme Profil pro
    Fortune teller
    Inscrit en
    Octobre 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Fortune teller

    Informations forums :
    Inscription : Octobre 2007
    Messages : 110
    Points : 145
    Points
    145
    Par défaut Chercher valeur
    J'ai fait un test avec tes valeurs d'exemple. Il n'y a pas de problème avec RECHERCHEV.

    Nom : recherche_v.png
Affichages : 956
Taille : 13,1 Ko

    La saisie est en E1.
    La formule en F1.

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 948
    Points : 5 174
    Points
    5 174
    Par défaut
    Bonjour

    Dans l'hypothèse suivant :
    colonne A : Valeur Min
    Colonne B : valeur Max
    Colonne C : La valeur correspondante
    Valeur à chercher se trouve en F7
    1 / sans VBA
    tu peux ajouter une colonne (Colonne D) et tu mentionne un X si la valeur comprise entre le min et le max :
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    SI(ET($F$7>=A2;$F$7<B2);"X";"")
    dans la cellule G7 ou va s'inscrire le résultat tu mets :
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    INDEX(C2:C16;EQUIV("X";D2:D16;0))

    2/ avec VBA
    un petit code et le résultat sera en H7
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub ChercherValeur()
    Dim F As Worksheet
    Dim Dligne As Long
    Set F = Sheets("Feuil1") ' à adapter le nom de l'onglet
    Dim plage As Range
    Dim c As Range
    Set plage = F.Range("A2:A16")
    F.Range("H7").ClearContents
    X = F.Range("F7").Value
    For Each c In plage
     If c.Value <= X And F.Cells(c.Row, 2) > X Then F.Range("H7") = F.Cells(c.Row, 3)
    Next c
    End Sub
    un fichier test à adapter
    Bonne continuation
    Fichiers attachés Fichiers attachés

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Mai 2017
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 54
    Points : 38
    Points
    38
    Par défaut Elémentaire, mais...
    Je m'étais perdu dans des bricolages alambiqués avec les 2 colonnes!!!

    Merci Menhir et Zoltar_x de m'avoir mis sous le nez l'évidence!

    JC

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Mai 2017
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 54
    Points : 38
    Points
    38
    Par défaut Cerise sur le gâteau!!
    Citation Envoyé par BENNASR Voir le message
    Bonjour

    Dans l'hypothèse suivant :
    colonne A : Valeur Min
    Colonne B : valeur Max
    Colonne C : La valeur correspondante
    Valeur à chercher se trouve en F7
    1 / sans VBA
    tu peux ajouter une colonne (Colonne D) et tu mentionne un X si la valeur comprise entre le min et le max :

    dans la cellule G7 ou va s'inscrire le résultat tu mets :


    2/ avec VBA
    un petit code et le résultat sera en H7
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub ChercherValeur()
    Dim F As Worksheet
    Dim Dligne As Long
    Set F = Sheets("Feuil1") ' à adapter le nom de l'onglet
    Dim plage As Range
    Dim c As Range
    Set plage = F.Range("A2:A16")
    F.Range("H7").ClearContents
    X = F.Range("F7").Value
    For Each c In plage
     If c.Value <= X And F.Cells(c.Row, 2) > X Then F.Range("H7") = F.Cells(c.Row, 3)
    Next c
    End Sub
    un fichier test à adapter
    Bonne continuation
    Merci Bennasr, qui m'avait déjà apporté un précieux conseil il y a quelques temps!
    JC

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

Discussions similaires

  1. [XL-2010] Macro pour rechercher valeur dans une liste et copier valeur associée d'une autre colonne
    Par DeathCrow83 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/05/2017, 16h58
  2. Réponses: 1
    Dernier message: 05/12/2016, 22h07
  3. Macro pour recherche valeur dans plage de cellules sur 2 colonnes.
    Par bipol51430 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/05/2014, 10h43
  4. [XL-2003] Macro pour copier valeurs dans 1 autre classeur
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 20/11/2013, 08h42
  5. [XL-2003] Problème macro pour appeler valeur dans des tableaux
    Par phnguyen dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/07/2012, 11h24

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