Dernière valeur d'une colonne selon une ligne

Bonjour à tous,

après plusieurs recherches je n'arrive toujours pas à trouver une solution à mon problème. J'aimerais en écrivant un numéro de lot de campagne en case C7 de la feuille "Fiche de dispensation" trouver la dernière valeur de la ligne correspondant à ce numéro de lot dans le tableau de la feuille registre des préparations entre les colonnes K:AE.

J'ai fait plusieurs formules trouvées sur internet mais rien ne fonctionne......à moins que ça vienne de moi

Merci d'avance

16fiche-test.zip (577.68 Ko)

bonjour Frd86130,

si vous écrivez tel ou tel N° dans C7, vous voulez quel résultat ? 2 exemples ...

Salut Fred,
Salut BsAlv,

En renommant, non pas [C7] (si j'ai bien saisi) mais [E7] -> [LOT] et [G9] -> [ORDONNANCIER], cela devrait donner ceci.
La macro démarre au changement de valeur de [LOT].

Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim iRow%, iCol%
'
Application.EnableEvents = False
'
If Not Intersect(Target, [LOT]) Is Nothing Then
    If Target.Row > 1 And Target <> "" Then
        [ORDONNANCIER] = ""
        On Error Resume Next
        With Worksheets("Registre des préparations")
            iRow = .Columns(6).Find(what:=[LOT], lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlNext).Row
            If iRow > 0 Then
                [ORDONNANCIER] = .Cells(iRow, .Cells(iRow, Columns.Count).End(xlToLeft).Column)
            Else
                MsgBox "N° de lot inconnu!", vbInformation + vbOKOnly, "CHU Poitiers - Info"
            End If
        End With
        On Error GoTo 0
    End If
End If
'
Application.EnableEvents = True
'
End Sub

A+

18chu.xlsm (600.80 Ko)

Merci Curulis et BsAlv,

Je parlais de la feuille appelée "fiche" d'où C7 désolé ma faute. Si possible j'aimerais juste utiliser des formules et non pas de VBA (si possible en tout cas).

Par exemple, si j'écris en C7 de la feuille "fiche" (donc le n° de lot) la valeur 010209075 j'aimerais pouvoir retrouver la valeur 785480 du registre des préparations dans la cellule de la I7 de la feuille "fiche".

Si j'écris en C7 de la feuille "fiche" (donc le n° de lot) la valeur 062809204 j'aimerais pouvoir retrouver la valeur 7522740 du registre des préparations dans la cellule de la I7 de la feuille "fiche".

J'ai certainement mal interprété mais, bon, suffit de changer les cellules nommées de feuille et tout s'arrange!

28chu.xlsm (601.42 Ko)

Salut Fred,

en piochant, j'ai finalement fignolé cette formule à coller en [I7].

=RECHERCHE(9^9;INDIRECT("'Registre des préparations'!K" & EQUIV(C7;'Registre des préparations'!F:F;0) & ":AE" & EQUIV(C7;'Registre des préparations'!F:F;0)))

Devrait être bon!

A+

Merci à toi Curulis,

Ta macro fonctionne très bien. Par curiosité je vais voir ce que donne ta formule.

Je connais rien aux macros donc si tu as des bon tutos clairs je suis preneur car je comprend la logique mais la rédaction je sais pas

Salut Fred,

ça va être difficile de t'expliquer ma façon de penser tordue et une pratique de, hum... plus de 40 ans!
Sinon, j'ai commencé en piochant des gros bouquins sur VB de l'époque.
Quant à Excel, par essais, erreurs, lecture, re-lecture et recherche sur Google.
Y'a pas de miracle!

image

A+

Bonsoir,

si vous aviez eu une version d'Excel plus récente pour simplifier la formule de curulis vous auriez pu utiliser la fonction LET :
=LET(LRD;EQUIV(C7;'Registre des préparations'!F:F;0);RECHERCHE(9^9;INDIRECT("'Registre des préparations'!K" &LRD & ":AE" & LRD)))

Les deux premiers arguments sont le nom que l'on donne à la formule, et ensuite le calcul correspondant, ensuite on met la formule "finale" par exemple où l'on remplace le calcul voulu avec le nom donné au début...

Juste un petit clin d'œil à JFL pour lui montrer que je commence à travailler ! Mais combien de temps cela va durer ?

Comme curulis, beaucoup d'entre nous avons appris en étant curieux d'un peu de partout ! Mais j'ajouterai à Google, l'adresse de ce site !
Depuis que je l'ai découvert en 2014... que de chemin parcouru... Il y a aussi le site Free de Boisgontier Jacques. C'est déjà un très bon début en VBA et formule par contre les toutes dernières versions d'Excel ne sont pas utilisées...

@ bientôt

LouReeD

Et je vous sers la formule que BsAlv m'a glissée à l'oreille!

=RECHERCHE(9^9;DECALER('Registre des préparations'!$K$1;EQUIV(Fiche!C7;'Registre des préparations'!F:F;0)-1;;;34))

Toujours pas compris le -1 et le 34..

Trop fort, le camarade!

le -1 c'est pour éviter de commencer à 2 pour EQUIV vu que ce dernier cible la colonne entière avec des données qui commence en 2, donc la première valeur sera ligne 2-1=1, avec le DECALER partant de K1, on le décale d'une ligne on prend donc la ligne 2 !

Le 34 c'est le décalage en colonne, non ?

Quand je vois le "temps" que j'ai mis à comprendre le fonctionnement des formules à la "tulipe_4", mais surtout comment je suis obligé de reprendre "à 0" à chaque fois... Quand je vois comment avec Power Querry (pour sortir des sanitaires...) résous des problèmes....

Je me souviens d'une réponse que j'ai fait en VBA au "début" de Power, la longueur du code avec des boucles imbriquées etc... et une solution PQ, j'ai pleuré... mais content, car à l'actualisation de PQ le temps de mise à jour était "équivalent" au lancement du code... mais au niveau "entretien" y a pas photo !, si la source change, pour l'un juste des références de colonnes à faire éventuellement, pour l'autre il faut se souvenir du fonctionnement du code, des variables etc...

@ bientôt

LouReeD

Rechercher des sujets similaires à "derniere valeur colonne ligne"