créer une macro recherche sur excel - VB/VBA/VBS - Programmation
Marsh Posté le 30-05-2011 à 11:01:05
Voici une macro (que j'ai créée et testée) : 
Public Sub aller_mot(mot_a_trouver As String)   | 
Marsh Posté le 30-05-2011 à 12:17:46
il me met argument non facultatif ça veut dire quoi  ? 
voilà ce que j'ai rentré, est bon ? 
 
Sub(RISQUES As String) 
    Application.ScreenUpdating = False 
    Set ma_feuille = ThisWorkbook.Sheets("Feuil1" ) 
    col_no = 5 
    lg_no = 1 
    flag_trouve = False 
    Do While Not IsEmpty(ma_feuille.Cells(lg_no, col_no)) 
        If (ma_feuille.Cells(lg_no, col_no).Value = RISQUES) Then 
           ma_feuille.Cells(lg_no, col_no).Select 
           flag_trouve = True 
           Exit Do 
        End If 
        lg_no = lg_no + 1 
    Loop 
    If (flag_trouve = False) Then 
       MsgBox ("Mot " & RISQUES & " non trouvé !" ) 
    End If 
    Application.ScreenUpdating = True 
End Sub
Marsh Posté le 30-05-2011 à 14:15:38
Le mot "argument", dans la phrase "argument non facultatif", signifie "paramètre". C'est une mauvaise traduction de l'anglais vers le français, où le mot "argument" signifie autre chose. 
Autrement dit, Excel voudrait que le paramètre soit correctement renseigné. 
Mais, je vois que, dans la nouvelle version, le nom de la subroutine a disparu, et c'est peut-être la raison du problème. 
Au lieu de 
Sub(RISQUES As String)  | 
 
Ecrire 
Sub un_nom(RISQUES As String)  | 
 
N.B. Par convention, on utilise les noms tout en majuscules pour des constantes, pas pour des variable, donc au lieu de RISQUES, il serait mieux d'écrire Risques, ou même mot_a_trouver comme je le suggérais. 
 
Marsh Posté le 06-06-2011 à 12:19:51
Bonjour, 
 
Pourriez-vous m'aider, je galère : 
 
Je souhaiterais créer une recherche dans excel. 
J'ai un linting avec des noms et je souhaiterais créer un bouton "recherche" qui ferai apparaitre une boite de dialogue qui permettrait de saisir n'importe quel nom, et une recherche s'effecturait dans ma feuille excel, en sachant qu'il peut y avoir plusieurs noms identiques. Je souhaiterais que le curseur pointe chaque cellule où il y a marqué le nom recherché. 
 
Merci pour votre aide... je galère avec des bouquins et je ne trouve pas.
Marsh Posté le 06-06-2011 à 19:15:42
gaara35 : Salut,pourquoi ne pas utiliser un filtre automatique ?
Marsh Posté le 09-06-2011 à 16:39:33
Oyé 
 
Besoin d'aide, et en même temps ca devrait repondre a la question initiale  
  
 
Voici la macro qui permet de faire une recherche sur toute les feuilles 
Voici ma question : La macro me permet de faire une recherche mais seulement sur 1 mot par cellule, ce qui fait que si j'ai une phrase complete, il ne voit rien du tout et me dit qu'il ne trouve donc pas le mot, je suis clair  
  
En gros si je cherche le mot "chien" il me trouvera pas le mot si dans ma cellule il est écrit "le chien dort" 
 
Est ce qu'un expert peut me dire comment résoudre cela ? 
 
Merci 
 
 
Option Explicit 
Sub TrouverMotChoix() 
Dim Mot As String 
Dim Ws As Object 
Dim Nbre As Long 
Dim Cycle As Long 
Dim Trouvé As Variant 
Dim CellAddress As Variant 
Dim MyValue As String 
  
'Définition de la variable à rechercher 
Mot = InputBox("Saisir la valeur à chercher.", Title:="Recherche" ) 
'Vérification si existante 
If Mot = "" Then Exit Sub 
For Each Ws In Worksheets 
Nbre = Nbre + Application.CountIf(Ws.UsedRange, "=" & Mot) 
Next Ws 
'Message en cas de mot inexistant 
If Nbre = 0 Then 
MyValue = MsgBox(" La valeur " & Mot & " n'est pas enregistrée ", vbOKOnly, " Message " ) 
Else 
Cycle = 0 
'Recherche et arrêt sur les cellules contenant le Mot 
For Each Ws In Worksheets 
With Ws 
.Activate 
Set Trouvé = .Cells.Find(What:=Mot, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart) 
If Not Trouvé Is Nothing Then 
CellAddress = Trouvé.Address 
Do 
Cycle = Cycle + 1 
Trouvé.Activate 
If Nbre = 1 Then 
MyValue = MsgBox(" La valeur " & Mot & " est enregistrée 1 seule fois ", vbOKOnly, " Message " ) 
Exit Sub 
End If 
If Cycle = Nbre Then 
MyValue = MsgBox(" La valeur " & Mot & " sélectionnée est la dernière !", vbOKOnly, "Message" ) 
Sheets("sheet1" ).Activate 
Range("A1" ).Select 
Exit Sub 
Else 
MyValue = MsgBox(" La valeur " & Mot & " sélectionnée est la " & Cycle & " sur " & Nbre & " existantes. " & vbLf & _ 
" Voulez vous continuer la recherche ? ", vbYesNo, "Message" ) 
If MyValue = vbNo Then Exit For 
Set Trouvé = .Cells.FindNext(After:=Trouvé) 
End If 
Loop While Not Trouvé Is Nothing And Trouvé.Address <> CellAddress 
End If 
End With 
Next Ws 
End If 
End Sub
Marsh Posté le 30-05-2011 à 10:21:24
Bonjour,
Depuis plusieurs jours je fais des recherches pour trouver comment faire cette macro sans rien trouver (ou sans rien comprendre car je n'y connais pas grand chose).
Voila:
Dans toute la colonne E de ma feuille excel, je souhaite rechercher par exemple le mot "risques" et aller directement sur la première cellule ou le mot risque est présent (sachant qu'il n'y a qu'un seul mot par cellule). L'objectif final étant d'avoir un bouton nommé "risques" qui m'ammène directement sur la cellule recherchée en cliquant dessus, je sais faire le bouton mais pas le détail de la macro.
Merci d'avance de votre aide.
<config>Windows 7 / Internet Explorer 8.0</config>