VBA - Commandbutton

Résolu
Tehani_t Messages postés 245 Statut Membre -  
Tehani_t Messages postés 245 Statut Membre -
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. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
     
    Re le forum

    Voila un exemple : Recherche_VBA.xls

    Mytå
    1
    1. Tehani_t Messages postés 245 Statut Membre 21
       
      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 !
      0
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      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
      0
    2. Tehani_t Messages postés 245 Statut Membre 21
       
      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 !
      0
    3. Tehani_t Messages postés 245 Statut Membre 21
       
      et oui c'est ce que je voulais Merci !
      0
  3. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
     
    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)]
    0
    1. Tehani_t Messages postés 245 Statut Membre 21
       
      Merci pour ta réponse !

      la 2eme ligne de code est censé faire quoi ?
      0
  4. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
     
    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)]
    0
    1. Tehani_t
       
      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...
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
     
    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)]
    0
    1. Tehani_t Messages postés 245 Statut Membre 21
       
      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
      0
  7. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
     
    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å
    0