recherche de valeur dans un tbaleau.

elwardi

XLDnaute Nouveau
Bonjour,
je developpe un petit programme de calcul et je suis bloqué:voici mon problème:
Je calcule l'inertie d'un profilé cellule (G22) et je veux chercher dans un tableau que j'ai déja la valeur la plus proche de ma valeur que je calcule et afficher la ligne du tableau ou se trouve cette valeur avec une couleur .
Exemple ;je calcule et je trouve 22 je cherche dans le tableau la valeur la plus proche de 22 je trouve 23 j'affiche la ligne ou il y a cette valeur avec le rouge par exemple.
Vous trouvez ci-joint un exemple.
Merci pour votre aide.
 

Pièces jointes

  • SOUM.xlsx
    36.5 KB · Affichages: 44

job75

XLDnaute Barbatruc
Bonjour elwardi, JHA,

Il est évident que les calculs en C22:C25 et G22 sont faux.

Une flèche de 370370370 mm (370 km) en C23 cela fait tilt non ?

Quand le résultat en G22 sera correct créez une MFC sur le tableau Q19:S43 avec cette formule :
Code:
=ABS($R19-$G$22)=MIN(ABS($R$19:$R$43-$G$22))
A+
 

elwardi

XLDnaute Nouveau
Bonjour elwardi, JHA,

Il est évident que les calculs en C22:C25 et G22 sont faux.

Une flèche de 370370370 mm (370 km) en C23 cela fait tilt non ?

Quand le résultat en G22 sera correct créez une MFC sur le tableau Q19:S43 avec cette formule :
Code:
=ABS($R19-$G$22)=MIN(ABS($R$19:$R$43-$G$22))
A+
Bonjour,
Votre solution marche super bien par contre j'aimerais bien que ça m'affiche dans le tableau la valeur la plus proche mais surtout pas qu'elle soit inférieur de ma valeur calculée:
exemple:inertie calculé 18.2 j'ai dans le tableau j'ai 18.1 et 19 c'est vrai que 18.1 est plus proche mais elle est inférieur donc ca va pas du coup la solution affiché ca sera le profilé qui a 19 comme inertie.
J'espère que je suis claire.
Merci d'avance.
 

elwardi

XLDnaute Nouveau
Bonjour elwardi, JHA,

Formule de la MFC sur Q19:S43 :
Code:
=$R19-$G$22=MIN(SI($R$19:$R$43>=$G$22;$R$19:$R$43-$G$22))
A+
Bonjour,
Vous pensez que ça sera possible d'afficher l'image associé au profilé choisie dans mon tableau?j'ai mis toutes les images dans la deuxième feuille du classeur dans une seule colonne et classé selon le classement du tableau.
Je suis un peu perdu je ne sais pas de quel chemin je dois passer.
Est ce que vous aurez une idée pour que je puisse arriver!
Merci pour votre aide.
 

Pièces jointes

  • TEST.xlsx
    440.2 KB · Affichages: 18

job75

XLDnaute Barbatruc
Bonjour elwardi,
Vous pensez que ça sera possible d'afficher l'image associé au profilé choisie dans mon tableau?
Voyez le fichier .xlsm joint et cette macro dans le code de la feuille "test" :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cible As Range, sel As Range, s As Shape, mini#, c As Range, NomImage$
Set cible = [G22]
Application.ScreenUpdating = False
ActiveCell.Activate 'si un objet est sélectionné
Set sel = Selection 'mémorise
'---RAZ---
For Each s In Shapes
    If s.TopLeftCell.Address = "$D$33" Then s.Delete
Next
'---recherche de la ligne du profilé et du nom de l'image---
mini = 1000000
For Each c In [F33:F57]
    If c > cible And c - cible < mini Then mini = c - cible: NomImage = c.Offset(, -3)
Next
If NomImage = "" Then Exit Sub
[D33].Select
Feuil1.Shapes(NomImage).Copy
Paste
Selection.Top = ActiveCell.Top + 12
Selection.Left = ActiveCell.Left + 12
sel.Select 'sélection initiale
End Sub
L'image s'affiche quand on modifie ou valide une cellule quelconque.

Nota 1 : le 21ème profilé n'a pas d'image.

Nota 2 : votre MFC n'était pas correcte, je l'ai refaite.

A+
 

Pièces jointes

  • TEST(1).xlsm
    450.9 KB · Affichages: 25

elwardi

XLDnaute Nouveau
Bonjour elwardi,

Voyez le fichier .xlsm joint et cette macro dans le code de la feuille "test" :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cible As Range, sel As Range, s As Shape, mini#, c As Range, NomImage$
Set cible = [G22]
Application.ScreenUpdating = False
ActiveCell.Activate 'si un objet est sélectionné
Set sel = Selection 'mémorise
'---RAZ---
For Each s In Shapes
    If s.TopLeftCell.Address = "$D$33" Then s.Delete
Next
'---recherche de la ligne du profilé et du nom de l'image---
mini = 1000000
For Each c In [F33:F57]
    If c > cible And c - cible < mini Then mini = c - cible: NomImage = c.Offset(, -3)
Next
If NomImage = "" Then Exit Sub
[D33].Select
Feuil1.Shapes(NomImage).Copy
Paste
Selection.Top = ActiveCell.Top + 12
Selection.Left = ActiveCell.Left + 12
sel.Select 'sélection initiale
End Sub
L'image s'affiche quand on modifie ou valide une cellule quelconque.

Nota 1 : le 21ème profilé n'a pas d'image.

Nota 2 : votre MFC n'était pas correcte, je l'ai refaite.

A+
Super je vais tester ,et je vais revenir vers vous pour vous montrer le programme final .merci énormément
 

job75

XLDnaute Barbatruc
Bonjour elwardi, le forum,

Voici une 2ème solution, sans VBA, dans le fichier joint.

Maintenant la cellule D33 contient la photo de la cellule contenant la Shape en feuille "donné".

Les Shapes doivent impérativement être positionnées dans l'ordre des cellules test!E33:E57.

Bonne journée.
 

Pièces jointes

  • TEST sans VBA(1).xlsx
    532.7 KB · Affichages: 19

Discussions similaires

Statistiques des forums

Discussions
312 182
Messages
2 086 002
Membres
103 084
dernier inscrit
Hervé30120