Rechercher une ligne avec un texbox depuis un USF

ksta89 Messages postés 82 Statut Membre -  
ksta89 Messages postés 82 Statut Membre -
Bonjour,

J'ai un USF avec un textbox et un bouton valider.

Quand je rentre un mots dans le textbox et que j'appuie sur le bouton valider, je voudrais que mon classeur (liste du matériel) s'ouvre et me selectionne en rouge la ou les lignes avec le mots ecrit dans le textbox.

Une idée?

merci d'avance.

Mes fichier:

https://www.cjoint.com/c/ECxj1AYcGMK

3 réponses

  1. ThauTheme Messages postés 1564 Statut Membre 160
     
    Bonjour Ksta, bonjour le forum,

    Tu envoies 3 fichiers et tu ne précises que le nom d'un seul Liste de matériel... J'ouvre AFFECT MAT au hasard et il contient 7 UserForms !... À nous de nous débrouiller !
    Désolé, mais si tu ne fais pas d'efforts à expliquer plus clairement ton problème, je ne vois pas pourquoi nous en ferions, nous, pour t'apporter une solution...

    0
    1. ksta89 Messages postés 82 Statut Membre
       
      Bonjour,

      Désolé il est vrai que je n'ai pas été assez précis. J'avais la tête ailleur.

      Tu as un .xlsm nommé AFFECT MAT. Ce fichier est une sorte de "télécommande". Il permet de naviguer ou de modifié plusieur fichier.

      Dans le fichier AFFECT MAT tu as 7 USF. Le premier DEMARRAGE permet de choisir ce que btu veux faire. Tu as en fait une liste de choix. dans ces choix tu l'onglet materiel qui t'enmene vers un USF CHOIX.

      Dans ce USF tu peux soit ajouter du materiel, soit rechercher un matériel ou consulter la liste du matériel.

      Moi ce qui m'intéresse c'est de pouvoir rechercher un materiel en écrivant un mot, de valider et que a chaque fois que le mots apparait surligner la ligne en question et de faire une sorte de filtre.

      J'avais essayer quelque chose mais cela ne marche pas.

      Tu peux m'aider stp et désolé de ma pauvre expliquation de départ.

      Cdt,
      0
      1. ThauTheme Messages postés 1564 Statut Membre 160 > ksta89 Messages postés 82 Statut Membre
         
        Bonjour Ksta, bonjour le forum,

        Je regarde ça...
        0
  2. ThauTheme Messages postés 1564 Statut Membre 160
     
    Bonjour Ksta, bonjour le forum,

    Ci-dessous le code commenté à appliquer au bouton RECHERCHER de l'UserForm RECHERCHER_MAT du fichier AFFECT MAT.xlsm :

    Private Sub CommandButton1_Click()
    Dim NCR As String 'déclare la variable NCR (Nom du Classeur de Recherche)
    Dim CR As Workbook 'déclare la variable CR (Classeur de Recherche)
    Dim OCR As Worksheet 'déclare la variable OCR (Onglet du Classeur de Recherche)
    Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
    Dim NL As Integer 'déclare la variable NL (Nombre de Lignes)
    Dim NC As Byte 'déclare la variable NC (Nombre de Colonnes)
    Dim I As Integer 'déclare la variable I (Incrément de ligne)
    Dim J As Byte 'déclare la variable J (incrément de colonne)
    
    NCR = ThisWorkbook.Path & "\LISTE DU MATERIEL.xlsm" 'définit le nom NCR du classeur de recherche
    On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
    Set CR = Workbooks("LISTE DU MATERIEL.xlsm") 'définit le classeur de recherche CR (génére une erreur si ce classeur n'est pas ouvert)
    If Err <> 0 Then 'condition : si une erreur a été générée
        Err = 0 'annule l'erreur
        Workbooks.Open (NCR) 'ouvre le classeur de recherche
        Set CR = ActiveWorkbook 'définit la classeur CR
    End If 'fin de la condition
    On Error GoTo 0 'annule la gestion des erreurs
    Set OCR = CR.Sheets("LISTE MAT") 'définit l'onglet OCR du classeur de recherche
    OCR.Range("A3").CurrentRegion.Interior.ColorIndex = xlNone 'supprime la coleur rouge
    TC = OCR.Range("A3").CurrentRegion 'définit le tableau de cellule TC
    NL = UBound(TC, 1) 'définit le nombre de lignes NL du tableau de cellules TC
    NC = UBound(TC, 2) 'définit le nombre de colonnes NC du tableau de cellules TC
    For I = 1 To NL 'boucle 1 : sur toutes les lignes de TC
        For J = 1 To NC 'boucle 2 sur toutes les colonnes de TC
            If UCase(TC(I, J)) Like "*" & UCase(Me.TextBox1.Value) & "*" Then  'condition : si la valeur en ligne I, colonne J de TC est égale à la valeur de la TextBox1
                OCR.Cells(I + 2, 1).Resize(, NC).Interior.ColorIndex = 3 'colore la cellule ligne I+2 colonne J de l'onglet OCR
                Exit For 'sort de la boucle 2
            End If 'fin de la condition
        Next J 'prochaine  colonne de la boucle 2
    Next I 'prochaine ligne de la boucle 1
    End Sub


    Ne sachant pas ce que tu voulais faire à la sortie de cette UserForm, je ne t'ai rien proposé. Il serait possible d'enlever la couleur rouge et de fermer le classeur LISTE DU MATERIEL.xlsm...
    0
    1. ksta89 Messages postés 82 Statut Membre
       
      Re,

      J'ai mis le code dans le bouton rechercher et cela m'a afficher un message d'erreur 9 l'indice n'appartient pas à la selection avec la ligne suivante surligner en jaune

      Set OCR = CR.Sheets("LISTE MAT") 'définit l'onglet OCR du classeur de recherche

      Juste pour précision le fichier liste du matériel se trouve :

      C:\AFFECTATION MATERIEL\LISTE DU MATERIEL.xlsm sur mon PC.

      Sinon dès que je fais rechercher je voudrais que le fichier LISTE DU MATERIEL s'ouvre avec la ligne surligner en rouge. Dès que je le ferme le fichier reviens en état ionitial.

      Cdt,
      0
    2. ksta89 Messages postés 82 Statut Membre
       
      Juste une petite précision si le materiel en question n'est pas répertorié en dans la liste est-il possible de rajouter un message du type le matériel n'existe pas. voulez le rajouter oui ou non. et si oui m'amener vers l'userform LISTE?
      0
    3. ThauTheme Messages postés 1564 Statut Membre 160 > ksta89 Messages postés 82 Statut Membre
       
      Bonjour Ksta, bonjour le forum,

      Dans le fichier que tu as fourni LISTE MATERIEL.xlsm, l'onglet s'appelle LISTE MAT. Vérifie que c'est bien le même non dans ton fichier a toi. Deux solutions, modifier le code en adaptant le nom de l'onglet ou modifier le nom de l'onglet dans ton fichier...

      Sinon, le code modifié :

      Private Sub CommandButton1_Click()
      Dim NCR As String 'déclare la variable NCR (Nom du Classeur de Recherche)
      Dim CR As Workbook 'déclare la variable CR (Classeur de Recherche)
      Dim OCR As Worksheet 'déclare la variable OCR (Onglet du Classeur de Recherche)
      Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
      Dim NL As Integer 'déclare la variable NL (Nombre de Lignes)
      Dim NC As Byte 'déclare la variable NC (Nombre de Colonnes)
      Dim I As Integer 'déclare la variable I (Incrément de ligne)
      Dim J As Byte 'déclare la variable J (incrément de colonne)
      Dim TEST As Boolean 'déclare la variable TEST
      
      'NCR = "C:\AFFECTATION MATERIEL\LISTE DU MATERIEL.xlsm" 'définit le nom NCR du classeur de recherche
      NCR = "\\serveur\PUB\poubelle\KSTA\LISTE DU MATERIEL.xlsm"
      On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
      Set CR = Workbooks("LISTE DU MATERIEL.xlsm") 'définit le classeur de recherche CR (génére une erreur si ce classeur n'est pas ouvert)
      If Err <> 0 Then 'condition : si une erreur a été générée
          Err = 0 'annule l'erreur
          Workbooks.Open (NCR) 'ouvre le classeur de recherche
          Set CR = ActiveWorkbook 'définit la classeur CR
      End If 'fin de la condition
      On Error GoTo 0 'annule la gestion des erreurs
      Set OCR = CR.Sheets("LISTE MAT") 'définit l'onglet OCR du classeur de recherche
      OCR.Range("A3").CurrentRegion.Interior.ColorIndex = xlNone 'supprime la coleur rouge
      TC = OCR.Range("A3").CurrentRegion 'définit le tableau de cellule TC
      NL = UBound(TC, 1) 'définit le nombre de lignes NL du tableau de cellules TC
      NC = UBound(TC, 2) 'définit le nombre de colonnes NC du tableau de cellules TC
      TEST = False
      For I = 1 To NL 'boucle 1 : sur toutes les lignes de TC
          For J = 1 To NC 'boucle 2 sur toutes les colonnes de TC
              If TC(I, J) = Me.TextBox1.Value Then 'condition : si la valeur en ligne I, colonne J de TC est égale à la valeur de la TextBox1
                  OCR.Cells(I + 2, 1).Resize(, NC).Interior.ColorIndex = 5 'colore la cellule ligne I+2 colonne J de l'onglet OCR
                  TEST = True
                  Exit For 'sort de la boucle 2
              End If 'fin de la condition
          Next J 'prochaine  colonne de la boucle 2
      Next I 'prochaine ligne de la boucle 1
      If TEST = False Then
          If MsgBox("Le matériel n'existe pas ! Voulez-vous le rajouter", vbYesNo, "ATTENTION") = vbYes Then
              Unload Me
              OCR.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0).Select
          End If
      End If
      End Sub
      0
    4. ksta89 > ThauTheme Messages postés 1564 Statut Membre
       
      Bonjour,

      J'ai bien fait attention au nom de l'onglet dans mon fichier et c'est bien le même.

      Je vais essayer la version modifié. Je te tiens au courant.

      Cdt,
      0
    5. ksta89 Messages postés 82 Statut Membre
       
      Re,

      Très bien fonctionne comme je le souhaite. Cependant, ne prend pas en compte les nombre...

      Une idée stp?

      Merci d'avance.

      cdt,
      0
  3. ThauTheme Messages postés 1564 Statut Membre 160
     
    Bonjour Ksta, bonjourle forum,

    De regarder, oui... de m'y mettre, ni le temps, ni l'envie à vrai dire... Désolé mais ça demande un trop grand investissement...
    0
    1. ksta89 Messages postés 82 Statut Membre
       
      Re,

      Ce n'est pas grave merci quand même de ton aide et de ta réponse.

      Bon courage.

      A plus
      0