Selection cellule intersection ligne et colonne variable

Bonjour à tous

Voilà mon problème

Sur la feuille 1 je renseigne 2 cellules

Soit en B1 "Le nom"

Soit en B2 "La catégorie"

Dans la feuille 2 j'ai un tableau A1:G29

Dans la première colonne il y a tout les noms

Dans la première ligne il y a toutes les catégories.

Je souhaiterai en fonction du nom et de la catégorie renseigné en feuille1, rechercher sur la feuille 2 la cellule à l'intersection des 2 variable dans le tableau.

Exemple,

Si dans la feuille 1 je renseigne le nom "Julien" et choisi la catégorie "Poids" il faut dans la feuille 2 que la cellule à l'intersection de la ligne "Julien" et de la colonne "Poids" se selectionne.

Voir le fichier joint.

J'ai bien sur essayé de chercher par moi même, mais je ne réussi pas à trouver la logique de raisonnement pour VBA.

Pourriez-vous m'aider?

Cordialement

144test.xlsx (9.54 Ko)

Bonjour,

Une 1ère. proposition

Cdlt

573test.xlsx (11.86 Ko)

Bonjour

Merci de ta réponse, cela pourrait correspondre mais il me faudrait la solution en code vba.

Lors d'un clic sur un bouton en feuil1, qu'en feuille 2 la cellule correspondante s'affiche.

PS: Ta formule m'a intrigué. Quelle est la différence avec la fonction Index et comment l'a tu programmée?

Cordialement

Bonjour schmitx,

Salutations Jean-Eric,

Une proposition avec VBA

696test.xlsm (18.53 Ko)

A+

Bonjour,

je me suis amusé à nommer l'ensemble des noms et catégories (voir gestionnaire de noms) et j'ai joué avec la fonction indirect() et l'intersection de 2 plages. Dans l'exemple fourni pour Isa et Poids, on récupère l'adresse de l’intersection de la colonne Poids et de la ligne Isa.

=INDIRECT(B1) INDIRECT(B2)

As-tu compris ?

Cdlt.

nb: dans la formule citée, il y a un espace entre les 2 indirec().

Bonsoir à vous : )

Merci Jean Eric pour ton explication sur la fonction indirect

Ca m'a bien éclairé sur son utilisation.

Surement qu'un jour j'en aurai besoin

Et merci Frangy puisque ta proposition de code vba a résolu mon problème

Très bon site internet

Bonjour à tous,

Je reviens sur ce poste qui m'a beaucoup aidé car j'avais une demande similaire.

Cependant je beug un peu car lors de ma recherche en colonne je souhaite rechercher à partir de 2 colonnes car j'ai 2 critères à respecter.

Si vous avez une solution, voici le code que j'ai adapté à ma situation :

Dim WsS As Worksheet, WsC As Worksheet

Dim C As Range, D As Range, E As Range

Set WsS = Worksheets("peuimporte")

Set WsC = Worksheets("peuimporte2")

If WsS.Range("J8") = "" Or WsS.Range("G7") = "" Or WsS.Range("B8") = "" Then Exit Sub

Set C = WsC.Columns(5).Find(WsS.Range("J8"), , xlValues, xlWhole)

Set E = WsC.Columns(8).Find(WsS.Range("B8"), , xlValues, xlWhole) 'ce que j'ai ajouté pour mon deuxième critère de recherche

If Not E Is Nothing Then

Set D = WsC.Rows(3).Find(WsS.Range("G7"), , xlValues, xlWhole)

If Not D Is Nothing Then

WsC.Activate

WsC.Cells((C & E).Row, D.Column).Select 'ce que j'ai modifié en espérant que ce soit bon mais j'ai une erreur qui s'affiche

End If

End If

Set C = Nothing: Set D = Nothing: Set WsS = Nothing: Set WsC = Nothing

Selection.Copy

Sheets("peuimporte").Activate

Range("G8").Select

ActiveSheet.Paste

End sub

Merci pour toutes réponses

Bonjour,

Bien que n'étant pas sûr d'avoir compris la finalité de ton programme, voici ton code modifié :

Dim WsS As Worksheet, WsC As Worksheet
Dim C As Range, D As Range, E As Range
    Set WsS = Worksheets("peuimporte")
    Set WsC = Worksheets("peuimporte2")
    If WsS.Range("J8") = "" Or WsS.Range("G7") = "" Or WsS.Range("B8") = "" Then Exit Sub
    Set C = WsC.Columns(5).Find(WsS.Range("J8"), , xlValues, xlWhole)
    If Not C Is Nothing Then
        Set E = WsC.Columns(8).Find(WsS.Range("B8"), , xlValues, xlWhole)
        If Not E Is Nothing Then
            Set D = WsC.Rows(3).Find(WsS.Range("G7"), , xlValues, xlWhole)
            If Not D Is Nothing Then
                WsC.Range(WsC.Cells(C.Row, D.Column), WsC.Cells(E.Row, D.Column)).Copy WsS.Range("G8")
            End If
        End If
    End If
    Set C = Nothing: Set D = Nothing: Set E = Nothing: Set WsS = Nothing: Set WsC = Nothing
End Sub

A+

Dsl si c'est pas claire.... et merci pour cette réponse

Je viens de tester le code et ça ne me trouve pas la cellule désirée, j'essaye de comprendre le pb mais je ne comprends pas dans ton code le ".Copy WsS.Range("G8")"

Aaaah oui! Je pense avoir trouvé pourquoi j'ai un pb qui est dû au fait que je n'ai pas précisé qu'il y a des doublons dans les deux colonnes de recherches et que lorsque le premier critère dans la colonne 1 est trouvé il faut effectué la recherche du 2ème critère dans la cdolonne 2 mais sur la même ligne où le critère 1 a été trouvé.

Je ne sais pas si c'est plus claire, peut être faut-il alors modifier le code de telle sorte à lui dire qu'en partant du critère 1 il se déplace de tant de colonne pour trouver le critère 2 ? C'est une idée...

Avec un exemple concret accompagné de quelques explications, ce serait plus facile ....

A+

Bonjour,

un fichier anonymisé aiderait...

P.

Je suis d'accord, vous trouverez le fichier en PJ et les explications à l'intérieur.

Si ce n'est pas claire je peux développer d'avantage.

Merci de prendre de votre temps pour essayer de me comprendre.

Bonjour,

ceci te convient ?

P.

L'exemple n'était pas de trop

Voici ton fichier en retour avec une solution VBA.

A+

Bonjour,

Merci à vous 2, Frangy et Patrick. Cela fonctionne très bien et a résolu mon problème. Je préfère tout de même le code de Frangy qui reprenait le mien et je voulais vraiment du VBA et pas de formule comme ce que tu a proposé Patrick mais ton exemple fonctionne très bien aussi donc un grand MERCI encore une fois!

Bonne journée et à bientôt.

Bonjour,

J'aimerais vous resolliciter pour mon userform cette fois ci.

Il était composé au départ de 4 Combobox mais je désire maintenant les relier avec des conditions. J'ai essayé plusieurs "méthodes" (ce que j'ai pu trouver sur internet) mais rien. Je bloque complètement donc si vous avez des idées, merci d'avance.

(Le Combobox1 est une liste déroulante, je voudrais après avoir effectué un choix dans cette liste que le Combobox2 renvoi ce qui correspond et ainsi de suite pour le Combobox3 et 4. Faudrait-il peut être remplacer les Combobox2, 3 et 4 en Textbox dans ce cas ? C'est une idée que je n'ai pas réussis à mettre sous forme de code non plus.)

Cordialement.

Bonjour,

Tu peux t'inspirer des exemples de listes en cascade à plusieurs niveaux du site de Jacques Boisgontier

http://boisgontierjacques.free.fr/pages_site/listes_cascade.htm#Liste3Niveaux

A+

Bonjour,

Merci pour la référence mais il y a plusieurs inscriptions que je ne comprends pas comme : mondico, Scripting.Dictionary et la variable C qui n'est pas déclaré donc je n'arrive pas à comprendre son code pour l'appliquer à mon exemple.

Cordialement

Bonjour,

De quel code parles-tu ? Le site de Jacques Boisgontier n'en manque pas

Et de quel exemple ? Je n'ai vu aucun exemple avec des Combobox ou autre TextBox.

Si tu souhaites des explications sur les dictionnaires, Jacques Boisgontier a là aussi travaillé pour toi :

http://boisgontierjacques.free.fr/pages_site/Dictionnaire.htm

A+

Rechercher des sujets similaires à "selection intersection ligne colonne variable"