Recherche de valeurs dans un tableau

Bonjour à tous,

Je rencontre un nouveau problème avec excel...
Je voudrais faire une recherche qui pour une case de mon tableau cherche sa dernière occurence dans les lignes précédentes, si occurence il y a.
J'ai tenté la rechechev, l'index(equiv) : le problème que je rencontre est le même, ça recherche dans toutes les lignes du tableau et prend la première trouvée.

SI quelqu'un peut m'aider, merci d'avance.

6 réponses

  1. Bonjour,

    Merci de nous transmettre un fichier avec exemple pour une meilleur compréhension.

    Tu pourras l'héberger ici : www.cjoint.com et nous fournir le lien donné.

    Cordialement.
    0
    1. @mstecluqueBonjour,

      Je ne comprends pas ce que tu cherche, peux-tu m'expliquer par des exemples les valeurs que tu recherche dans la colonne D. Merci
      0
    2. Evidemment, la formule de la colonne D n'était plus la bonne quand j'ai copier mon fichier.
      Ca complique la compréhension...

      Du coup petite explication de mon doc :
      Une commande (colonne A) peut être livrée en une ou plusieurs fois.
      En colonne B, on a la quantité totale à produire.
      En colonne C, on a la quantité livrée à un moment t.
      En colonne D on a la quantité qu'il reste à livrer.

      Et le bon fichier, avec à gauche ce qui devrait marcher, et à droite, le résultat espéré.
      https://www.cjoint.com/c/EGhlFbjSO4C

      Merci d'avance.
      0
    3. Et comme je suis vraiment douée, ça fait donc deux fois que je mets le fichier sur cjoint, sans enregistrer avant...
      https://www.cjoint.com/c/EGhlIWYmURC
      0
  2. Bonjour,

    A mettre en D3 et à étirer en bas :

    =SI(A3=A2;D2-C3;B3-C3)

    Cordialement,
    Excel-Worker
    0
    1. C'est gentil mais les lignes concernant une même commande ne sont regroupées que dans mon exemple. En réalité j'ai des milliers de lignes et une commande peut avoir des occurences n'importe où.
      Et non je ne peux pas trier les commandes pour qu'elles soient regroupées, ça serait trop simple sinon. Les lignes sont classées selon la date de facturation, non pertinantes pour l'exemple, donc inexistante dans mon doc.
      Merci quand même
      0
  3. Bonjour à tous les deux

    Peut être en passant par une macro
    http://www.cjoint.com/c/EGhpIU1Zqmg

    Cdlmnt
    0
    1. J'aurai voulu évité les macros, mais ça marche parfaitement, donc merci.
      0
  4. Je ne sais pas si on peut vraiment éviter de passer par vba
    Une autre possibilité, toujours par macro, et peut être un peu plus rapide, il faut voir ce que ça donne sur un gros fichier

    Public Sub RALF()
    Dim li As Long, lifin As Long, comm As String, lili As Long
    Dim obj As Object, plage As Range
    Dim TR(), nbliT As Long, t As Single
    t = Timer
    With ActiveSheet
      lifin = .Range(coCO & Rows.Count).End(xlUp).Row
      nbliT = lifin - lideb + 1
      ReDim TR(1 To nbliT)
      For li = lideb To lifin
        comm = .Range(coCO & li).Value
        Set plage = .Range(coCO & lideb - 1 & ":" & coCO & li - 1)
        Set obj = plage.Find(comm, , , xlWhole, , xlPrevious)
        If obj Is Nothing Then
          TR(li - 1) = .Range(coQP & li).Value - .Range(coQF & li).Value
        Else
          lili = obj.Row
          TR(li - 1) = TR(lili - 1) - .Range(coQF & li).Value
        End If
      Next li
      .Range(coRS & lideb).Resize(nbliT, 1) = Application.Transpose(TR)
    End With
    MsgBox "temps mis " & Timer - t & "s"
    End Sub

    Bonne journée
    0
    1. Plutôt que de traiter le fichier en totalité, on peut effectuer le calcul du RAL au fur et à mesure de la saisie des 3 colonnes commande, QP et QF
      http://www.cjoint.com/c/EGilcuFg1SG
      0
      1. Merci c'est super!
        0
    2. De rien,

      Si c'est fini, peux mettre le sujet à résolu (en dessous du titre de ton premier message)

      Bon après midi
      0