XL 2016 Chercher valeur dans colonne(s) variable(s)

harzer

XLDnaute Nouveau
Bonjour à tous,

Via une Macro, je souhaite trouver une valeur dans colonne(s) variable(s), c’est pas faute de ne pas essayer mais je n’arrive pas à trouver une solution à mon problème, les idées se bousculent mais le résultat n’est pas concluant.

Je vais essayer d’être le plus clair possible dans ma demande afin que vous puissiez m’apporter une solution.
La macro en question doit demander deux informations à l’utilisateur via deux inputbox différentes.
La 1ere demande (via 1er inputbox) que l’utilisateur doit nous fournir est la valeur recherchée.
La 2eme information (via 2e inputbox) que l’utilisateur doit nous fournir est la colonne sur laquelle la recherche sera effectuée.
En ce qui concerne la réponse pour cette question, 4 cas sont possibles :
1er cas : la réponse de l’utilisateur est : 1 , dans ce cas, la recherche s’effectue seulement dans la 1ere colonne : "A".
2e cas : la réponse de l’utilisateur est : 2 , dans ce cas, la recherche s’effectue seulement dans la 2eme colonne : "B"
3e cas : la réponse de l’utilisateur est : 3 , dans ce cas, la recherche s’effectue seulement dans la 3eme colonne :"C"
4e cas : la réponse de l’utilisateur est : 4 , dans ce cas, la recherche s’effectue dans les trois colonnes :"A , B et C "
Ayant toutes ces informations nécessaires, peut-on colorier le texte de la cellule ou les cellules dont la valeur correspond à la valeur cherchée du 1er inputbox.
Je reste à votre disposition pour toutes informations supplémentaires.
D'avance merci pour vos contributions.
 

Pièces jointes

  • Recherche.xlsm
    92.1 KB · Affichages: 13

harzer

XLDnaute Nouveau
Bonjour à tous,
Merci pour vos propositions
Pour répondre à Yeahou, je préfère une solution avec vba et non MFC.
Je vais regarder les propositions de JHA ainsi que celle de merinos, après mes tests, je vous ferais part de mes commentaires.
Salutations.
 

harzer

XLDnaute Nouveau
Bonjour JHA, Merinos et le Forum,

Merci pour vos propositions respectifs,
Je viens de tester vos propositions respectives, toutefois, je souhaite vous dire que les colonnes : K, L, M et N sont déjà utilisés avec d’autres données car je n’ai pris qu’une partie de mon tableau, d’où ma demande de trouver une solution à mon problème avec un code vba.
Vous pouvez remarquer aussi que lorsqu'on souhaite chercher les valeurs dans les colonnes autre que la colonne "A" c-a-d ("B" et "C"), ces valeurs cherchées (qui sont égale à la valeur cherchée) ne sont pas coloriées (Texte non coloré).
D’autant plus que je souhaite reprendre votre code vba (qui répond à ma demande) pour l’appliquer sur d’autres feuilles de mon classeur.

Je vous invite à regarder le code que j’avais mis en application pour trouver une solution à mon problème, sauf que ce dernier cherche la valeur cherchée dans les 3 colonnes A, B et "C", donc il ne répond qu’en partie à mes attentes puisqu’il ne demande pas les colonnes de recherche, en espérant une proposition plus complète de votre part.

Voici le code :

Sub chercher_Valeur()

Dim C As Range
Dim DerLigne As Long
Dim Valeur_cherchée As String

Columns("A:C").Select
With Selection.Font
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With

DerLigne = Cells(Rows.Count, 1).End(xlUp).Row
Range("A2").Select
Valeur_cherchée = InputBox("Entrez la valeur à chercher")

If Valeur_cherchée = "" Then Exit Sub

For Each C In Feuil1.Range("A2:C" & DerLigne)
p = 1
Do While p > 0
p = InStr(p, UCase(C), UCase(Valeur_cherchée))
If p > 0 Then
C.Characters(p, Len(Valeur_cherchée)).Font.ColorIndex = 3
p = p + Len(Valeur_cherchée)
End If
Loop
Next C
End Sub
 
Bonsoir le fil
Pour répondre à Yeahou, je préfère une solution avec vba et non MFC.
l'un n'empêche pas l'autre, VBA peut implémenterr et effacer une MFC, ou modifier les couleurs de fond en dur et les remettre en standard.
le code de Mapomme change les couleurs de fond, j'attends de voir si cela te convient car je n'ai pas commencé à coder.

Bien cordialement
 

harzer

XLDnaute Nouveau
Bonjour Mapomme, Yeahou, Mirenos, JHA et le Forum,

Vraiment merci à vous tous pour vos contributions ainsi que vos réponses.
Je réponds ici à Mapomme pour lui dire Grand BRAVO pour votre code, c'est vraiment pile poil la solution que j'attendais, elle répond totalement à mes attentes, respect Mr Mapomme !
Amitiés à tous.
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Pour le fun aussi
Préambule: ce qui suit peut être fait sans macro
(avec Remplacer AKA CTRL+H en utilisant Format => Remplacer tout)
Donc par pur désœuvrement du vendredi, voir la fonction gribouille
(le reste c'est pour créer l'exemple et les tests)
A tester sur une feuille vierge
VB:
Sub Yellow_SubMarine_TributeA(Optional TEST_1)
Dim r, c$, x$
générer_EX
q = InputBox("Quoi?, Où?", "Test 1", "Staple,3")
r = Split(q, ","): x = r(0): c = Choose(r(1), "A:A", "B:B", "C:C", "A:C")
gribouille x, c
End Sub
Sub Yellow_SubMarine_TributeB(Optional TEST_2)
Dim r, c$, x$
générer_EX
q = InputBox("Quoi?, Où?", "Test 2", "Staple,4")
r = Split(q, ","): x = r(0): c = Choose(r(1), "A:A", "B:B", "C:C", "A:C")
gribouille x, c
End Sub
Sub Yellow_SubMarine_TributeC(Optional TEST_3)
Dim r, c$, x$
générer_EX
q = InputBox("Quoi?, Où?", "Test 3", "Staple,2")
r = Split(q, ","): x = r(0): c = Choose(r(1), "A:A", "B:B", "C:C", "A:C")
gribouille x, c
End Sub

Private Sub gribouille(mot As String, c As String)
Application.ReplaceFormat.Interior.Color = vbYellow
Columns(c).Replace _
            What:=mot, Replacement:=mot, LookAt:=xlPart, SearchOrder:=xlByRows, _
            MatchCase:=False, SearchFormat:=False, ReplaceFormat:=True
End Sub
Private Sub générer_EX()
[A1:C27].Clear
[A1:C27].FormulaR1C1 = "=REPT(""Staple"",MOD(RANDBETWEEN(1,9),5)=3)"
[A1:C27] = [A1:C27].Value
End Sub
NB: Je n'ai pas ouvert les PJ des autres intervenants, donc désolé si le CTRL+H a déjà été proposé.
 

Discussions similaires

Statistiques des forums

Discussions
311 726
Messages
2 081 955
Membres
101 852
dernier inscrit
dthi16088