VBA - Commandbutton

Résolu/Fermé
Tehani_t Messages postés 240 Date d'inscription mercredi 14 juillet 2010 Statut Membre Dernière intervention 20 décembre 2011 - 14 juil. 2010 à 01:42
Tehani_t Messages postés 240 Date d'inscription mercredi 14 juillet 2010 Statut Membre Dernière intervention 20 décembre 2011 - 16 juil. 2010 à 01:11
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

Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
14 juil. 2010 à 02:48
Re le forum

Voila un exemple : Recherche_VBA.xls

Mytå
1
Tehani_t Messages postés 240 Date d'inscription mercredi 14 juillet 2010 Statut Membre Dernière intervention 20 décembre 2011 21
14 juil. 2010 à 03:14
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
15 juil. 2010 à 23:08
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
15 juil. 2010 à 23:25
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
Tehani_t Messages postés 240 Date d'inscription mercredi 14 juillet 2010 Statut Membre Dernière intervention 20 décembre 2011 21
16 juil. 2010 à 00:58
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
Tehani_t Messages postés 240 Date d'inscription mercredi 14 juillet 2010 Statut Membre Dernière intervention 20 décembre 2011 21
16 juil. 2010 à 01:11
et oui c'est ce que je voulais Merci !
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
Modifié par Mytå le 14/07/2010 à 01:56
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
Tehani_t Messages postés 240 Date d'inscription mercredi 14 juillet 2010 Statut Membre Dernière intervention 20 décembre 2011 21
14 juil. 2010 à 02:24
Merci pour ta réponse !

la 2eme ligne de code est censé faire quoi ?
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
Modifié par Mytå le 14/07/2010 à 03:24
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
Modifié par Mytå le 15/07/2010 à 23:14
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
Tehani_t Messages postés 240 Date d'inscription mercredi 14 juillet 2010 Statut Membre Dernière intervention 20 décembre 2011 21
16 juil. 2010 à 01:05
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
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
16 juil. 2010 à 01:05
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