Retourner valeur cellule en fonction de la valeur de 3 autres

celtic35 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   -  
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je cherche à effectuer une macro un peu complexe

J'ai une première feuille que l'on nommera feuille1 et une autre feuille que l'on nommera feuille2
La feuille2 contient de très nombreuses valeurs qui sont régulièrement mises à jour et qui sont au format:

A1= "XX" B1="YY" C1="ZZ" D1=40

Cependant (et c'est là le noeud du problème), ces cellules varient (du jour au lendemain, les valeurs XX, YY, ZZ et 40 peuvent se retrouver à la ligne 2, voir 12)

Je souhaite donc récupérer la valeur 40 en me basant sur le fait que 3 cellules adjacentes possèdent dans l'ordre les valeurs XX, YY, ZZ.

En gros, si une cellule dans la feuille2 possède la valeur XX, que celle directement à droite possède la valeur YY, que celle encore à droite possède la valeur ZZ, alors on récupère le contenu de la 4ème cellule.

J'espère avoir été clair! Je vous remercie par avance

3 réponses

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bonjour
    une première étape (à compléter ultérieurement)si vous pouvez avoir plusieurs cas à ressortir dans la plage)
    formule matricielle à entrer avec la touche enter en maintenant les riches ctrl et shift enfoncées . elle doit s'afficher entre accolades dans la barre de formule
    pour une plage de A2 à D100

    =INDEX(D2:D100;EQUIV("XX"&"YY"&"ZZ";A2:A100&B2:B100&C2:C100;0))

    formule assez gourmandes en capacité bien limiter les adresses au nombre de lignes utiles
    revenez si ça ne convient pas, en nous disant pourquoi

    crdlmt
    1
  2. celtic35 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci beaucoup pour ta réponse! Cela fonctionne parfaitement! Par contre, je ne sais pas si c'est dû aux formules matricielles, mais il m'est impossible de faire une mise en forme conditionnelle sur un résultat retourné. Est-ce normal? J'essaie de ne pas afficher le résultat quand ce dernier est égal à 0 (techniquement, je ne masque rien, je créé une condition : "Si résultat = 0 --> Police en blanc).
    0
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      Il n'y aucune raison pour que ça ne fonctionne pas, même avec une matricielle. Vérifiez bien que votre formule de MFC soit bien associée aux bonnes cellules

      Par ailleurs, pour ne pas afficher les 0 dans une feuille:
      Onglet: FICHIER
      menu affiché à droite en bas: option
      menu suivant à gauche: "options avancées"
      dans la liste cherchez la ligne: "afficher un zéro dans les cellules de valeurs nulles" et décochez.
      crdlmnt
      0
  3. celtic35 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour,

    Aucune des 2 solutions ne fonctionne. J'ai bien décoché l'option mais la formule matricielle ne servant qu'à récupérer et non calculer un nombre, je pense que c'est la raison pour laquelle le 0 s'affiche toujours.

    Concernant la mise en forme conditionnelle, toujours rien. J'ai beau tester encore et encore, cela ne fonctionne pas. Je vous ai fait un petit screen pour vous montrer cela

    0
    1. celtic35 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
       
      Screen qui ne veut pas s'afficher...
      0
    2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      Bonjour
      il doit y avoir quelque chose d'incorrect dans le formatage de vos données
      pouvez vous déposer un modèle ici:
      http://mon-partagefr
      et revenir coller le lien créé sur le site, histoire de' voir ce qu'il se passe dans la feuille DATA
      ...à moins que la feuille DATA contiennent des 0 entrés au clavier dans des cellules qui sont en format texte. A vérifier?
      crdlmnt
      0