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 :

Recherche d'un mot sur excel [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Points : 8
    Points
    8
    Par défaut Recherche d'un mot sur excel
    Bonsoir à tous,


    Je souhaiterais savoir s'il existe une fonction qui permette de chercher un mot contenu dans une cellule.
    Par exemple, je veut chercher le prix de l'article "bloc creux", alors que dans sa cellule excel il est appelé "bloc creux 20x20x50 NF B40 SEPA".
    Es-ce possible ?

    Merci de me répondre,

    Nikes, nouveau membre.

  2. #2
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Regarde l'aide sur la fonction FIND, l'exemple est facile a adapter
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Re,

    Je bloque là.
    Je souhaite trouver le prix d'un article rapidement pour qu'excel me copie les résultats dans une autre feuille et ainsi voir tt les résultats de ma recherche.. Mais avec la fonction find je n'arrive pas à faire une boucle pour qu'il me trouve toutes les valeurs correspondantes à ma recherche.

    Je vous joints mon fichier,

    Merci.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Bonjour,
    Je n'ai pas ouvert ton fichier, comme beaucoup en générale je n'ouvre pas les fichier joints
    Mais voici un exemple pour boucler
    (il viens tout droit de l'aide excel....
    Exemple
    Cet exemple montre comment rechercher toutes les cellules de la plage A1:A500 dans la première feuille de calcul contenant la valeur 2 et comment la remplacer par la valeur 5.

    Visual Basic pour Applications
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    With Worksheets(1).Range("a1:a500")
        Set c = .Find(2, lookin:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                c.Value = 5 'ici tu fais ce que tu veux faire avec le résultat de ta recherche
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
    End With
    Pour la déclaration des variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim c as range
    dim firstAddress as string
    Essaye de l'adapter, et met de préférence directement ton code (avec les balise code, regarde le premier message du forum pour savoir comment)
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    J'ai pas l'aide d'excel, c'est pour ça que c'est pas un reflex pour moi.

    Voilà mon code. Quand je lance la recherche, il ne se passe plus rien depuis que j'ai le .findnext

    Pour info :
    Combobox1 : Choix du fournisseur en fonction des feuilles du classeur
    Combobox2 : Choix du chantier
    Combobox 3 :facultatif, sélectionne une categorie (en cours)
    Textbox1 : saisie de la recherche.

    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
    Private Sub CommandButton1_Click()
     
     
    Dim cellulecherche As Range
    Dim ligne, i, g As Integer
    Dim firstadress As String
     
     
    With Worksheets(ComboBox1.Value).Select
     
     
    lig = 1
     
     
            Set cellulecherche = Range(Cells(lig, 2), Cells(1000, 2)).Find(what:="*" & TextBox1 & "*", LookIn:=xlValues)
            If cellulecherche Is Nothing Then
            firstadress = cellulecherche.Address
            'MsgBox ("Aucun produit ne correspond à votre recherche")
     
            Do
            ligne = (cellulecherche.Row)
            Sheets("Recherche").Cells(100, 2).End(xlUp).Offset(1, 0) = Sheets(ComboBox1.Value).Cells(ligne, 2).Value
            Sheets("Recherche").Cells(100, 1).End(xlUp).Offset(1, 0) = cellulecherche.Offset(0, -1).End(xlUp).Value
     
            Set cellulecherche = .FindNext(cellulecherche)
            Loop While Not cellulecherche Is Nothing And cellulecherche.Address <> firstAddress
     
            End If    
     
    'On affiche les critères de recherche sur le feuille "Recherche" :
    Sheets("Recherche").Cells(9, 2) = ComboBox1.Value
    Sheets("Recherche").Cells(10, 2) = ComboBox2.Value
    Sheets("Recherche").Cells(11, 2) = TextBox1.Value
     
    'On se place dans la feuille "Recherche" pour visualiser les résultats :
    Sheets("Recherche").Select
     
    Unload UserForm1
     
     
    End With
    End Sub
    Merci de jeter un oeil

  6. #6
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If NOT cellulecherche Is Nothing Then
    Ca devrais aider
    La prochaine fois utilise le mode pas a pas tu aurais vu qu'il n'entre pas dans la boucle if
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  7. #7
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Ok, merci.

    J'ai cependant une erreur d'éxécution 424 : objet requis, a la ligne contenant le .findnext

    Une idée??

  8. #8
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Oui c'est normale find et findnext sapplique a un range
    De plus je suis étonné que le with avec un selct fonctionne
    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
     
    Private Sub CommandButton1_Click()
     
     
    Dim cellulecherche As Range
    Dim ligne, i, g As Integer
    Dim firstadress As String
     
     
    With Worksheets(ComboBox1.Value)
     
     
    lig = 1
     
     
            Set cellulecherche = .Range(Cells(lig, 2), Cells(1000, 2)).Find(what:="*" & TextBox1 & "*", LookIn:=xlValues)
            If cellulecherche Is Nothing Then
            firstadress = cellulecherche.Address
            'MsgBox ("Aucun produit ne correspond à votre recherche")
     
            Do
            ligne = (cellulecherche.Row)
            Sheets("Recherche").Cells(100, 2).End(xlUp).Offset(1, 0) = Sheets(ComboBox1.Value).Cells(ligne, 2).Value
            Sheets("Recherche").Cells(100, 1).End(xlUp).Offset(1, 0) = cellulecherche.Offset(0, -1).End(xlUp).Value
     
            Set cellulecherche =. Range(Cells(lig, 2), Cells(1000, 2)).FindNext(cellulecherche)
            Loop While Not cellulecherche Is Nothing And cellulecherche.Address <> firstAddress
     
            End If    
     
    'On affiche les critères de recherche sur le feuille "Recherche" :
    Sheets("Recherche").Cells(9, 2) = ComboBox1.Value
    Sheets("Recherche").Cells(10, 2) = ComboBox2.Value
    Sheets("Recherche").Cells(11, 2) = TextBox1.Value
     
    'On se place dans la feuille "Recherche" pour visualiser les résultats :
    Sheets("Recherche").Select
     
    Unload UserForm1
     
     
    End With
    End Sub

    Ca devrais mieu fonctionner
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  9. #9
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Salut,

    J'ai modifié mon programme en appliquant une range à Findnext, mais quand je lance ma recherche, celle-ci dure très longtemps et je n'en vois pas le bout en fait .

    Comment puis-je modifier le programme pour avoir une recherche rapide ?

    Merci

  10. #10
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    On fait difficilement plus rapide que le find, par contre avance en mode pas a pas voir si tu as bien une chance de sortir de la boucle while

    Essaye de chercher une valeur qui apparait peu et avance en mode pas a pas. Pour voir ce que ca donne, (pense a afficher les variable local menu affichage.variable local)
    Et regarde ce que cela donne
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  11. #11
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Hello

    Voilà, là ça marche. J'ai viré le select avec le with.

    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
    Private Sub CommandButton1_Click()
     
    Dim cellulecherche As Range
    Dim ligne, i, g As Integer
    Dim adress1 As String
     
    lig = 1
     
    With Worksheets(ComboBox1.Value).Range(Cells(lig, 2), Cells(1000, 2))
     
            Set cellulecherche = .Find(what:="*" & TextBox1 & "*", LookIn:=xlValues)
            If Not cellulecherche Is Nothing Then
            adress1 = cellulecherche.Address
     
            Do
            ligne = (cellulecherche.Row)
            Sheets("Recherche").Cells(100, 2).End(xlUp).Offset(1, 0) = Sheets(ComboBox1.Value).Cells(ligne, 2).Value
            Sheets("Recherche").Cells(100, 1).End(xlUp).Offset(1, 0) = cellulecherche.Offset(0, -1).End(xlUp).Value
     
            Set cellulecherche = .FindNext(cellulecherche)
            Loop While Not cellulecherche Is Nothing And cellulecherche.Address <> adress1
     
            End If
     
    'On affiche les critères de recherche sur le feuille "Recherche" :
    Sheets("Recherche").Cells(9, 2) = ComboBox1.Value
    Sheets("Recherche").Cells(10, 2) = ComboBox2.Value
    Sheets("Recherche").Cells(11, 2) = TextBox1.Value
     
    'On se place dans la feuille "Recherche" pour visualiser les résultats :
    Sheets("Recherche").Select
     
    Unload UserForm1
     
    End With
    End Sub
    Par contre, avez-vous une astuce pour pouvoir chercher le produit "Chaussure foot Adidas T.44", en tapant "Adidas chaussure foot" par exemple.
    Dois-je créer une deuxième textbox??

    voilà merci de me pister.

  12. #12
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Le
    decvrais déjà suffire
    Après il y a les majuscule
    Je crois que avec un
    OPTION COMPARE TEXT
    en début de module
    ca devrais permettre de ne pas en tenir compte mais là je ne peux pas tester
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

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

Discussions similaires

  1. Recherche de valeur proche sur Excel 2010
    Par Frizz dans le forum Excel
    Réponses: 2
    Dernier message: 19/06/2013, 22h37
  2. Réponses: 8
    Dernier message: 14/08/2006, 12h47
  3. Réponses: 3
    Dernier message: 25/07/2005, 18h41
  4. Recherche d'un mot avec LIKE sur plusieurs champs
    Par reynhart dans le forum Langage SQL
    Réponses: 16
    Dernier message: 26/11/2004, 17h41

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