Recherche Automatisée dans un tableau Excel

Fermé
Phoenxz Messages postés 2 Date d'inscription samedi 14 janvier 2017 Statut Membre Dernière intervention 14 janvier 2017 - 14 janv. 2017 à 17:27
DSBix Messages postés 23 Date d'inscription samedi 14 janvier 2017 Statut Membre Dernière intervention 28 janvier 2017 - 18 janv. 2017 à 18:10
Bonjour à tous,

Je ne suis pas vraiment un habitué des forums alors pardonnez donc mes maladresses si je m'y prend mal mais je suis actuellement dans une impasse et j'ai vraiment besoin d'aide...

Pour situer le contexte, j'ai un tableau à 8 colonnes qui donnent les préconisations de conditionnement pour chaque référence (colonne 1). J'ai pour mission de créer un outils de travail avec ce tableau. cet outils doit permettre de vérifier si une référence à bien ses préconisations d'enregistrées dans le tableau, le cas échéant d'afficher ces préconisations, d'enregistrer de nouvelles préconisations, et de rechercher les préconisations en fonction de la désignation (colonne 2).

Et c'est sur la dernière partie que je bloque... j'ai pensé à dédier une cellule pour y inscrire la désignation recherchée, rechercher toutes les cellules qui contiennent cette désignation, et afficher dans d'autre cellules les préconisations.
j'ai essayé avec bon nombre de formules trouvées ici et là mais je n'ai pas réussi à les adapter à mon cas, j'ai tenté ensuite via VBA mais toujours sans succès..

Voilà, je me tourne donc vers vous en espérant que quelqu'un aura la réponse :)

Je vous remercie d'avance !

Bonne soirée à vous.
A voir également:

4 réponses

Utilisateur anonyme
14 janv. 2017 à 17:46
Bonjour,

J'essaie d'imaginer ta feuille Excel, mais je pense qu'il va falloir que tu sois plus précis. Donc :
Colonne 1 = référence
Colonne 2 = désignation
Colonne 3 à 8 = préconisations ?

Tout est sur la même feuille Excel ou y'a-t-il d'autres onglets ?

Pour vérifier qu'une référence a bien des préconisations, je tape la réf dans une cellule ? Dans une boite de dialogue ?
Et après ça m'affiche une autre boite de dialogue ? Ou ça me remplit des cellules dans une autre feuille Excel ?

Merci pour ta réponse.

Cyrille
0
Phoenxz Messages postés 2 Date d'inscription samedi 14 janvier 2017 Statut Membre Dernière intervention 14 janvier 2017
14 janv. 2017 à 22:02
Bonsoir,

Merci pour ta réponse si rapide !

C'est vrai que c'était pas vraiment super précis comme première explication...

Pour les colonnes 3 à 8 oui ce sont les différents niveau de preconisations, on va les nommer de préco 1 à préco 6.

Oui j'essaye de faire tout sur la même feuille.

Oui c'est ça. On tape la référence dans une cellule, avec des formules et une mise en forme conditionnelle (vert ou rouge) on sait si la référence à des preconisations d'enregistrées. Ensuite j'ai créer une macro qui recherche les précos de la référence et les copies dans plusieurs cellules de la même feuille.

Ce qui me pose problème c'est la recherche de preconisations par désignations (colonne 2). Je ne sais pas vraiment comment m'y prendre...
Pour l'exemple, cela servirait a chercher toute les précos qui ont été enregistrées sur les produit "VIS", en sachant qu'il y a plusieurs type de vis et que la designation change en fonction de la référence..

Bonne soirée !
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
15 janv. 2017 à 08:23
Bonjour

Mettre le classeur sans données confidentielles en pièce jointe sur « mon-partage.fr »
et faire un clic droit-coller le raccourci dans votre message

Dans l’attente


0
DSBix Messages postés 23 Date d'inscription samedi 14 janvier 2017 Statut Membre Dernière intervention 28 janvier 2017 1
18 janv. 2017 à 18:10
Bonsoir,

La 1ère réponse était rapide, celle-ci un peu moins... Désolé.

Alors si le sujet est toujours d'actualité, quelques pistes/réflexions :
- Pour la recherche par désignation, il me semble difficile de le faire avec une formule, l'option macro me parait plus adapté.
- Admettons que la cellule de recherche par désignation est la cellule I1 et que le résultat s'affiche dans les cellules I2 à I8. Je suggère en VBA de faire une boucle qui lit les désignations (de la colonne B si tel est le cas), les compare une à une et dès qu'une correspondance est trouvée, s'arrête et écrit les spéc dans les cellules I2 à 8. La recherche est déclenchée lorsque je modifie le contenu de la cellule I1. Voici un bout de code qui peut faire ça.

Dans VBA, code source de ta feuille (pas celui d'un module, celui de la feuille), tu choisis en haut le code Worksheet_Change. Ca te crée une procédure "Private Sub Worksheet_Change(ByVal Target As Range)". Attention, par défaut ça crée Worksheet_SelectionChange, il faut changer en haut à droite en Worksheet_Change.

Voici le bout de code.
N'hésites pas à me dire si ça te convient.

Bon courage.
Cyrille



Private Sub Worksheet_Change(ByVal Target As Range)

Dim strLigne As String
Dim strColonne As String
Dim strDescription As String
Dim strChaineRecherchee As String
Dim i As Integer
Dim blnTrouve As Boolean

'On vérifie qu'on sort bien d'une saisie de la cellule I1 (cellule de recherche)
If Target.Address = "$I$1" Then

'Initialisation des cellules résultat
Range("I2").Value = ""
Range("I3").Value = ""
Range("I4").Value = ""
Range("I5").Value = ""

'On va scrupter les descriptions dans la colonne B
i = 2
strChaineRecherchee = UCase(Trim$(Target.Value)) 'Notre chaine recherchée

blnTrouve = False
Do
'Lecture description
strDescription = UCase(Range("B" & CStr(i)).Value)

If strDescription <> "" Then
If InStr(1, strDescription, strChaineRecherchee) > 0 Then
'On a trouvé une concordance !

'Y-a-t-il une spéc ?
If Range("C" & CStr(i)).Value <> "" Then
'Il y a au moins une spécification !

'On remplit les cellules I2 à I5
Range("I2").Value = Range("C" & CStr(i)).Value
Range("I3").Value = Range("D" & CStr(i)).Value
Range("I4").Value = Range("E" & CStr(i)).Value
Range("I5").Value = Range("F" & CStr(i)).Value
Else
Range("I2").Value = "Aucune spécification pour cet article !"
End If
blnTrouve = True
End If

End If

i = i + 1
DoEvents
Loop While blnTrouve = False And strDescription <> ""


If blnTrouve = False Then
Range("I2").Value = "Aucune correspondance trouvée !"
End If


End If



End Sub
0