Recherche de valeurs dans un tableau

mstecluque Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   -  
ccm81 Messages postés 11033 Statut Membre -
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. Excel-worker Messages postés 603 Statut Membre 58
     
    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. mstecluque Messages postés 73 Date d'inscription   Statut Membre Dernière intervention  
       
      https://www.cjoint.com/c/EGhjzGrn8WC
      Je n'ai mis que les colonnes pertinantes.
      Merci d'avance.
      0
      1. Excel-worker Messages postés 603 Statut Membre 58 > mstecluque Messages postés 73 Date d'inscription   Statut Membre Dernière intervention  
         
        Bonjour,

        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. mstecluque Messages postés 73 Date d'inscription   Statut Membre Dernière intervention  
       
      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. mstecluque Messages postés 73 Date d'inscription   Statut Membre Dernière intervention  
       
      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. Excel-worker Messages postés 603 Statut Membre 58
     
    Bonjour,

    A mettre en D3 et à étirer en bas :

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

    Cordialement,
    Excel-Worker
    0
    1. mstecluque Messages postés 73 Date d'inscription   Statut Membre Dernière intervention  
       
      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. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour à tous les deux

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

    Cdlmnt
    0
    1. mstecluque Messages postés 73 Date d'inscription   Statut Membre Dernière intervention  
       
      J'aurai voulu évité les macros, mais ça marche parfaitement, donc merci.
      0
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. mstecluque Messages postés 73 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci c'est super!
      0
  7. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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