Interior.ColorIndex - afficher

Bonjour,

Via un InputBox, je désire aller directement à la cellule concernée.

Cela fonctionne mais j'aimerais avoir uniquement la ligne concernée affichée.

La fin de mon code ne fonctionne pas pour l'affichage.

Private Sub CommandButton17_Click()
Application.ScreenUpdating = False
valeur = InputBox("Entrer le n° ")
Range("F3:F900").Find(valeur, LookIn:=xlValues).Select
Selection.Interior.ColorIndex = 8
For Each c In Worksheets("Interventions techniques").Range("$F3:$F900")
        With c
                .EntireRow.Hidden = False
                If .DisplayFormat.Interior.Color = 8 Then .EntireRow.Hidden = True
        End With
Next c

Application.ScreenUpdating = True
End Sub

Merci.

Bonne journée.

ou alors, ne pas mettre de couleur.

Juste afficher toute la ligne suivant la InputBox

Bonjour,

Tu peux faire comme ça :

Private Sub CommandButton17_Click()
Application.ScreenUpdating = False
Valeur = InputBox("Entrer le n° ")

For Each c In Range("$F3:$F900")
    If c.Value <> Valeur Then c.EntireRow.Hidden = True
Next c

Application.ScreenUpdating = True
End Sub

A+

lorsque je remplis l'InputBox, toutes les lignes disparaissent.

Ce qui veux dire que la valeur dans l'inputBox n'existe pas dans une des cellules de la plage [F3:F900].

Ce n'est pas ce que tu souhaites ? Masquer toutes les lignes qui ne correspondent pas a la valeur de l'inputbox ?

la valeur que je mets dans l'InputBox existe dans ma colonne F

si, je souhaite cacher toutes les autres lignes.

J'ai supprimé la partie :

Worksheets("Interventions techniques")

pour les test, tu travailles sur plusieurs feuilles ?
Sinon envoi un exemple de ton fichier et ce que tu souhaites chercher (sans données confidentielles)

image

je travaille sur 1 feuille

voici le ficher.

Bouton "Recherche" --> "Rech. N° Carl Source

Je me base sur la colonne F

Il faut ajouter Cstr, pour forcer la valeur de "c" en texte.

    If CStr(c.Value) <> Valeur Then c.EntireRow.Hidden = True

Sinon il compare un nombre et un texte et pour lui c'est différent.
Donc il masque meme la ligne que l'on souhaite garder

Un super grand merci.

Bonne journée

Lorsque je veux effectuer une 2ème recherche, je suis obligé d'afficher toutes les lignes avant la nouvelle recherche.

Est-il possible de parer à cela ? (faire plusieurs recherches à la suite, comme dans un ComboBox) ?

Merci

Si tu veux faire les recherches les unes a la suite des autres, il suffit d'afficher l'enssemble des lignes avant de masquer celles qui ne t'intéresse pas.

Private Sub CommandButton17_Click()
Application.ScreenUpdating = False
Valeur = InputBox("Entrer le n° ")

Range("$F3:$F900").EntireRow.Hidden = False

For Each c In Range("$F3:$F900")
    If Cstr(c.Value) <> Valeur Then c.EntireRow.Hidden = True
Next c

Application.ScreenUpdating = True
End Sub

Si tu veux pouvoir faire plusieurs recherches en meme temps, il faut éviter les InputBox

Un grand merci.

Pour d'autres recherches j'ai des ComboBox mais j'ai essayé avec la colonne F (chiffres) et je n'ai pas trouvé comment l'adapter.

Codes avec texte sur colonne B (pour exemple) :

Private Sub ComboBox1_Change()

Application.ScreenUpdating = False
Dim Plage As Range
Dim Cel As Range

Set Plage = [B3:B900]

For Each Cel In Plage

   If Cel.Value = ComboBox1.Value Then
       Rows(Cel.Row).Hidden = False
   Else
       Rows(Cel.Row).Hidden = True
   End If

Next
   Application.ScreenUpdating = True
End Sub
Private Sub UserForm_Initialize()
    Dim ws As Worksheet
    Dim rng As Range
    Dim dict As Object
    Dim i As Long
    Dim key As Variant

    Set ws = ThisWorkbook.Sheets("Interventions techniques")

    Set rng = ws.Range("B3", ws.Cells(ws.Rows.Count, "B").End(xlUp))

    Set dict = CreateObject("Scripting.Dictionary")

    For i = 1 To rng.Count
        If Not dict.Exists(rng(i, 1).Value) Then
            dict.Add rng(i, 1).Value, Nothing
        End If
    Next i

    For Each key In SortedKeys(dict.keys)
        ComboBox1.AddItem key
    Next key
End Sub
Private Function SortedKeys(keys As Variant) As Variant

    Dim i As Long
    Dim j As Long
    Dim temp As Variant
    Dim arr() As Variant

    arr = keys

    ' Trier le tableau
    For i = LBound(arr) To UBound(arr) - 1
        For j = i + 1 To UBound(arr)
            If arr(i) > arr(j) Then
                temp = arr(i)
                arr(i) = arr(j)
                arr(j) = temp
            End If
        Next j
    Next i

    SortedKeys = arr
End Function
Rechercher des sujets similaires à "interior colorindex afficher"