XL 2019 Afficher les données d'un tableau selon la correspondance égale ou supérieure la plus proche des données d'un autre tableau

AenyeOne

XLDnaute Nouveau
Bonjour à tous

Comme le très long titre l'indique :) je cherche le moyen de comparer les valeurs égales ou supérieures proches de deux colonnes d'un tableau à deux autres valeurs de deux colonnes d'un autre tableau et de pouvoir afficher les données de la ligne qui correspondra..

Tableau 1
indique des réf de cadres photos en "colonne B", les largeurs de cadre en "colonne C", les hauteurs en "colonne D" et en "colonne N" j'aimerais afficher les données de l'emballage idéal correspondant au tableau 2 .
Tableau 2
indique les réf d'emballage en "colonne B", les largeurs d'emballage en "colonne C", et les hauteurs d'emballage en "colonne D".

J'aimerais pouvoir comparer la largeur C6 et la hauteur D6 du cadre du tableau 1 avec les largeurs de C26 à C37 et les hauteurs de D26 à D37 des emballages du tableau 2 pour trouver l'emballage avec les dimensions égales ou supérieures proches du cadre et de pouvoir afficher les données de cet emballage (réf, quantité, prix, etc..) en "colonne N" du tableau 1 .

ci-joint les deux tableaux en question..

D'avance un grand merci et une immense gratitude à ceux qui pourront m'aider à résoudre ce problème qui m'obsède depuis déjà trop longtemps o_O

AenyeOne.
 

Pièces jointes

  • Emballage idéal pour cadre.xlsx
    13.2 KB · Affichages: 13
Solution
Reprenons à zéro (pour moi en tous cas)...
Il y a un tableau des cadres (Tableau 1) et un tableau des emballages (Tableau 2).
Il n'est pas question d'images !
Dimensions d'un cadre: Tableau 1 colonnes C (Largeur image sans passe-partout) et D (Hauteur image sans passe-partout)

Question : pourquoi prendre les colonnes C et D relatives aux dimensions de l'image dans le cadre alors que les colonnes I et J donnent les dimensions relatives à la structure du cadre à emballer ?
Ça je ne comprends pas. Il faut emballer l'image ou le cadre ? Et c'est ça qui nous a fait partir à tort sur les images.

Sinon au prix d'une adaptation simple (merci les constantes) voici une version qui cherche les emballages pour les...

Dudu2

XLDnaute Barbatruc
Bonjour,
Ce qui serait bien c'est que tes tableaux 1 et 2 soient des tableaux Excel structurés.
Je vais le faire de cette manière pour que les ajouts dans les tableaux soient facilités et que le code VBA soit indépendant des positions absolues des lignes et colonnes.
Par contre cela demande qu'il n'y ait pas les combinaisons de cellules fusionnées que tu as mis dans les lignes de titres. J'ai simplifié.

De plus, mettre les 2 tableaux qui n'ont pas le même nombre de colonnes sur la même feuille entraine des contraintes (sur les largeurs, ...). Il vaut mieux les mettre chacun sur une feuille dédiée.

Ce qui n'est pas clair c'est quelles sont colonnes à utiliser pour déterminer les dimensions de l'image et du cadre car il y a plusieurs options.
Peux-tu préciser ?

C'est quoi la "Référence emballage" ? C'est la colonne pour la référence du meilleur cadre ?

Il y a un colonne "Cadre" dont les références ne correspondent pas aux références des cadres.
Est-ce dans cette colonne qu'il faut placer le meilleur cadre ?
 

Pièces jointes

  • Emballage idéal pour cadre.xlsx
    17.4 KB · Affichages: 2
Dernière édition:

Pounet95

XLDnaute Occasionnel
Bonjour,
Peut-être avec ces lignes de code à placer aux bons endroits ?
Dites-nous

VB:
'----------------------------------------------------------
' Les tableaux Images et Cadre sont nommés
' Tableau_Images  pour le 1er
' Tableau_Cadre   pour le 2ème
''----------------------------------------------------------




Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim lg  As Integer
    Dim ht  As Integer
    
    'Cible dans colonne C du tableau-Images ?
    If Not Intersect(Range("Tableau_Images"), Target) Is Nothing And Target.Column = 3 Then
        lg = Target
        ht = Target.Offset(0, 1)
        Chercher_Cadre lg, ht
    End If
End Sub

'----------------------------------------------------
' A mettre dans un module
'----------------------------------------------------
Option Explicit

Sub Chercher_Cadre(large As Integer, haut As Integer)
    Dim col As Integer
    Dim lig As Long
    Dim trouvé  As Boolean
    
    col = Range("Tableau_Cadre").Column
    lig = Range("Tableau_Cadre").Row
    trouvé = False
    
    Do While Cells(lig, col) <> ""
        If Cells(lig, col) >= large And Cells(lig, col + 1) >= haut Then
            MsgBox "Le cadre " & Cells(lig, col) & " x " & Cells(lig, col + 1) & " convient ?", vbInformation
            trouvé = True
            Exit Do
        End If
        lig = lig + 1
    Loop
    If trouvé = False Then
        MsgBox "A priori aucun cadre pour cette image !", vbInformation
    End If
End Sub
 

AenyeOne

XLDnaute Nouveau
Tout d'abord merci pour vos réponses rapides c'est cool :)

@Dudu2 en réalité le tableau 1 et le tableau 2 sont chacun sur une feuille différente, je les ai regroupés ici sur la même feuille "TEST" pour faciliter l'explication et de ce fait, avoir tout sous les yeux.

Le fait de modifier les tableaux en tableaux Excel structurés n'est pas du tout un problème, tant que le résultat est là ^^.

J'aimerais que la/les donnée(s) recherchée soit placée dans la cellule de la colonne N du tableau des cadres d'après les informations de largeur et hauteur des colonnes C et D du même tableau en comparent les informations de largeur et hauteur des colonnes C et D du tableau des emballages d'après leurs dimensions (Lxl) égale ou supérieur proche et de renvoyer les données de l'emballage trouvé (réf, quantité, prix, etc..) dans le tableau des cadres en colonne N

Comme un dessin est plus parlant qu'un long discourt voici le résultat recherché:
Emballage idéal pour cadre.jpg


Voilà j'espère être le plus clair possible dans mes propos..

Ce qu'il faut retenir c'est que je recherche à avoir une correspondance entre un cadre photo d'une certaine dimension (tableau 1) avec l'emballage qui sera le plus proche des dimensions du cadre (tableau 2) mais n'étant pas proche à l’inférieur puisque l'emballage doit pouvoir contenir le cadre. Et pouvoir afficher les données correspondant à cet emballage, par exemple la réf dans la cellule de la colonne N (tableau 1).

@Pounet95 je n'ai pas eu le temps de regarder en détail mais cela ne fonctionne pas, je regarderai plus attentivement ce soir..

Encore merci en tout cas pour vos réponses.
 

Dudu2

XLDnaute Barbatruc
D'ailleurs c'est quoi un cadre qui est le plus adapté à une image ?
Bien sûr il faut que l'image rentre dedans. Mais ensuite ?
Est-ce qu'il faut que la somme des différences H + L (entre cadre et image) soit la plus petite ?
Ou faut-il privilégier L ou H ?
 

Dudu2

XLDnaute Barbatruc
J'ai codé l'option de la meilleure somme H + L.
A noter que le code VBA fait référence aux titres des colonnes des tableaux structurés donc tout changement doit être reporté dans le code.

Le bouton <Chercher> dans l'entête de la colonne "Cadre" des images recherche le meilleur cadre pour toutes les images. Tests à faire pour vérifier !

Remarque: je pense que dans le tableau des images, en regard de la référence du cadre trouvé, il serait utile d'ajouter 2 colonnes indiquant les marges en largeur et en hauteur du cadre trouvé.

Edit: j'ai sorti un maximum d'éléments en paramètres (constantes modifiables en tête de programme) pour éviter d'entrer dans le code si des éléments (colonnes, feuilles, tableaux) changent de noms.
Et donc le fichier a été modifié à 22h04.

Edit: fichier supprimé cause non adapté
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
De toutes façons, je crois que j'ai tout faux car j'ai simplement cherché à faire rentrer une image dans un cadre le plus adapté possible. Ça me semblait le deal initial.

Or l'explication de AenyeOne (ci-dessous) à laquelle je confesse n'avoir rien compris raconte une toute autre histoire ! :p
«J'aimerais que la/les donnée(s) recherchée soit placée dans la cellule de la colonne N du tableau des cadres d'après les informations de largeur et hauteur des colonnes C et D du même tableau en comparent les informations de largeur et hauteur des colonnes C et D du tableau des emballages d'après leurs dimensions (Lxl) égale ou supérieur proche et de renvoyer les données de l'emballage trouvé (réf, quantité, prix, etc..) dans le tableau des cadres en colonne N»
 

Dudu2

XLDnaute Barbatruc
Reprenons à zéro (pour moi en tous cas)...
Il y a un tableau des cadres (Tableau 1) et un tableau des emballages (Tableau 2).
Il n'est pas question d'images !
Dimensions d'un cadre: Tableau 1 colonnes C (Largeur image sans passe-partout) et D (Hauteur image sans passe-partout)

Question : pourquoi prendre les colonnes C et D relatives aux dimensions de l'image dans le cadre alors que les colonnes I et J donnent les dimensions relatives à la structure du cadre à emballer ?
Ça je ne comprends pas. Il faut emballer l'image ou le cadre ? Et c'est ça qui nous a fait partir à tort sur les images.

Sinon au prix d'une adaptation simple (merci les constantes) voici une version qui cherche les emballages pour les cadres. Les colonnes I et J sont utilisées pour la dimension des cadres, s'il faut changer il suffit de modifier les constantes correspondantes avec les titres de colonnes à utiliser:
VB:
Private Const ColonneLargeur_Cadres = "Largeur structure en cm"
Private Const ColonneHauteur_Cadres = "Hauteur structure en cm"

Les remarques du post #6 sur le code restent valables.
 

Pièces jointes

  • Emballage idéal pour cadre.xlsm
    30.5 KB · Affichages: 8
Dernière édition:

AenyeOne

XLDnaute Nouveau
Super @Dudu2 c'est exactement ça!

Oui en effet tu as raison il s’agissait bien des dimensions des structures en colonne I et J, je ne sais pas pourquoi j'étais focus à ce point sur les dimensions du contenu des cadres désolé o_O ..
Mais au final tu as répondu avec brio à ma problématique en la comprenant mieux que je ne l'ai expliquée! :D
Ouf je peux enfin arrêter de m'arracher les cheveux, encore merci. ^^
 

Dudu2

XLDnaute Barbatruc
Content que tu y trouves ta réponse. N'exagérons rien, ce n'était pas si mal expliqué !

D'ailleurs, en y réfléchissant, sur le même principe, s'il te faillait une petite macro pour chercher le cadre idéal pour une image amenée par des clients dont tu saisirais les dimensions...
On sait faire :p
 

AenyeOne

XLDnaute Nouveau
Oui déjà avec la solution que tu m'as trouvée je pense qu'en l'adaptant un peu il y aurait moyen de rechercher le bon cadre pour l'image/photo d'une éventuelle demande de client.. peut-être même utiliser un formulaire pour faire la recherche..., c'est une bonne idée je la garde en tête merci ;)
 

Discussions similaires