Récupérer une valeur avec deux conditions

Bonujour à tous,

Nouvelles questions pour la population excelienne!!!

J'ai besoin de récupérer une valeur en fonction de la famille selectionné à l'aide d'une liste (ex: A1) et d'une désignation.

Par expemple je choisi la famille C3 en face de la désignation "ma" je voudrais la valeur renseigné sur une autre feuille.

Merci encore et pour tout.

Cordialement

Nannek

50test.xlsx (11.40 Ko)

bonjour

une proposition

144nannnek2.xlsx (11.29 Ko)

cordialement

tulipe_4 a écrit :

bonjour

une proposition

cordialement

Bonjour Tulipe,

J'ai une question dans ta formule

=SIERREUR(RECHERCHEV(A9;CHOISIR(EQUIV(B$1;valeurs!A$3:L$3;0);valeurs!A$4:E$13;;;;;valeurs!$F4:K$13;;;;;;valeurs!L$4:S$13);(1+DROITE(D$1)*1);0);"")

Les points virgules successif dans CHOISIR () correspondent à quoi? c'est volontaire ou c'est des espace que je peu complèter?

Merci en tout cas

Nannek

Je viens de tester tulipe, votre formule ne fonctionne que pour une seule famille, si je change de lettre ca ne prend pas en compte.

re

je t'invite a cliquer sur fx dela partie CHOISIR

tu vas y voir que

equiv renvoie une valeur : exemple 3

du coup CHOISIR va chercher la valeur n°3 >>>a la 3eme point virgule ; ça marche un peu comme INDEX sauf que l'ont peut recuperer n'importe quoi (plage ;nom; fonction.......)

donc pas touche sinon tu decaleras tout

lors de l'adaptation note chaque equiv A;B;C;D afin de pouvoir assigner une valeur (en l'occurence la plage correspondante)

A noter qu'il aurait eté possible avec DECALER mais c'est plus sportif de determiner le nb colonne de chaque plage; quoique (nb.si(b$3:x$3;a$1&"*"); de plus ,le fameux volatile ..........

cordialement

Bonjour Nannek, Tulipe, bonjour le forum,

Une proposition VBA. J'ai un peu changé la structure du tableau dans l'onglet valeurs pour simplifier les codes... La liste de validation de données en D1 s'adapte a la famille choisie.

Sélectionne une famille en B1 puis un choix dans D1...

Le code :

Private COLD As Byte 'déclare la variable COLD (COLonne du Début)
Private COLF As Byte 'déclare la variable COLF (COLonne de Fin)
Private TEST As Boolean 'déclare la variable TEST

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim I As Byte 'déclare la variable I (Incrément)
Dim L As String 'déclare la variable L (Liste)

Set O = Worksheets("valeurs") 'définit l'onglet O
Select Case Target.Address 'agit en fonction de l'adresse de la cellule modifiée
    Case "$B$1" 'cas B1
        Range("A8").CurrentRegion.Offset(1, 0).ClearContents 'efface d'eventuelles anciennes données
        COLD = O.Rows(3).Find(Target.Value, , xlValues, xlWhole).Column 'définit la colonne de début (recherche la valeur de la cellule B1 dans la ligne 3 de l'onglet O et récupère sa colonne)
        COLF = O.Cells(3, COLD).End(xlToRight).Column 'définit la colonne de fin COLF
        For I = COLD + 1 To COLF 'bouce sur toutes les colonnes de COLD + 1 à COLF
            L = IIf(L = "", O.Cells(3, I), L & "," & O.Cells(3, I)) 'définit la liste L
        Next I 'prochaine colonne de la boucle
        With Range("D1") 'prend en compte de la cellule D1
            With .Validation 'prend en compte la validation de données de la cellule D1
                .Delete 'suppruime la validation de données existante
                .Add xlValidateList, Formula1:=L 'définit la liste L comme liste de validation de données
            End With 'fin de la prise en compte de la validation de données de la cellule D1
            TEST = True 'définit la variable TEST
            .Value = "" 'efface le contenu de la cellule D1
        End With 'fin de la prise en compte de la cellule D1
    Case "$D$1" 'cas D1
        If TEST = True Then TEST = False: Exit Sub 'si TEST est [Vrai] redéfinit TEST à [Faux] et sort de la procédure
        O.Range(O.Cells(4, COLD), O.Cells(Application.Rows.Count, COLD).End(xlUp)).Copy Range("A9") 'récupere la famille à partir de la A9
        COLF = O.Rows(3).Find(Target.Value, , xlValues, xlWhole).Column 'définit la colonne COLF(recherche la valeur de la cellule D1 dans la ligne 3 de l'onglet O et récupère sa colonne)
        O.Range(O.Cells(4, COLF), O.Cells(Application.Rows.Count, COLF).End(xlUp)).Copy Range("B9") 'récupere les données à partir de B9
End Select 'fin de l'action en fonction de l'adresse de la cellule modifiée
TEST = False 'réinitialise la variable TEST
End Sub

Le fichier :

30nannek-v01.xlsm (21.57 Ko)

re

salut thau thème

a nannek tu as du te gourrer car je viens de tester ;as changé la valeur de validation ; parce que si tu cherches a la 4eme colonne d'une plage definie a 3 >>>>plouf

cordiamement

Pardon la formule fonctionne, mais je n'ai pas la possibilité d'ajouter des colonnes si besoin.

C'est mon erreur j'aurais du le préciser.

re

le vba de thau theme y repond

mais avec decaler .....

38nannnek22.xlsx (13.51 Ko)

cordialement

Au top tout fonctionne, j'ai testé le VBA et avec décalé dans les deux cas c'est parfait!

Merci beaucoup à vous!

J'ai une petite question annodine, ou vous avez apris tout ca?

Je me débrouille un peu en VBA et excel mais si vous avez des conseils pour en apprendre plus je suis preneur.

Mes amitiés excelienne!

Nannek

Re,

Pour ma part j'ai pratiquement tout appris dans différents forums où trainent toujours des super balèzes qui m'ont fait progresser.

Rechercher des sujets similaires à "recuperer valeur deux conditions"