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
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
A voir également:
- Recherche Automatisée dans un tableau Excel
- Tableau croisé dynamique - Guide
- Trier un tableau excel - Guide
- Liste déroulante excel - Guide
- Tableau ascii - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
4 réponses
Utilisateur anonyme
14 janv. 2017 à 17:46
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
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
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
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 !
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 !
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
15 janv. 2017 à 08:23
15 janv. 2017 à 08:23
Bonjour
Dans l’attente
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
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
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
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