Trouver des réponses dans un tableau en VBA

Salut le forum,

j'aimerais savoir comment, à partir d'un tableau, je peux trouver des valeurs associées.

Mon fichier est beaucoup plus explicite.

https://www.excel-pratique.com/~files/doc/LMO8iTableau.xls

Merci pour votre aide.

Bonjour

Voici ton fichier

https://www.excel-pratique.com/~files/doc/PyUC1Tableau.xls

Edit changement du fichier, j'ai mis une zone déroulante en B17

Salut CB60,

merci beaucoup pour ta réponse mais dans le titre, je demandais en VBA.

Re

désolé de ne pas avoir répondu correctement, La tu a la solution à ton probléme par formule, il te suffit de les convertir en VBA.

Sub Macro3()

    Range("B18").FormulaArray = _
        "=INDEX(R[-17]C[-1]:R[-7]C[-1],MIN(IF(R[-16]C:R[-7]C[7]=R[-1]C,ROW(R[-16]C:R[-7]C[7]))))"
    Range("B19").FormulaArray = _
        "=INDEX(R[-18]C[-1]:R[-18]C[7],MAX(IF(R[-17]C:R[-8]C[7]=R[-2]C,COLUMN(R[-17]C:R[-8]C[7]))))"
       Range("B15").FormulaR1C1 = _
        "=INDEX(OFFSET(R2C1:R11C1,,MATCH(R14C2,R1C2:R1C9,0)),MATCH(R13C2,R2C1:R11C1,0))"

End Sub

Bonsoir,

PAs beaucoup de temps pour me pencher sur toute ta demande mais voici déjà une macro pour trouver la valeur en cellule B15

Sub chercher()
'MAcro par Dan pour EricF -XL Pratique - 21/12/08
Application.ScreenUpdating = False
Dim ligeqp As Byte, coldiv As Byte
On Error Resume Next
ligeqp = Application.WorksheetFunction.Match(Range("B13"), Range("A2:A11"), 0)
coldiv = Application.WorksheetFunction.Match(Range("B14"), Range("B1:I1"), 0)
Range("B15") = Cells(ligeqp + 1, coldiv + 1)
End Sub

Amicalement

Dan

RE

Voici ton fichier avec les formules convertis en macro.

J'ai nommé l'ensemble des cellules

https://www.excel-pratique.com/~files/doc/Tableau1.zip

re,

Pour les cellules B18 et B19.

Sub cherche()
'MAcro par Dan pour EricF -XL Pratique - 21/12/08
If Len(Range("B17")) = 4 Then
Range("B18") = Range("A" & Right(Range("B17"), 1) + 1)
Else:
Range("B18") = Left(Range("A18"), 6) & (Right(Range("B17"), 2))
End If
Range("B19") = Left(Range("A19"), 8) & Mid(Range("B17"), 3, 1)
End Sub

Tu peux bien entendu combiner les deux macros en une seule.

Amicalement

Dan

Salut le forum

Eric, résolu ou non-résolu ?

Pas de réponse de ta part...

Joyeuses Fêtes à tous

Mytå

Salut Mytå,

je n'ai pas vraiment eu le temps de vérifier la 2e partie de la réponse. Je m'occupe de ça ce soir ou demain.

Salut le forum,

le temps des Fêtes maintenant entamé, j'ai pu consacrer un peu de temps à ce problème.

Finalement, la première partie fonctionne très bien mais la deuxième, pas du tout.

https://www.excel-pratique.com/~files/doc/0Bg1eTableau.xls

Bonjour

Les deux macros sur le même Fichier

https://www.excel-pratique.com/~files/doc/Tableau11.zip

Re,

Ton deuxième fichier est différent du premier donc normal que les propositions ne fonctionnent pas.

Dis nous ce que dois contenir les cellules comprises entre B2 et I11. Là tu mets une fois Eq.. et une autre fois autre chose.

De plus la macro que je t'ai mise plus haut n'est pas la même dans ton fichier. Pas grave en soit mais la ligne Dim ligne As Byte, colonne As Byte ne sert à rien.

Si tu acceptes par formule, tu peux aussi adopter la solution proposée par CB60 qui fonctionne.

A te relire

Dan

Salut le forum

Eric, dis-toi qu'une formule sera toujours meilleur qu'une macro...

Mytå

Re,

Essaye ce code pour la deuxième partie :

Sub test()
'MAcro par Dan pour EricF -XL Pratique - 29/12/08
Dim c As Range
Set c = Range("B2:I11").Find(Range("B17"), LookIn:=xlValues)
Range("B18") = Range("A" & c.Row)
Range("B19") = Cells(1, c.Column)
End Sub

Tu peux l'ajouter à la suite du code déjà en place dans ton fichier.

Sinon comme Myta, pourquoi utiliser une macro dans ton cas plutôt qu'une formule.

Amicalement

Dan

Salut CB60, Dan et Mytå,

je ne souhaitais pas utiliser de formules parce qu'au départ, la feuille qui les contient n'existe pas. Si j'utilise une formule dans cette feuille, je dois la créer en même temps que je crée la feuille alors je me suis dit qu'avec du code, ça serait plus simple mais il semble que non.

Je vous remercie donc tous les trois pour le coup de main. Peu importe la méthode adoptée, elle fonctionne.

Eric

si tu utilise la macro, elle t'écriras la formule dans ta cellule, que se soit sur n'importe quel classeur.

Salut CB60,

ce n'est pas tout à fait exact puisque je triche de cette façon :

Range("B18").FormulaArray = "=INDEX(Equi1,MIN(IF(choix=R[-1]C,ROW(choix))))"
Range("B19").FormulaArray = "=INDEX(divi1,MAX(IF(choix=R[-2]C,COLUMN(choix))))"
x = Range("B18").Value
y = Range("B19").Value
Range("B18").Value = x
Range("B19").Value = y
Rechercher des sujets similaires à "trouver reponses tableau vba"