Première ligne matrice et fonction RECHERCHEV()

Flow-er Messages postés 7 Statut Membre -  
via55 Messages postés 14395 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Quelqu'un pourrait-il donner réponse à cette question :

J'ai créé une matrice en colonne.
La ligne 1 comporte le noms de mes champs
Et j'ai démarré le fichier en ligne 2.
Puis j'ai trié mes colonnes, ce qui a entraîné un classement par ordre croissant des données par rapport à ma colonne A.
colonne A, colonne B : produit, colonne C : prix HT, et colonne D : TVA

J'ai ensuite donné des noms à mes différentes "plages" pour les utiliser dans ma formule.
colonne A + B : nom
colonne A à C : pht
et colonne A à D : tva

Sur une autre feuille de classeur, j'ai créé une facture ou un devis.

L'objectif est que quand dans une colonne j'inscris le code de mon produit, avec la fonction rechercheV dans la colonne suivante : le nom du produit vienne se marquer
dans la colonne (encore suivante) vienne se marquer le prix HT et encore à côté vienne se marqué le taux de TVA.

Les 3 fonctions recherchev passées successivement dans chaque colonne fonctionnent, sauf pour le premier produit de ma liste-matrice.
J'ai inséré une ligne entre les noms des champs et mon premier produit et là ça fonctionne.

Pourquoi si je commence ma liste en ligne 2, les données de ma première ligne ne "marchent" pas ?

Merci

3 réponses

  1. via55 Messages postés 14395 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonsoir

    Difficile de dire sans voir ton fichier et de quelle manière tu as nommé les plages

    (tu peux joindre un exemple allégé de ton fichier sur cjoint.com et indiquer ensuite ici le lien fourni)

    Mais ce qui m'étonnes c'est que tu as plusieurs plages pour tes recherchev alors qu'une seule suffit

    Avec par exemple ta base de données de A2 à D100, et toute cette plage nommée base

    En supposant le code à chercher en B5 de facture
    en C5 RECHERCHEV(B5;base;2;0) renverra le nom
    en D5 RECHERCHEV(B5;base;3;0) renverra le prix
    en E5 RECHERCHEV(B5;base;4;0) renverra la TVA

    Eventuellement tu peux nommer aussi la plage de la première colonne de ta base (les codes) pour l'utiliser dans une liste déroulante en B5 et suivants de facture

    Cdlmnt
    0
    1. Flow-er Messages postés 7 Statut Membre 19
       
      Merci via55 (désolée pour le prénom).

      Pourquoi j'ai plusieurs plages : bien pour pouvoir relier chaque nom à la colonne A de mes références.
      La plage nom contient colonne A et colonne B. Ce qui permet dans ma facture de mettre dans une colonne la référence du produit et dans une autre colonne de passer la formule de RECHERCHE V pour que "tout seul" vienne se mettre le nom du produit -d'après la référence.
      C'est d'ailleurs ce qui se passe aux caisses : le code barre est scanné et dans la colonne à côté le nom du produit s'inscrit.

      Par contre le souci est que quand je met la référence du premier produit de la liste, la fonction ne marche pas, si ce premier produit est en ligne 2. S'il est en ligne 3, cela fonctionne.

      Merci

      Florence -dit Flow - er
      0
    2. via55 Messages postés 14395 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Bonsoir Florence

      Je maintiens que tes données étant dans un seul tableau avec 4 colonnes, une seule plage nommée qui contient toutes les colonnes suffit
      Le principe de RECHERCHEV est de rechercher dans la 1ere colonne de la plage (donc ta colonne A de references) et de renvoyer la valeur correspondante dans la colonne dont tu indiques le n° dans la formule donc RECHERCHEV(cellule de la ref dans facture;base;2;0) renverra ce qu'il a en colonne 2 (B ) de ta base, RECHERCHEV(cellule de la ref dans facture;base;3;0) cequ'il y a en colonne 3 (C) etc

      Et que pour dire ce qui ne fonctionne pas il faut voir un exemple allégé de ton fichier avec les formules que tu as mises, post cet exemple allégé (une vingtaine de lignes de la base + feuille facture) sur cjoint.com et reviens m'indiquer le lien fourni

      Dans l'attente

      Cdlmnt
      0
    3. Flow-er Messages postés 7 Statut Membre 19
       
      voici le lien pour le fichier en question.
      en feuille listingpdt, la matrice avec la ligne 2 vide
      en feuille facture le modèle de travail
      Bonne réception
      Florence

      https://www.cjoint.com/?3Jpwk7j9rGU
      0
  2. via55 Messages postés 14395 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Re,

    Il n'y avait tout simplement pas de formule en ligne 16 !!
    J'en ai profité pour simplifier avec une seule plage nommée pour la base
    et une plage dynamique pour les références (s'adapte à la longueur de la liste lorsque tu rajoutes des références) de manière à mettre une liste de choix dans la facture
    Explications dans le fichier :
    https://www.cjoint.com/?0Jpxs4BzL9g

    N'hésites pas à me demander s'il y a quelque chose que tu ne comprends pas

    Cdlmnt
    0
  3. Flow-er Messages postés 7 Statut Membre 19
     
    Bonjour,

    Le "problème" posé ne concernait pas la première ligne de la facture (ligne 16) : c'est exprès que je n'avais pas passé la formule dans cette ligne.

    Le problème est que quand je mets la référence de mon premier article, si celui-ci est en ligne 2 dans la matrice, ça ne marche pas -uniquement pour ce produit.
    C'est la raison pour laquelle : dans la matrice, j'ai inséré une ligne (qui est vide et en hauteur 3) afin que le premier article passe en ligne 3 et ça fonctionne.

    Je vais étudier la nouvelle "façon" proposée"
    Merci,
    Flow-er
    0
    1. via55 Messages postés 14395 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Bonjour Florence

      Ah Ok je n'avais pas compris, j'ai regardé ça un peu tard !
      Mais avec la liste dynamique que j'ai faite qui s'adapte en fonction du nombre d'articles de la base, il n'y a plus ce problème, le premier article s'affiche bien dans la liste déroulante de choix de la facture

      Bonne suite, tiens moi au courant

      Cdlmnt
      0