VBA - Commandbutton

Résolu
Bonjour,

J'ai un classeur (excel), dans une feuille (Feuil1) j'ai un tableau (matricule, civilite, nom, prenom, etc) et un bouton. J'aimerais que celui ci lors d'un click, un inputbox s'affiche et me demande de saisir un matricule. Lorsque je le saisi, le programme recherche le matricule dans une autre feuille (Feuil2 par exemple) et mets toute la ligne en surbrillance ou sélectionne la cellule dans laquelle se trouve le matricule.

Je ne connais pas VBA, qui peut m'aider SVP...

6 réponses

  1. Contributeur
    Re le forum

    Tehani, tes matricules à touver sont bien sur la feuille "Base" en Colonne A

    Si ce n'est pas le cas, modifie la ligne
    'cherche l'occurence dans la colonne A de la Base
    Set C = Sheets("Base").Columns(1).Find(MyValue, LookIn:=xlValues, lookat:=xlWhole)

    Change le 1 de Columns par l'équivalent de ta colonne (B=2, C=3 ...)

    Mytå
    1. Contributeur
      Re le forum

      Remplace
      .Range(.Cells(C.Row, 1), .Cells(C.Row, 3)).Interior.ColorIndex = 3  
      
      Par
      .Range(.Cells(C.Row, 1), .Cells(C.Row, 3)).Select  
      
      Et supprime la ligne
      Sheets("Base").Range("A1").CurrentRegion.Interior.ColorIndex = xlNone 

      Mytå
      Versions installées [MsProject 2003(FR), Excel 2003-2007(FR)]
      1. Voila ce que j'ai mis et encore merci pour ton aide !!!

        val = Sheets(7).Cells(i, 1).Value
        If val = matricule Then
        MsgBox ("Le matricule existe bien")
        Worksheets(7).Select
        ActiveSheet.UsedRange.Rows(i).Select
        n = 1
        Else
        MsgBox ("Le matricule n'existe pas !")
        n = 0
        End If
    2. Je ne comprend pas ce qui ne te convient pas !

      La macro de Mytå répond exactement à la demande que tu as exprimé dans ton poste du 14 jui 2010 à 03:14 !

      Soit plus explicite dans ton expression de besoin, évite les « ou je ne sais quoi »,
      précise ce que tu appelle « surbrillance », c'est pas nous qui allons deviner.
      1. Est-ce cela que tu veux ?

        Private Sub CommandButton1_Click()
        Dim Message, Title, Default, MyValue
        Dim C As Object, Lig_Trouve As Integer
        
        ' Définit le message.
        Message = "Entrez le matricule a rechercher"
        Title = "Démonstration de InputBox"    ' Définit le titre.
        Default = ""    ' Définition la valeur par défaut.
        
        ' Affiche le message, le titre et la valeur par défaut.
        MyValue = InputBox(Message, Title, Default)
        If MyValue = "" Then Exit Sub
        
        'cherche l'occurence dans la colonne A de la Base
        Set C = Sheets("Base").Columns(1).Find(MyValue, LookIn:=xlValues, lookat:=xlWhole)
            
        'Si elle est trouvée, sélectionne la ligne du tableau
        If Not C Is Nothing Then
          Sheets("Base").Select
          Sheets("Base").Rows(C.Row).Select
        End If
             
        End Sub
      2. ohlala ok !!!

        je voulais seulement que selon le matricule saisi, si celui ci existe dans "base" que la ligne correspondante sois mise en évidence (focus, en couleur, en gras, bref). Et j'ai testé avec le code de Myta, mais il n'y a eu aucun résultat.

        Lorsque je lancais le programme, on me demandait bien de saisir le matricule mais c'est tout !
      3. et oui c'est ce que je voulais Merci !
    3. Contributeur
      Re Tehani

      Remplace mon code par celui-ci

      Private Sub CommandButton1_Click() 
      Dim Message, Title, Default, MyValue 
      Dim C As Object, Lig_Trouve As Integer 
      ' Définit le message. 
      Message = "Entrez le matricule a rechercher" 
      Title = "Démonstration de InputBox"    ' Définit le titre. 
      Default = "1"    ' Définition la valeur par défaut. 
      
      Sheets("Base").Range("A1").CurrentRegion.Interior.ColorIndex = xlNone 
      
      ' Affiche le message, le titre et la valeur par défaut. 
      MyValue = InputBox(Message, Title, Default) 
      
          'cherche l'occurence dans la colonne A de la Base 
          Set C = Sheets("Base").Columns(1).Find(MyValue, LookIn:=xlValues) 
          'Si elle est trouvé, renseigne le tableau 
          If Not C Is Nothing Then 
          With Sheets("Base") 
          .Range(.Cells(C.Row, 1), .Cells(C.Row, 3)).Interior.ColorIndex = 3 
          End With 
          End If 
           
      End Sub 
      


      Mytå
      Versions installées [MsProject 2003(FR), Excel 2003-2007(FR)]
      1. Merci !

        Alors, j'ai testé, mais ce n'est pas ce que je veux. Je veux seulement que si le matricule saisi existe bien dans la feuille "base" que la ligne de cette feuille "base" soit mise en évidence, en surbrillance, ou je ne sais quoi...
    4. Contributeur
      Re le forum

      Voila un exemple : Recherche_VBA.xls

      Mytå
      1. Alors, je t'expose mon pb. Prenons ton fichier. Dans Feuil1 lorsqu'on me demande de saisir un matricule, il faut que le programme aille dans la feuille Base et sélectionne ou met en surbrillance une certaine ligne sachant que dans la 1ere colonne de cette ligne on retrouvera le matricule.

        En tout cas merci pour ton aide !
    5. Contributeur
      Salut le forum

      Un début de piste
          'cherche l'occurence dans la colonne J 
          Set c = Columns(10).Find(Ta_Valeur, LookIn:=xlValues) 
          'Si elle est trouvé, renseigne Lig_Trouve avec le N° de ligne 
          If Not c Is Nothing Then Lig_Trouve = c.Row 
      

      Mytå
      Versions installées [MsProject 2003(FR), Excel 2003-2007(FR)]
      1. Merci pour ta réponse !

        la 2eme ligne de code est censé faire quoi ?