Recherche de cellule en fonction d'une autre

Bonjour a tous,

Je suis a la recherche d'une fonction (de LA fonction ) qui me permet de trouver la valeur d'une cellule en fonction d'une autre.

Dans mon exemple, j'ai besoin de rechercher la valeur de la cellule de la colonne H ligne 5.

Ma démarche est donc de rechercher la cellule "Equipe A" dans la feuille "Net", puis de chercher au dessus de cette cellule la cellule "D", puis de lui indiquer la colonne H

J'ai trouvé quelque chose s'y approchant avec la fonction RECHERCHEV mais celle-ci utilise une plage de données. Hors dans mon cas, le fichier "net" n'est pas fixe. C'est a dire que le nombre de lettres au dessus des cellules "Equipe" varie.

Avez vous un début de solution à m'apporter ?

Merci de votre aide

50essai.xlsm (19.23 Ko)

Bonsoir,

En H5 il y a C dans une colonne qui débute en H2 par Equipe C

Il faut donc commencer par réviser tes spécifications.

Ensuite ta feuille Net n'est pas conçue pour la recherche... Tu rajoutes une colonne avant A pour y mentionner l'équipe, que tu répètes sur toutes les lignes correspondant à l'équipe, tu élimines les lignes vides, si possible tu mets une ligne d'en-tête. Et là tu pourras chercher avec des formules simples...

Cordialement.

Bonsoir MFerrand,

et merci pour ta réponse rapide.

Je viens de vérifier mes spécifications. Pour moi, en H5, il y a "4".

S'il suffisait de modifier le fichier pour utiliser des formules simples, je n'aurai pas ouvert ce topic...

Mais tu as raison, je me suis sans doute mal exprimé.

Dans l'onglet "net", il s'agit d'un fichier importé quotidiennement qui évolue (d'ou le nombre de lignes au dessus de chaque cellule "Equipe" qui n'est pas fixe)

Je reformule donc ma question, existe-t'il une fonction type RECHERCHEV pour rechercher des cellules comme spécifié dans l’énoncé du problème.

Cordialement

Bonjour,

S'il suffisait de modifier le fichier pour utiliser des formules simples, je n'aurai pas ouvert ce topic...

Salut h2so4 !

Reprenons ! Tu disais :

Dans mon exemple, j'ai besoin de rechercher la valeur de la cellule de la colonne H ligne 5.

Ce qui implique que tu recherches la valeur de H5 ailleurs ! Tu poursuis :

Ma démarche est donc de rechercher la cellule "Equipe A" dans la feuille "Net",

Je passe la suite, là tu précises que tu recherches dans la feuille Net, et tu recherches une valeur qui est stipulée ailleurs, comme il n'y a que deux feuilles, H5 ne se trouvant donc pas dans Net se trouve dans l'autre...

Alors pour éviter toute ambiguïté, tu précises :

1) l'emplacement exact de la valeur cherchée (feuille, cellule)

2) la zone de recherche (feuille et référence complète de la table

3) si ce n'est pas trop demander, ce que doit être le résultat de la recherche !

4) éventuellement où doit se placer le résultat !!

Et je confirmes qu'il suffit parfois de modifier un tableau pour pouvoir utiliser des formules simples !

Ton tableau étant importé cela ne change rien à l'affaire ! Rien n'empêche de le modifier d'une part, rien n'empêche non plus de ne pas trouver ce qu'on y cherche sans le modifier, mais ce ne sera vraisembleblement pas avec des formules simples mais plus généralement en passant par VBA.

Il t'appartient de préciser ta question, et si elle est précise tu obtiendras quantité de réponses !

Cordialement.

@MFerrand : Mea culpa, la valeur dans la cellule H5 était, pour moi, situé dans l'onglet "Net" alors que toi tu regardais dans l'onglet "Atelier". Je ne l'avais pas précisé et mal expliqué.

@h2so4 et @MFerrand : excusez moi si mes paroles vous ont parus blessantes.

Je reprends donc :

La feuille "Atelier" est une compilation des données recueillis dans l'onglet "Net"

Je prends un exemple :

Je souhaiterai indiquer dans la cellule "Atelier, C3", la somme des cellules "Net, G4" + "Net, I8" (et toujours ceux là (la 7émé colonne de la ligne commençant par "C" + la 9eme colonne de la ligne commençant par "H")

La fonction RECHERCHEV pourrait correspondre :

=RECHERCHEV("C";Net!A2:M13;7;FAUX)+RECHERCHEV("h";Net!A2:M13;9;FAUX)

Mais celle-ci fait référence à une plage de données, et le nombre et l'intitulé des lignes dans cette plage de données est aléatoire.

Explication : comme je le disais précédemment, l'onglet "Net" est un fichier de données importé quotidiennement.

La plage de données "Net!A2:M13" correspond au données de l'équipe A (cellule "Net, A15). Hors si le nombre de lignes au dessus de cette cellule est plus petit (la plage de données étant la même) je me retrouve a chercher des valeurs de l’équipe B (onglet "Net" dans cette plage de cellule.

J’espère avoir était, cette fois, suffisamment précis dans mes explications.

Cordialement

14essai.xlsm (19.58 Ko)

bonsoir,

voici une formule pour l'équipe A

=INDEX(DECALER(Net!$C$1;0;0;EQUIV("equipe A";Net!A:A;0)-1;1);EQUIV(B3;DECALER(Net!$A$1;0;0;EQUIV("equipe A";Net!A:A;0);1);0);1)+INDEX(DECALER(Net!$H$1;0;0;EQUIV("equipe A";Net!A:A;0)-1;1);EQUIV(B3;DECALER(Net!$A$1;0;0;EQUIV("equipe A";Net!A:A;0);1);0);1)

et voici une macro possible pour traiter toutes les équipes

Sub aargh()
    Set wsn = Sheets("net")
    dln = wsn.Cells(Rows.Count, 1).End(xlUp).Row
    Set pl = wsn.Range("A1:A" & dln)
    Set wsa = Sheets("atelier")
    dla = wsa.Cells(Rows.Count, 2).End(xlUp).Row
    With wsa
        lig = 2: ilig = lig
        col = 2
        done = False
        le = 0
        While Not done
            dle = .Cells(lig, col).End(xlDown).Row
            fl = le + 1
            Set re = pl.Find(.Cells(lig, col), lookat:=xlWhole)
            If Not re Is Nothing Then
                le = re.Row
                ll = le - 1
                Set pla = wsn.Range("A" & fl & ":A" & ll)
                For i = lig + 1 To dle
                    Set re = pla.Find(.Cells(i, col), lookat:=xlWhole)
                    If Not re Is Nothing Then
                        .Cells(i, col + 1) = re.Offset(, 3) + re.Offset(, 8)
                    End If
                Next i
            End If
            col = col + 3
            lig = ilig
            If .Cells(lig, col) = "" Then
                col = 2
                Set re = .Range("B" & lig + 1 & ":B" & dla).Find("Equipe", lookat:=xlPart)
                If Not re Is Nothing Then
                    lig = re.Row
                    ilig = lig
                Else
                    done = True
                End If
            End If
        Wend
    End With
End Sub

Pour C3, (sur Atelier), en regard de la valeur "A" (sous Equipe A), on va aller chercher "C" et "H" dans la partie Equipe A de Net pour renvoyer les valeurs additionnées trouvées dans les colonnes 7 et 9 des lignes trouvées... !

Cela devient quelque peu ésotérique ! Mais alors, pour la cellule en dessous, en regard de la valeur "B", on va aller chercher quoi ?

Et pour la suivante en regard de "C" ?

Je ne cherche pas d'explication transcendentale , on peut toujours traiter à la manière d'un jeu sans avoir besoin de signification particulière, mais sans logique d'ensemble cela perd tout intérêt.

Jusqu'à présent je n'en vois pas...

Ceci dit, selon tes derniers propos :

le nombre et l'intitulé des lignes dans cette plage de données est aléatoire.

je serais enclin à adopter l'idée de remettre en forme cette feuille avant d'attaquer la recherche.

Et s'il y a une logique d'ensemble dans tout ça, elle pourrait modifier les possibilités offertes.

Rechercher des sujets similaires à "recherche fonction"