Extraire données tableau via validation liste

bonjour,

comment, dans le fichier joint, afficher dans les cases du tableau de gauche, en fonction du nom chois dans la case jaune, afficher les cellules respectives ?

34dann.xlsx (9.61 Ko)

Bonjour

Un essai à tester. Te convient-il ?

Bye !

42dann-v1.xlsm (23.03 Ko)

Merci, ça fonctionne très bien.

* Puis je l'étendre en ajoutant d'autres tableaux sur la droite et dessous?

* Peux tu m'expliquer ce bout de code :

Range(Cells(cell.Row - 1, cell.Column + 1), Cells(cell.Row + 1, cell.Column + 3)).Copy

*si les cellules colonne h et l des noms sont fusionnées sur 3 lignes, ça ne fonctionne pas. Sais tu pourquoi ?

merci

dann a écrit :

Puis je l'étendre en ajoutant d'autres tableaux sur la droite et dessous?

Oui on peut mais il faut ajouter dans le ‘’Range(‘’ ‘’) ci-après les plages où on va rechercher les noms :

Set cell = Range("H6:H14,L6:L14").Find(Target, lookat:=xlWhole)

* Peux tu m'expliquer ce bout de code :

Range(Cells(cell.Row - 1, cell.Column + 1), Cells(cell.Row + 1, cell.Column + 3)).Copy

Il permet de copier la partie du tableau que l’on va copier et coller près de ta cellule jaune.

Cell est la cellule où la macro trouve le prénom de la cellule jaune.

‘’Cell.row -1’’ donne le numéro de la ligne de la première cellule du tableau à copier.

‘’cell.Column + 1’’donnele numéro de la première colonne du tableau

Et ‘’Cells(cell.Row - 1, cell.Column + 1)’’donne la première cellule du tableau

De la même manière,

‘’ Cells(cell.Row + 1, cell.Column + 3) ‘’donne la dernière cellule du tableau, la plus en bas et à droite.

L’ensemble de l’instruction, devant ‘’.copy’’ définit le tableau.

si les cellules colonne h et l des noms sont fusionnées sur 3 lignes, ça ne fonctionne pas. Sais tu pourquoi ?

Et oui, les macros ont horreur des cellules fusionnées. Il faut s’en méfier comme de la peste…

OK ?

Bye !

re - salut,

j'ai tenté d'appliquer sur le début de mon fichier réel, mais sans succés !

si tu as 5' pour jeter un oeil.

je te remercie, je comprends pas d'où viens le hic

Bonjour, bonjour !

En respectant la règle TBTO, voici un code plus simple à coller dans le module de la feuille de calculs :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Rg As Range

    If Target.Address = "$B$6" Then
        Application.EnableEvents = False
                          Set Rg = [H5].CurrentRegion.Find(Target.Value)

        If Rg Is Nothing Then
            [C6:E8].ClearContents
        Else
            [C6:E8].Value = Rg.Offset(, 1).Resize(3, 3).Value
                   Set Rg = Nothing
        End If

        Application.EnableEvents = True
    End If
End Sub

Tests sur le premier classeur joint en .xlsx … Possible aussi sans code via cette formule de calculs :

=DECALER($H$1;EQUIV($B$6;SI(ESTERREUR(EQUIV($B$6;$H:$H;0));$L:$L;$H:$H);0)-7+LIGNE();COLONNE()+SI(ESTERREUR(EQUIV($B$6;$H:$H;0));2;-2))

Avec une organisation logique des données sur une seule colonne de noms, la formule en est simplifiée :

=DECALER($H$1;EQUIV($B$6;$H:$H;0)-7+LIGNE();COLONNE()-2)

salut,

j'arrive à le faire fonctionner sur le 1er fichier, mais sur le dernier, je n'y arrive pas .

Bonjour,

quelqu'un peut il me donner un coup de main pour le dernier fichier "liste recette test aide"que je n'arrive pas à faire fonctionner en adaptant la macro ?

merci

dann a écrit :

quelqu'un peut il me donner un coup de main

Le forum est là pour ça, chacun avec ses compétences...

Bye !

salut,

merci beaucoup, on y est à 99.9 %

je dis on, mais s'est plutôt tu !

le dernier truc à corriger est que tu copies la dernière ligne de la recette précédente au dessus des ingrédients.

j'ai tenté de mettre la ligne de copie cell , +1, mais ça bug au niveau de la copie de "technique".

à+

Nouvelle version à tester.

Cela va-t-il ?

ca y est, j'ai trouvé et ça marche.

merci beaucoup

à+

bonjour,

j'ai compris ce qu'il fallait modifier, tout est ok.

merci

Rechercher des sujets similaires à "extraire donnees tableau via validation liste"