Find et FindNext dans deux macros différentes

Ptitgoud

XLDnaute Nouveau
Bonjour le forum,

J'aimerais effectué une recherche d'un terme dans un classeur en renvoyant certaines informations dans une userform. Pour cela j'ai écrit la macro suivante, qui fonctionne correctement :

VB:
Public Wsh As Worksheet
Public cellule As Range
Public Valeur As String

Private Sub Recherche_Click()
Application.ScreenUpdating = False
Valeur = TextBox1.Value

If Valeur = "" Then
MsgBox "Vous n'avez pas indiqué de code AGI"
End If

If Valeur <> "" Then
    For Each Wsh In ThisWorkbook.Worksheets
    Set cellule = Wsh.Cells.Find(Valeur)
        If Not cellule Is Nothing Then
            Label1.Caption = "Produit enregistré"
            Wsh.Activate
            ligne = cellule.Row
            colonne = cellule.Column
            Label2.Caption = Cells(ligne, colonne - 5).Value
            Label3.Caption = ActiveSheet.Name
            Sheets("Accueil").Select
            GoTo Sortir

        Else
            Label1.Caption = "Produit non enregistré"
            Label2.Caption = ""
            Label3.Caption = ""
        End If
    Next
End If

Sortir:
Application.ScreenUpdating = True
End Sub

Mais il est possible que le terme recherché soit inscrit plusieurs fois dans mon classeur Excel. Donc pour cela j'aimerais créer un bouton suivant qui méne à l'occurence suivante et qui nous renseigne comme pour la première recherche.
Malheureusement la macro suivante que j'ai écrite ne fonctionne pas au niveau du findNext

VB:
Private Sub Suivant_Click()
Application.ScreenUpdating = False
Valeur = TextBox1.Value

If Valeur = "" Then
MsgBox "Vous n'avez pas indiqué de code AGI"
End If

If Valeur <> "" Then
    For Each Wsh In ThisWorkbook.Worksheets
    Set cellule = Wsh.Cells.FindNext(cellule)
        If Not cellule Is Nothing Then
            Label1.Caption = "Produit enregistré"
            Wsh.Activate
          ligne = cellule.Row
            colonne = cellule.Column
            Label2.Caption = Cells(ligne, colonne - 5).Value
            Label3.Caption = ActiveSheet.Name
            Sheets("Accueil").Select
            GoTo Sortir

        Else
            Label1.Caption = "Produit non enregistré"
            Label2.Caption = ""
            Label3.Caption = ""
        End If
    Next
End If

Sortir:
Application.ScreenUpdating = True
End Sub

Si quelqu'un pourrait m'aider à identifier le problème je l'en remercie d'avance!

Je vous joins un fichier pour mieux comprendre
 

Pièces jointes

  • FindNext.xls
    148.5 KB · Affichages: 85
Dernière édition:

Ptitgoud

XLDnaute Nouveau
Re : Find et FindNext dans deux macros différentes

Re et bonjour,

J'aime bien la solution proposée par Fo_rum, mais a quoi sert la partie à droite de la userform? (pour listbox).
Cela renvoie la même chose que la partie gauche ?

Edit : Ah c'est bon je viens de remarquer la différence entre les deux, je ne m'étais pas trop intéressé au code !

Et l'option de si plus de 2 produits m'intéresse également en fait ... comment je peux faire cela?
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : Find et FindNext dans deux macros différentes

Bonsoir,
ci-joint fichier :
- lorsque le code entré n'existe pas : affichage "code inexistant"
- lorsque le code entré est unique : affichage "code unique"
- lorsque le code entré existe en 2 exemplaires, le code suivant est affiché automatiquement lorsque clic sur "suivant"
- lorsque le code entré existe en plus de 2 exemplaires et suite au clic sur "suivant" : affichage d'une listbox avec les autres codes existants=>le double clic sur la ligne sélectionnée renseigne les labels 2, 3 et 7.
Il ne te reste plus qu'à régler le problème de recherche de la fiche technique.
Teste et dis-nous.
A+
 

Pièces jointes

  • FindNext-2.xls
    123.5 KB · Affichages: 39

Fo_rum

XLDnaute Accro
Re : Find et FindNext dans deux macros différentes

Bonsoir,

comme de nombreux demandeurs ont des problèmes avec le contrôle ListView, j'ai présenté les 2 cas. Si tu peux le garder(plus complet), supprime les procédures de ListBox et remplace celle du bouton "Effacer" par :
Code:
Private Sub CommandButton1_Click()
  Sheets("Accueil").Select
  ListView1.ListItems.Clear
  TextBox1.Value = ""
  TextBox1.SetFocus
  Me.Height = 160
End Sub
Je n'ai pas compris la demande concernant le nombre des cas.
Dans l'état actuel de ma proposition, ce nombre n'est pas limité. Veux-tu le restreindre à 2 ?

@ david 84 :) : je n'ai pas le temps de voir ta dernière production mais j'y jetterai un oeil
dés que possible.
 

Ptitgoud

XLDnaute Nouveau
Re : Find et FindNext dans deux macros différentes

Bonjour Fo_rum et david84,
Désolé de ne pas avoir répondu plus tôt je n'avais pas vu les réponses.
J'ai gardé vos solutions concernant l'utilisation d'une listbox pour régler mon problème!
Je vous remercie de vous être attardé sur mon cas!

Bonnes fêtes de fin d'année!
 

david84

XLDnaute Barbatruc
Re : Find et FindNext dans deux macros différentes

Re
Désolé de ne pas avoir répondu plus tôt je n'avais pas vu les réponses.
Comment as-tu fais pour ne pas les voir ? N'as-tu pas suivi le fil que tu as toi-même créé ?
J'ai gardé vos solutions concernant l'utilisation d'une listbox pour régler mon problème!
Mais encore ? Nous t'avons proposé chacun une solution.
Les as-tu testées ? Qu'en as-tu pensé ? Laquelle as-tu retenu et pour quelle raison ?
A+
 

Ptitgoud

XLDnaute Nouveau
Re : Find et FindNext dans deux macros différentes

Re,

Je n'avais pas vu les réponses car je n'étais pas repassé le lendemain suite à mes difficultés de connexion à internet et ensuite j'ai complétement oublié de revenir, ayant changer de projet entre deux, voir si il y avait de nouvelles réponses à mon sujet.
Mais mieux vaut tard que jamais non?

Pour en revenir au sujet, j'ai du oublier l'idée des listView étant donné que j'ai une erreur depuis quelques temps avec "Bibliothèque d'objet introuvable ..." (j'ai cherché vite fait sur le net, cela me parle à chaque fois d'une erreur due à une mise à jour Microsoft ... je n'ai pas cherché à en savoir plus, de toute façon je ne peux pas installer de patch correctif sur l'ordinateur étant au boulot)

J'ai donc utilisé une ListBox. Celle proposée la première fois par Fo_rum correspond exactement à ce que j'attends, il suffit de cliquer sur le nom apparaissant dans cette liste pour selectionner son produit.
La dernière que tu as proposée est également très bien mais je trouve le fait, que la listbox s'affiche en plus ainsi que de devoir cliquer sur le produit puis revenir cliquer sur accéder a la fiche, contraignant pour devoir selectionner son produit.
J'ai donc préféré la réponse proposée par Fo_rum juste d'un point de vue pratique, même si au final vos eux macros font la même chose.
Mais ce que tu m'as proposé m'a permis d'en apprendre d'avantage sur leur fonctionnement et je t'en remercie!
 

Discussions similaires

Réponses
12
Affichages
612

Membres actuellement en ligne

Statistiques des forums

Discussions
312 400
Messages
2 088 086
Membres
103 710
dernier inscrit
amin Saadaoui