Rechercher une valeur sur une plage en fonction de certaines contraintes

Rechercher une valeur sur une plage en fonction de certaines contraintes Vba rechercher une valeur dans une plage - Conseils pratiques - Visual Basic Rechercher une valeur selon une plage de valeurs : index - equiv ✓ - Forum - Excel Rechercher une valeur dans plusieurs plages et afficher son nom - Forum - Excel Rechercher une valeur dans une plage de données - Forum - Excel Rechercher une valeur ds des plages de valeur - Forum - Programmation

Bonjour,
Je me permets de vous solliciter, car je n'arrive pas à faire une formule excel qui me permet de récupérer des données en fonction d'un certain nombre de contraintes.


Je vous donne un exemple :
, disons par exemple ref.312002. (vous pouvez le voir dans la photo ci jointe)

Cette dernière a une emplacement de stockage bien particulier. J'ai rempli une feuille excel qui recense tous les lieux de stockage. (vous pouvez voir son emplacement sur les cellules fusionnées entourés)
Cette référence a une adresse qui est composé de la manière suivante :
- Allée (P)
- Face (I)
- Travée (035)
- Niveau (00)
- Emplacement (A)

Je dois retrouver l'adresse (composé de ces 5 points) de l'article 312002 parmi une plage définie.
J'ai essayé d'utiliser la fonction recherche V, Index, Indirect... rien ne fonctionne car dans ce cas je suis en ligne et non en colonne.
Mon chef ne sait pas utiliser VBA, je ne veux donc pas rentrer dans du VBA. de préférence ^^






Pouvez vous m'aiguiller vers la bonne solution.
N'hésitez pas à me poser des questions si je n'ai pas été assez clair.

Je vous remercie beaucoup.
Je peux aussi faire passer le fichier afin que vous puissiez mieux comprendre et analyser le problème.
(voici le lien, pour ceux que cela pourrait aider : https://www.cjoint.com/c/HKclPIcdriT)
Encore merci de votre aide

palban53

Forum

Rechercher une valeur sur une plage en fonction de certaines contraintes Vba rechercher une valeur dans une plage - Conseils pratiques - Visual Basic Rechercher une valeur selon une plage de valeurs : index - equiv ✓ - Forum - Excel Rechercher une valeur dans plusieurs plages et afficher son nom - Forum - Excel Rechercher une valeur dans une plage de données - Forum - Excel Rechercher une valeur ds des plages de valeur - Forum - Programmation

Web: www.shapebootstrap.net

36 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,
Eh bien votre lien n'est plus disponible, dommage.
Cela m'intéresse va pas être simple avec des cellules fusionnées.

Salutations.
Le Pingou

Reply
réponses:
  • auteur

    Bonjour,
    Je vous remercie de vous interresser a mon cas. Toute la complexité est la ...
    je vous renvoie un nouveau lien demain. Je suis en déplacement jusqu’à demain.

    Merci
    Bonne journée

    Je vous remercie de votre aide

  • auteur

    Bonjour,
    Je vous donne un nouveau lien afin que vous puissiez mieux appréhender la problématique rencontrée.

    Voici le lien:
    https://transfernow.net/61khp1810ycs (dite moi si ce lien fonctionne)

    Merci de votre aide
    Bonne soiree

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonsoir,
J'ai téléchargé votre fichier.
Je regarderai dès demain.

Reply
réponses:
  • auteur

    Bonjour,
    Merci de votre aide

    Bonne journée

    Cordialement

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,
Ou doivent-être indiquées les diverses adresses de la référence 312002…… en un bloc :PI03500A ou chacune une cellule !!!
Est-ce que la plage représentée (le bloc) a toujours le même nombre de lignes et colonnes, Oui / Non ?

Reply
réponses:
  • auteur

    bonjour,
    Les diverses adresses doivent être marquées dans le tableau ci joint.
    Cela signifie que les références sont déjà toutes notées.
    Il faut ensuite, via la fameuse formule, remplir les données dans les cases associées:
    - Allée (P) (pour cette exemple : cellule J96)
    - Face (I) (pour cette exemple : cellule k96)
    - Travée (035) (pour cette exemple : cellule L96)
    - Niveau (00) (pour cette exemple : cellule M96)
    - Emplacement (A) (pour cette exemple : cellule N96)

    Le tableau se trouve en dessous à partir de la ligne 96

    En ce qui concerne les blocs, ils ne sont pas toujours de la même largeur. Vous pouvez le constater dans les différentes gares (la plage totale va de la cellule V5 à JLL86).


    Merci de votre aide

    Coridalement

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,
Merci pour l’information c’est OK.
Question pourquoi des blocs de 417 colonnes alors qu’il n'y a pas plus de 10 à15 données sur une ligne….. ?

Reply
réponses:
  • auteur

    C’est un choix en prévision des évolutions futurs.
    Cordialement

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,
Merci.
Je suis sur le problème et je pense que vu la structure des blocs avec cellules fusionnées via les fonctions cela va être très complexe. Peut-être il faudra passer par fonctions personnalisées VBA.

Reply
réponses:
  • auteur

    Bonjour,
    Prendre la première cellule fusionnée ne permet pas de faire la fonction correctement ?

    Pk pas par VBA. Après mes connaissances via VBA Reste limitée. Il me faudra du temps pour faire une ébauche.

    Je vous remercie
    Cordialement

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,
Eh oui la première c’est bon, par contre les autres ne sont pas toujours fusionnée avec le même nombre de colonnes… et c’est là un problème en plus…
Je poursuivrai demain.

Reply
réponses:
  • auteur

    Bonsoir,
    Je vous remercie pour toute l'aide que vous m'apportez.
    J’espère que vous trouverez la solution.

    encore merci
    Bonne fin de soirée

    Cordialement

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,
J’ai une piste via fonction que je dois finalisée d’ici ce soir. J’espère que se sera bon.
Bonne journée.

Reply
réponses:
  • auteur

    Bonjour, Je rentre seulement du travail.
    Je vous prie de m'excuser pour cette réponse tardive.

    Je pensais à une solution. 1 première fonction qui définit la cellule (je pense trouver la solution d'ici demain matin). Puis avec des index, on peut, peut être, trouver la valeur de la cellule recherchée pour chaque cellule associée à l'adresse de la référence.


    C'est une trés bonne nouvelle !! Je vous remercie vraiment pour votre aide. Peut être avez vous pensé à une solution qui se rapproche de mon idée.

    Cordialement

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,
Il semble que je suis sur la bonne voie : voir la feuille « Test_Gares ». Cependant je tombe sur un problème car le début des plages ( P ) ne commence pas toujours au début du bloc correspondant (expl : (P,I.035) avec T55 et bloc T56 et pour (P,I,033) avec PZ55 et bloc QB56 ….c’est encore plus sur les suivants. Il faut tous les contrôler et les corriger. https://mon-partage.fr/f/wnhVloZY/
La suite demain.

Reply
réponses:
  • auteur

    Bonjour, Je rentre seulement du travail.
    Je vous prie de m'excuser pour cette réponse tardive.

    Je pensais à une solution. 1 première fonction qui définit la cellule (je pense trouver la solution d'ici demain matin). Puis avec des index, on peut, peut être, trouver la valeur de la cellule recherchée pour chaque cellule associée à l'adresse de la référence.
    Je vous envoie une ébauche demain matin

    C'est une trés bonne nouvelle !! Je vous remercie vraiment pour votre aide. Peut être avez vous pensé à une solution qui se rapproche de mon idée.

    Cordialement

  • auteur

    Merci, vais dodo.

  • auteur

    Bonjour,
    Voici la formule pour retrouver la cellule de la référence en question :
    =ADRESSE(SOMMEPROD(($S$1:$LOH$90=A96)*(LIGNE($A$1:$A$90)));SOMMEPROD(($S$1:$LOH$90=A96)*(COLONNE($S$1:$LOH$90)));4)

    Cependant c'est au moment de faire l'index, que je n'arrive pas faire la formule qui va bien en raison des décalages.
    J'étais parti sur cette base :
    =SI(ET($AR68="00";$AU68="A");DECALER(INDIRECT($AX68&":"&$AX68);-4;0);SI(ET($AR68="00";$AU68="B");DECALER(INDIRECT($AX68&":"&$AX68);-4;-2);SI(ET($AR68="00";$AU68="C");DECALER(INDIRECT($AX68&":"&$AX68);-4;-4);SI(ET($AR68="10";$AU68="A");DECALER(INDIRECT($AX68&":"&$AX68);-1;0);SI(ET($AR68="10";$AU68="B");DECALER(INDIRECT($AX68&":"&$AX68);-1;-2);DECALER(INDIRECT($AX68&":"&$AX68);-1;-4))))))


    J'espère que cela vous aura aider

    Merci

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,
Merci pour les informations. Il se trouve que votre formule ne fonctionne pas chez moi et retourne erreur >>>>> voir extrait ci-après.

Reply
réponses:
  • auteur



    Je ne comprends pas... Cela fonctionne chez moi ??

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,
Eh bien après divers tests en décortiquant la formule j’ai fini par trouver l’intrus. Le problème survient lorsque vous avez une fonction dans une cellule du tableau qui renvoie une erreur (#N/A) et il y en a un certain nombre. J’ai corrigé la fonction
(Exemple :
 = RECHERCHEV(CVA4;FEUIL2!$A$1:$E$5000;$DF$2;FAUX)) 
par
=SI(CVA4="";"";RECHERCHEV(CVA4;FEUIL2!$A$1:$E$5000;$DF$2;FAUX))
)
Image partie fichier à dispo.

Reply
réponses:
  • auteur

    Effectivement, il est nécessaire de modifier les formules du tableau.
    Vous avez pu trouver ensuite à partir la cellule, faire un INDEX , DECALER pour trouver la bonne adresse ?

    Merci de votre aide

  • auteur

    Bonjour,
    Ce matin je suis sur une piste en utilisant une combinaison qui intègre la fonction "PETITE.VALEUR".

    Je ferai la suite dans la soirée.
    Bonne journée.

  • auteur

    Bonjour,
    Je suis désolé pour la réponse tardive
    ok. J’attends votre réponse
    Merci beaucoup pour toute l’aide que vous m’apporter

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

Mauvaise piste lorsque cellules contiennent du texte.
Suis de retour lundi pour reprendre cette partie.
Bon Week-end

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,
Petite info: j'ai tout repris à zéro et cette fois ça marche dans le bon sens. Reste plus qu'à imbriquer les diverses formules et se sera bon. Patience.

Reply
réponses:
  • auteur

    Bonsoir,
    Pas de problème. Je vous en demande déjà beaucoup...
    Je suis désolé de cette réponse tardive, je n'ai pas pu me connecter ce weekend.

    Je vous remercie beaucoup pour l'aide que vous m'apportez
    Vous êtes un chef !

    Encore merci
    (juste à titre informatif, vous pensez pouvoir trouver la solution définitive à quel moment ?)

    Cordialement

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,
Voici ma proposition qui se trouve sur la feuille « Test_GARES ».
Vue la complexité de la mise en place des blocs j’ai opté pour une solution mixte (fonction et VBA). Votre dossier : https://mon-partage.fr/f/WJSWm1fb/

Reply
réponses:
  • auteur

    Bonsoir,
    Tout d'abord, un grand merci pour tout le travail accompli... J'ai compris votre raisonnement et le fait de prendre toutes les cellules indépendamment, ainsi que les 2 formules VBA pour faire le rassemblement était très bien vu de votre part.

    Après réflexion, une formule : macro / VBA était la meilleure solution.




    J'ai juste un petit problème sur les emplacements. Dans certains cas, comme vous pouvez le constater sur la photo, j’ai des "0" et je ne sais pas trop d'où cela vient...
    Je pensais que cela était du au format de la cellule, mais non... Ai je manqué quelque chose ?

    Merci encore de votre aide

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,
Merci de remplacer la valeur d’argument 50 par 100 pour la fonction « NivEmpl() »
En marge :
La mise en place des blocs qui n'est pas rigoureuse.
Par principe la première cellule d'un bloc c'est toujours en haut et à gauche puis sur la droite les autres blocs commencent sur la même ligne (en principe c'est ok chez vous) en verticale tous les blocs sont alignées sur la même colonne (là ce n'est pas le cas chez vous: exemple colonne "PX:PX" vous avez le bloc de la ligne 56 qui commence à la colonne "PY" ce qui induit un décalage vers la droite que le programme ce qui peut donner des résultat erronées.
Il faut absolument corriger les alignements.

Reply
réponses:
  • auteur

    Bonsoir,
    Merci pour l'info, je viens de faire la modification.
    J'ai également compléter le tableau avec l'implantation finale
    Cependant, quand j'ai ré ouvert le fichier, et que j'ai fait le changement, toutes mes valeurs sont passées en #REF#

    En effet, j'ai voulu supprimer des tables pour alléger le fichier. Cela signifie que les valeurs en dessous sont erronées. Cette modif peut-elle avoir un impact sur le fichier.

    Je vous laisse le lien, pour jeter un coup d'oeil rapide. Je suis sur qu'en 2 minutes vous aurez trouvé le problème :
    https://mon-partage.fr/f/9m3u7XIy/


    De plus, vous avez complément raison !!! Cependant, mon responsable voulait le fichier de cette manière là, impossible de le faire changer d'avis. Je n'ai pas eu le choix. mais vous avez totalement raison.

    Merci pour votre réponse.
    En espérant pouvoir trouver rapidement la solution.
    Encore merci pour toute l’implication que vous avez porté pour mon cas

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,
Je regarderai votre dossier demain après-midi.
Ceci : Cependant, mon responsable voulait le fichier de cette manière-là, impossible de le faire changer d'avis
Pas de problème cela fonctionne très bien, faut juste être rigoureux avec la position des blocs et en plus éviter que des formules produisent des erreurs si une donnée manque….( utiliser le SI()…. !)

Reply
réponses:
  • auteur

    Bonsoir,
    Merci pour votre réponse tardive.
    J'attends votre réponse. Je suis curieux de savoir ce qui s'est produit...

    OUI c'est une évidence, vous avez entièrement raison !
    Pour la prochaine version, je prendrais les choses en main... Cela sera plus simple dans la mise en place des formules;

    Cordialement
    Bonne soirée

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,
Correction à bien plaire, voir note sur feuille « Test_GARES »
Le lien ; https://mon-partage.fr/f/VdX6LIy2/

Reply
réponses:
  • auteur

    Merci beaucoup de votre aide.
    Je vais travailler sur les quelques erreurs qui restent.

    C'était devant mes yeux et je ne pensais pas que cela pouvait avoir une incidence sur toutes vos formules.

    Encore Merci !!!!

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed