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 :

Macro "Recherche une Valeur" dans un Userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 15
    Par défaut Macro "Recherche une Valeur" dans un Userform
    Bonjour,

    j'aurai besoin d'un peu d'aide pour une macro que j'ai dans un userform.

    Le but est simplement de rechercher dans une colonne (colonne B) une valeur rentrée dans un userform.

    La macro ne trouve pas la valeur (et me renvoie un msgbox "book non trouvé" alors qu'elle s'y trouve bien.

    voici mon code:

    Merci beaucoup pour votre aide!!

    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
    Dim repere As Boolean
    Dim trouve As Boolean
    Set OngletLiffe = ThisWorkbook.Worksheets("Liffe")
     
    repere = False
    trouve = False
     
    If (UserForm1.CbookFO = "") Then
        VbookFO = ""
    Else
        VbookFO = UserForm1.CbookFO
    End If
     
     
    If (VbookFO <> "") Then 'vérifie que le champ de l'userform n'est pas vide
     
        If (Not IsNumeric(VbookFO)) Then 'vérifie que le champ n'est pas numérique
            ligne = 1
     
            Do While (repere = False) 'boucle recherchant la valeur
            ligne = ligne + 1
     
                If OngletLiffe.Cells(ligne, 2).Text = "" Then
                    repere = True
                End If
                If OngletLiffe.Cells(ligne, 2).Text = Val(VbookFO) Then
                    repere = True
                    trouve = True
                End If
            Loop
            If (trouve = True) Then
                UserForm1.CbookBP2S = OngletLiffe.Cells(ligne, 1)
                UserForm1.CbookFO = OngletLiffe.Cells(ligne, 2)
                UserForm1.Ctrader = OngletLiffe.Cells(ligne, 3)
                UserForm1.Cmiddle = OngletLiffe.Cells(ligne, 4)
     
            Else
                MsgBox ("Book non trouvé!")
            End If
        Else
            MsgBox ("Veuillez saisir un book valide")
        End If
    Else
    MsgBox ("Veuillez choisir un book à rechercher SVP")
    End If

  2. #2
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut


    Bonjour,


    commence par enlever les .text, et eventuellement remplace les par .Value (sans ça fonctionnera quand même).

    Ensuite passe en mode debugueur et controle ton code et ce qu'il y a dans les différentes variables. Pour ne pas être sensible à la casse utilises UCASE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If UCASE(OngletLiffe.Cells(ligne, 2)) = UCASE(VbookFO) Then

  3. #3
    Membre expérimenté
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Par défaut
    Bonjour,
    Il faut enlever les dans ton code
    Sinon tu aurai plus facile à faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim Plage as Range, Trouve as Range
    Dim VbookFO as string
     
    Set Plage=Range("B1","B" & Range("B65536").End(XlUp).Row)
    VbookFO=UserForm1.CbookFO.Value
    Set Trouve= Plage.Find(VbookFO,xlValue,XlByColumns)
    If Not Trouve is Nothing Then
    'Trouve est de type range, pour récupérer la position, fait
    'Trouve.Address
    'ou Trouve.Row
    'ou Trouve.Column
    ... 
    End If

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 15
    Par défaut
    Merci aalex_38 et diude54!

    En rajoutant Ucase ca marche parfaitement! comme quoi!

    Javais fait le débugeur et je me suis rendu compte que le problème était dans cette partie du code (dans la boucle) mais je ne savais pas comment le résoudre.

    Encore merci et bonne journée!

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

Discussions similaires

  1. Rechercher une valeur proche dans tableau à partir d'une liste
    Par bourgui78 dans le forum Général Python
    Réponses: 9
    Dernier message: 15/02/2013, 10h36
  2. [XL-2003] Macro pour rechercher une valeur en fonction de la valeur d'une cellule
    Par Rook93 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/01/2013, 11h42
  3. [Toutes versions] Rechercher une valeur max dans une plage de cellules variable
    Par Laur3nt62 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/05/2011, 19h34
  4. Rechercher une valeur précise dans une table
    Par tonton54 dans le forum MySQL
    Réponses: 5
    Dernier message: 28/10/2008, 15h58
  5. Rechercher une valeur particulière dans une table
    Par stefsas dans le forum SAS Base
    Réponses: 2
    Dernier message: 22/09/2008, 17h40

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