• Initiateur de la discussion Initiateur de la discussion steevassie
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

steevassie

Guest
Bonsoir, je m'adressse à vous pour une question sur une macro.
En fait j' ai un fichier qui reprend toutes les données d'une commande, et j'aimerai faire une page recherche ou en saisissant le numéro de commande, il m'emmene directement sur la ligne conserné.
EN fouillant un peu, j'ai trouvé cette macro, mais elle ne marche pas elle bloque à la ligne rouge et le titre est surligné en jaune.Des idées ou peut etre un autre moyen?

Merci d'avance

Voici le macro:

Private Sub CommandButton1_Click()
'mpfe, auteur inconnu
mot = InputBox("B5")
For feuille = 1 To Sheets.Count
Sheets(suivi).Select
Set trouvé1 = Cells.Find(What:=mot)
If Not trouvé1 Is Nothing Then
trouvé1.Activate
étiq:
If MsgBox("Suivant ?", 4) = vbNo Then Exit Sub
Set trouvé2 = Cells.FindNext(After:=ActiveCell)
If trouvé2.Column <> trouvé1.Column Or trouvé2.Row <> trouvé1.Row
Then
trouvé2.Activate
GoTo étiq
End If
End If
Next feuille
End Sub
 
Re : recherche d'un mot

Voila le fichier, dis moi si c'est bon 😀
 

Pièces jointes

Re : recherche d'un mot

Bonsoir Steevassie, Wazzebu, bonsoir le forum,

Steevassie je suis reparti de ton idée de base et j'ai un peu modifié ton code. Je ne sais pas exactement ce que tu cherches mais le code ci-dessous ouvre une boite de texte que tu renseignes. Ensuite il sélectionne les onglets un par un et recherche une occurrence du mot que tu as édité. Si elle existe, il la sélectionne et te propose par un message de passer à l'occurrence suivante. Sinon il passe à l'onglet suivant. Si il n'y a plus aucune occurrence, un message le signale.

Code:
Private Sub CommandButton1_Click()
Dim mot As String 'déclare la variable mot
Dim f As Worksheet 'déclare la variable f
Dim trouvé As Range 'déclare la variable touvé
Dim pa As String 'déclare la variable pa
Dim x As Integer 'déclare la variable x
mot = InputBox("Tapez le mot que vous recherchez.", "RECHERCHE") 'définit la variable mot
If mot = "" Then Exit Sub 'si mot est vide sort de la procédure
For x = 1 To Sheets.Count 'boucle : sur tous les onglets du classeur
    Set f = Sheets(x) 'définit la variable f
    f.Select 'sélectionne l'onglet
    pa = "" 'réinitialise la variabble pa
    Set trouvé = f.Cells.Find(What:=mot) 'définit la variable trouvé
 
    If Not trouvé Is Nothing Then 'condition : si au moins une occurrence existe
        pa = trouvé.Address 'définit la variable pa
        Do 'éxécute
            trouvé.Select 'sélectionne l'occurrence
            Set trouvé = f.Cells.FindNext(trouvé) 'redéfinit las variable trouvé
 
            'si "Non" au message sort de la procédure
            If MsgBox("Onglet : " & f.Name & Chr(13) & Chr(13) & "Suivant ?", 4) = vbNo Then Exit Sub
 
        'boucle tant qu'il existe une occurrence dont l'adresse est différente de pa
        Loop While Not trouvé Is Nothing And trouvé.Address <> pa
    End If 'fin de la condition
Next x 'prochain onglet de la boucle
'si tous les onglets ont été parcourus sans touver de nouvelle occurence de "mot"
MsgBox "il n'y a plus de " & mot & " dans le classeur !"
End Sub

Finalement je mets aussi le fichier qui m'a servi de test
 

Pièces jointes

Dernière édition:
Re : recherche d'un mot

bonsoir Robert,

Aïe,

de mon coté ca a l'air de marcher.....

Je vais essayer de regarder ca mais demain 😀 Il se fait tard et je me leve tot!!

Ce qui marche pas c'est que lors de la recherche par date ca ne selectionne pas la bonne? (peut être lié au format?)

Je sais pas trop...

bonne chance

@+
 
Re : recherche d'un mot

Bonjour à tous

pour éviter la recherche dans les formules, modifies peut être la ligne de code ci dessous :

Code:
Set trouvé = f.Cells.Find(What:=mot) 'définit la variable trouvé

comme suit :

Code:
Set trouvé = f.Cells.Find(What:=mot, LookIn:=xlValues) 'définit la variable trouvé

à tester...

bonne journée
@+
 
Re : recherche d'un mot

Bonjour,

en modifiant le code comme cela ca devrait marcher :

Private Sub TB1_Change()
Dim c As Integer
Dim L As Double
Dim n As Integer
Dim vc As String
Dim vs As String
For c = 1 To Cells(1, 1).End(xlToRight).Column
If UF1.LB1.Value = Cells(1, c).Value Then Exit For
Next c
UF1.LB2.Clear
n = 0
UF1.LB3.Caption = "Aucune ligne sélectionnée"
vs = LCase(UF1.TB1.Text)
If UF1.TB1.TextLength < 1 Then Exit Sub
For L = 1 To Cells(65536, c).End(xlUp).Row
If IsNumeric(Cells(L, c)) Then
vc = Str(Cells(L, c))
Else
vc = LCase(Cells(L, c))
End If
If Not InStr(1, vc, vs) = 0 Then
UF1.LB2.AddItem l & " : " & Cells(L, c).Value
n = n + 1
End If
Next L
If n > 0 Then UF1.LB2.ListIndex = 0
If n = 0 Then UF1.LB3.Caption = "Aucune ligne sélectionnée"
If n = 1 Then UF1.LB3.Caption = "Une ligne sélectionnée"
If n > 1 Then UF1.LB3.Caption = n & " lignes sélectionnées"
End Sub

A voir

@+
 
Re : recherche d'un mot

Merci à tous,

Tout d'abord Wazzebu, ton nouveau code marche mieux, il sélectionne la bonne ligne mais pas la bonne colonne, toujours la fournisseur(colonne 2).Il faudrait si c'est possible qu'il ne sélectionne pas les titres.
MAis on est sur la bonne voie..

Merci Robert et Pierrot, avec ce nouveau code tout marche tres bien.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
573
Réponses
7
Affichages
454
Réponses
5
Affichages
911
Retour