Formule de recherche VBA

Bonjour à tous,

Nouvelle sur le forum je viens vers vous car j'ai un soucis avec ma formule VBA pour une recherche. Voici un print screen de mon tableau et de ma formule. Le but est quand je tape en C9 l'un des numéro de la colonne A "GS" qu'il n'y ait que la ligne de cette personne la. Sauf que ca ne fonctionne pas. Si je note 101 tous les nom disparaissent et il ne reste que la ligne 11 et 12 et en tapant 102 rien ne change .... Je pense avoir fait une erreur dans ma formule que voici :

image image image

Et voici le code :

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$C$9" Then Exit Sub Dim recherche As String, codeCell As String, nomCell As String Dim lastrow As Long, i As Long recherche = Trim(UCase(Range("C9").Value)) lastrow = Cells(Rows.Count, "B").End(xlUp).Row If recherche = "" Then Me.Rows.Hidden = False Exit Sub End If Me.Rows.Hidden = False For i = 13 To lastrow codeCell = UCase(Cells(i, "B").Value) nomCell = UCase(Cells(i, "C").Value) If InStr(1, codeCell, recherche) = 0 And InStr(1, nomCell, recherche) = 0 Then Rows(i).Hidden = True End If Next i End Sub

Merci d'avance

Bonjour Marie1608 et bienvenue

Le mieux lorsque vous posez une question de ce type et comme il n'y a pas d'informations confidentielles, est de partager votre fichier avec le code

Ensuite lorsque vous souhaitez mettre du code, il faut utiliser le bouton dédié à ça

image

Sinon voici une méthode bien plus rapide, en utilisant les filtres
La variable "Recherche" doit être définit en Integer puisque GS contient des nombres

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim LastRow As Long, Recherche As Integer
  ' Si pas de saisi en C9 on sort
  If Target.Address <> "$C$9" Then Exit Sub
  '
  With ActiveSheet
    ' Valeur cherchée
    Recherche = .Range("C9").Value
    ' Dernière ligne
    LastRow = .Cells(Rows.Count, "B").End(xlUp).Row
    ' Si aucune valeur saisie on affiche tout
    If Recherche = 0 Then
      On Error Resume Next: .ShowAllData: On Error GoTo 0
      Exit Sub
    End If
    ' Sinon on filtre les lignes
    If .AutoFilterMode = False Then
      .Range("A12:AF" & LastRow).AutoFilter
    End If
    .Range("$A$12:$AF$" & LastRow).AutoFilter Field:=1, Criteria1:=Recherche
  End With
End Sub

A+

Bonjour,

Merci pour votre réponse, il y avait des données confidentiel dans les lignes en dessous c'est pour ça :)

Merci pour la formule ça fonctionne par contre je perds toutes mes dates en ligne 12 de la colonne D a AF. Car le but aussi c'est que quand je change de mois en B7 il me fasse lui même le changement de jour. Ici les jours changent mais en date je n'ai plus que des 0-1 et 2 et juste le 30 et 31à la fin du mois.

Voici le tableau avec votre code

Re,

Désolé, je suis un puriste, ce n'est pas une formule, mais du code VBA !

De plus, vous devriez savoir, qu'un fichier ".xlsx" ne contient pas de code

Et du coup je n'ai pas compris votre demande, si vous masquez une ligne, vous masquez forcément toute la ligne !?

Ah désolé je ne m'y connais pas super bien dans les termes, je me suis aidé d'un tuto pour le code VBA.

En fait je voudrai avoir un tableau de pointage avec 60 travailleurs et je dois juste noter si présent ou pas. Donc les mois qui change tout seul c'est pratique pour moi (pour ça que il y a une formule ou les jours changent) et juste pour la visualisation j'aimerai pouvoir afficher qu'une seule ligne quand je cherche via son code interne.

Re,

Ni dans les termes, ni dans les extension de fichier à priori

En fait je voudrai avoir un tableau de pointage avec 60 travailleurs et je dois juste noter si présent ou pas. Donc les mois qui change tout seul c'est pratique pour moi (pour ça que il y a une formule ou les jours changent) et juste pour la visualisation j'aimerai pouvoir afficher qu'une seule ligne quand je cherche via son code interne.

C'est ce que je vous ai fait !

Maintenant les cellules fusionnées A11:C12 n'aide pas au bon affichage
Normalement, le code créé un filtre à partir de la ligne 12 et n'affiche que les lignes en dessous qui contiennent le GS saisi

Voici votre fichier avec le code dans "Feuil2"

Hello,

je me suis permis de modifier le fichier de JExceL2fr (j'espère que tu ne m'en voudra pas trop JExceL2fr ) pour éviter les cellules fusionnées (j'ai horreur de ça, surtout quand c'est évitable) et du coup ça supprime une ligne de formule, et puis une petite liste pour choisir c'est pour les fainéants (...comme moi )

Bonjour,

avec un textBox différent de JExceL2fr

Slts

Rechercher des sujets similaires à "formule recherche vba"