Forum Clubic

Excel, choix d'une formule différente dans une cellule en fonction d'un code dans cellule adjacente

Bonjour,
Je travaille dans une industrie qui fait du contrôle de pièces (et les industriels vieux comme moi ne sont vraiment pas des as d’excel et limite allergiques à VBA)
Nous avons approximativement 4000 ref de pièces par mois pour approximativement une centaine de client différents
Il y a trois types de contrôle “Très Renforcé”, “Renforcé”, “Série” qui prennent chacun un temps extraordinairement différent
Chaque client y va de sa propre définition des fréquences de contrôle dans chaqun de ces 3 types, celà peut aller de :

  • 1p renforcée / lot
  • une p très renforcée si dernier contrôle > 2 ans, sinon contrôle série sur 10 % des pièces du lot
  • contrôle très renforcé sur la n°1,3,25,50 puis renforcé chaque 200p avec série sur les autres pièces en prenant en compte le cumul
    bref il y en a une centaine comme ça
    J’ai un tableau excel qui me donne les articles en commande, leurs quantités, la date du dernier contrôle, le cumul déjà contrôlé (merci acces)
    Je voudrais y associer 3 colonnes (“très renforcé”, “renforcé” et “série”) et que le nombre de pièces à contrôler dans chacune de ces colonnes se calcule automatiquement en fonction du désire client, de la quantité du lot …
    Je ne me vois pas utiliser la fonction “si” dont j’abuse pourtant largement habituellement pour chacun de ces 300 cas
    Je pensais bêtement faire un tableau dans une seconde feuille en écrivant la fonction correspondant au désire client pour chacun des trois types de contrôle
    Puis par une moulinette qui m’est totalement inconnue
  • ramener la bonne formule dans la bonne ligne en fonction du code contrôle client
  • récuperer dans ces fameuse formules les données de qtté cumulée, de qtté du lot ou de date du tableau de la feuille 1 au besoin
    Mais voilà, j’ai ce fameux problème de moulinette
    Est-ce faisable ? Ai-je été suffisamment clair ?
    Merci (au moins d’avoir lu jusqu’au bout)

Tu as 100 clients, donc potentiellement 100 formules différentes pour remplir chacune de tes colonnes supplémentaires ?
Je pense que tu n’échapperas pas à la construction d’un tableau annexe (sur la même feuille ou mieux sur une autre feuille) et à un peu de VBA pour faire la liaison entre les deux.
Une solution plus simple serait d’écrire des fonctions personnalisées, mais là encore c’est du VBA.

Dans tous les cas, il te faudra disposer d’une colonne qui puisse te servir d’index et qu’on retrouvera dans les deux tableaux, le code client par ex, ce qui ne semble pas être le cas

Après, le mieux c’est sans doute de créer les colonnes supplémentaires, de remplir “sur place” (au moins une par type de client rencontré), puis de regrouper ces formules dans un deuxième tableau colonnes 2 à 4, la colonne 1 contenant les index (les codes client)
Et après ces étapes, voir comment on fait la liaison entre les deux, mais il faudra que tu sois plus précis dans l’organisation de tes tables …

NB : sachant que tes données viennent d’accès, tu as envisagé de traiter à ce niveau ?
Ce serait peut être le plus simple

Merci de la réponse,

J’ai effectivement potentiellement 300 fonctions puisque le résultat du nombre de pièces à contrôler peut être différent selon la criticité du contrôle. Je comptais faire une table “Exigence Client” de 4 colonnes
Une colone CodeExigence comme clé, une seconde “FonctionMathControleSevère”, une troisième “FonctionMathContrôleRenforcé” et la quatrième pour “FonctionMathContrôleSérie”
et avoir le même CodeExigence relié à la clé dans le tableau principal, car par miracle, certains clients ont la même exigence
J’ai bien pensé tout faire sous acces, mais les fonctions sont assez limitées mathématiquement parlant (pas d’Arrondi.sup et autres que je vais longuement utiliser…)
Il me semblait bien que je n’échapperais pas à VBA.
Je pense pouvoir arriver à faire une moulinette qui lit le code dans la feuille principale et va chercher la ligne correspondante dans la feuille secondaire pour copier les trois formules … mais je ne sais pas encore comment elles vont apprécier le déménagement …

Tu n’as même pas besoin de moulinette.
Les formules vont suivre, moyennant certaines précautions.
Par contre, si tu veux que ça reste compréhensible, il te faudra travailler en notation L1C1 et non en notation A1, puisque tout va être basé sur de l’adressage relatif.

Et dans ce cas, il est probable que tu n’auras même pas besoin de VBA ; avec Recherchev() et Evaluer(), tu as en théorie tout ce qu’il te faut

Merci de l’information,
Je ne connaissais pas la formule “evaluer()”, ignare d’autodidacte que je suis ; je vais donc combler rapidement cette lacune. Par contre, moyennant quelques heures sur de nombreux cites traitant de VBA, j’ai finalement réussi à écrire, probablement d’une façon à faire blêmir les puristes, une moulinette qui recherche le code fonction dans le tableau de la feuille 2, donne les bonnes variables à la fonction associée et ramène le résultat à l’emplacement désiré dans la feuille 1. Je me contenterai actuellement du “ça marche” vu le temps passé, le nombre d’essais et de frayeurs durant cette initiation au monde obscure VBA.
Merci encore de vos réponses

Sauf que je ne trouve pas la fonction Evaluer() sur ce :@ version 2007
Edité le 17/09/2009 à 23:49

ah oui, évaluer() c’est une fonction d’excel 97 qui n’est plus visible mais qui existe toujours
Il faut que passes par la définition d’un nom pour l’invoquer
Tu as des exemples sur google, par exemple ici

Mais personnellement, je ferais avec du vba
Pour ton cas, une fonction vba qui met en place la (les) bonne(s) formule(s) dès qu’un changement est opéré sur les colonnes “source”, ça s’écrit en 4 lignes (une petite dizaine si on veut un code agréable à lire et commenté)