IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Boucle recherche commandbutton


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 72
    Par défaut Boucle recherche commandbutton
    Bonjour à tous, voilà, j'ai un petit soucis que je cherche depuis un peu trop longtemps à mon gout ! et je séche ! Ca m'ennerve !

    Voilà, mon soucis, je voudrais que lorsque je clique sur un bouton de mon userform, il me trouve une ligne par rapport à une valeur de textbox (jusque là tout va bien), et lorsque je ne suis pas satisfait de ce que j'ai trouvé, je reclique sur le meme bouton (ou ailleurs) pour qu'il me trouve la ligne suivante avec la meme valeur, je sais que c'est une histoire de "do", "after", "findnext", mais bon, j'ai trop de mal sur ce cout là !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Private Sub CommandButton8_Click()
    Dim MotCherche, plage As range, Cell As range, range As range, c As Variant
    MotCherche = Me.TextBox1.Text
    Dim colonnerecherche As String
    Dim owbk As Workbook
     
    Set owbk = Workbooks.Open("D:\BIT PAPIER\ENREGISTREMENT.xls")
    If ActiveWorkbook.ReadOnly = True Then
         ActiveWorkbook.Close False
            Exit Sub
            End If
     
    'On lance la recherche sur la colonne ColonneRecherche
    With Worksheets(1).range("L1:L500")
        Set c = .Find(MotCherche, LookIn:=xlValues, lookat:=xlWhole)
        If Not c Is Nothing Then 'donnée trouvée
                'On place les données de la ligne dans les textbox
     
     
                Me.TextBox48.Value = Cells(c.Row, 8).Value
                Me.TextBox49.Value = Cells(c.Row, 9).Value
                Me.TextBox50.Value = Cells(c.Row, 10).Value
                Me.TextBox51.Value = Cells(c.Row, 11).Value
     
    'Voici mon probléme !!!!
                Do
                Set c = .FindNext(MotCherche, after:=c, LookIn:=xlValues,  lookat:=xlWhole)
                If Not c Is Nothing Then
                Loop While
     
        End If
     
    MotCherche = Me.TextBox1.Text
    If MotCherche = "" Then
    MsgBox "Tapez le nom pour commencer la recherche", _
         vbCritical, " - Manque nom - "
    End If
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    Exit Sub
    End Sub

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        With Worksheets(1).Range("L1:L500")
            Set c = .Find(MotCherche, LookIn:=xlValues, lookat:=xlWhole)
            If Not c Is Nothing Then 'Si j'ai trouvé une donnée, j'entre dans la boucle
                NoLigne = c.Row
                Do
                    Me.TextBox48.Value = Cells(c.Row, 8).Value
                    Me.TextBox49.Value = Cells(c.Row, 9).Value
                    Me.TextBox50.Value = Cells(c.Row, 10).Value
                    Me.TextBox51.Value = Cells(c.Row, 11).Value
                    Set c = .FindNext(c)
                Loop While Not c Is Nothing And c.Row > NoLigne
            End If
        End With

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 72
    Par défaut
    Bonjour à tous ! Merci pour la réponse trés rapide, mais ça marche pas comme je voudrais, en fait, avec ça, ça me met dans mes textbox le dernier résultat, et quand je reclique sur le bouton, ça me fait rien d'autre que de m'afficher le dernier résultat... Vous avez une solution ?

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Alors tu supprimes la boucle.
    Dans l'entête de la feuille de code, tu déclares une variableet dans le clic du bouton tu mets ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub tonbouton_click()
        if NoLigne = 0 then NoLigne = 1
        With Worksheets(1).Range("L" & NoLigne & ":L500")
            Set c = .Find(MotCherche, LookIn:=xlValues, lookat:=xlWhole)
            If Not c Is Nothing Then 
                    NoLigne = c.Row + 1
                    Me.TextBox48.Value = Cells(c.Row, 8).Value
                    Me.TextBox49.Value = Cells(c.Row, 9).Value
                    Me.TextBox50.Value = Cells(c.Row, 10).Value
                    Me.TextBox51.Value = Cells(c.Row, 11).Value
                else
                    Msgbox "Y'a plus !"
            End If
        End With
    End sub

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 72
    Par défaut
    Ca ne marche toujours pas ! Rien de plus que d'afficher un résultat, et pas les autres ! Je sais, je suis chiant...

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu as bien déclaré NoLigne "en haut", avant toutes les procédures ?

  7. #7
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 72
    Par défaut
    Oui oui, je l'ai bien défini...

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Et "MotCherche" tu le prends où ? Si tu ne l'as pas déclaré comme NoLigne, il n'y a rien dedans... Si tu le prends dans un textbox ou dans une liste, tu dois l'initialiser dans le clic du bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub tonbouton_click()
    Dim MotCherche as variant
          MotCherche = Textbox1
    'ou
          MotCherche = Listbox1

  9. #9
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 72
    Par défaut
    C'est fait ça, mais il me remonte juste la derniére ligne et ne continue pas quand je reclique sur le bouton...

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Montre le code de ton userform. S'il est trop long, supprime ce qui ne sert pas pour ton test.
    Ce que tu dis revient à dire que NoLig n'est pas conservé entre deux clics.

  11. #11
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour tlm,

    Une proposition à ma sauce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Private Sub CommandButton8_Click()
    Dim Cherche1 As Range, Cherche2 As Range, Mot As String, X As String
     
    Mot = Me.TextBox1.Text
     
    With Sheets(1).Range("L1:L500")
        Set Cherche1 = .Find(Mot)
        If Not Cherche1 Is Nothing Then
            X = Cherche1.Address
            Me.TextBox48.Value = .Cells(Cherche1.Row, 8).Value
            Me.TextBox49.Value = .Cells(Cherche1.Row, 9).Value
            Me.TextBox50.Value = .Cells(Cherche1.Row, 10).Value
            Me.TextBox51.Value = .Cells(Cherche1.Row, 11).Value
     
            Select Case MsgBox("Voulez-vous poursuivre la recherche ?", vbYesNo + vbQuestion)
            Case vbYes
    suite:
                Set Cherche2 = .FindNext(Range(X))
                If Not Cherche2 Is Nothing And Cherche2.Address <> Cherche1.Address Then
                    X = Cherche2.Address
                    Me.TextBox48.Value = .Cells(Cherche2.Row, 8).Value
                    Me.TextBox49.Value = .Cells(Cherche2.Row, 9).Value
                    Me.TextBox50.Value = .Cells(Cherche2.Row, 10).Value
                    Me.TextBox51.Value = .Cells(Cherche2.Row, 11).Value
     
                    Select Case MsgBox("Voulez-vous poursuivre la recherche ?", vbYesNo + vbQuestion)
                    Case vbYes
                        GoTo suite
                    Case Else
                        MsgBox "recherche interrompue"
                        Exit Sub
                    End Select
                Else
                    MsgBox "pas d'autre " & Mot & " de trouvé"
                End If
            Case Else
                MsgBox "recherche interrompue"
                Exit Sub
            End Select
        Else
            MsgBox "pas d'autre " & Mot & " de trouvé"
        End If
    End With
     
    End Sub

  12. #12
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 72
    Par défaut
    Bonsoir à tous, je tenais à remercier ceux qui m'ont aidé car ça m'a été trés utile, juste à adapter le code (avec quelques détails) et à enlever des points qui font empecher la formule de fonctionner

    Ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Me.TextBox48.Value = .Cells(Cherche1.Row, 8).Value
            Me.TextBox49.Value = .Cells(Cherche1.Row, 9).Value
            Me.TextBox50.Value = .Cells(Cherche1.Row, 10).Value
            Me.TextBox51.Value = .Cells(Cherche1.Row, 11).Value
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Me.TextBox48.Value = Cells(Cherche1.Row, 8).Value
            Me.TextBox49.Value = Cells(Cherche1.Row, 9).Value
            Me.TextBox50.Value = Cells(Cherche1.Row, 10).Value
            Me.TextBox51.Value = Cells(Cherche1.Row, 11).Value
    En tous cas, merci beaucoup à tous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Réaliser une boucle sur commandbutton
    Par Ichigo_Mick dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/06/2014, 23h45
  2. [AC-2007] Probléme de boucle recherchant dans une table
    Par amartik dans le forum VBA Access
    Réponses: 3
    Dernier message: 21/04/2010, 18h27
  3. Boucle recherchant les IPTC
    Par Gunner4902 dans le forum Langage
    Réponses: 2
    Dernier message: 09/10/2008, 15h50
  4. VBA EXCEL : boucle, recherche ligne
    Par sebi78 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 03/04/2007, 14h02
  5. recherche dans une base de donnée+boucle
    Par eric205 dans le forum Bases de données
    Réponses: 8
    Dernier message: 15/03/2005, 22h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo