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 de données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 68
    Par défaut Recherche de données
    Bonjour,
    je voudrais savoir s'il est possible dans une feuille Excel contenant plusieurs données d'extraire et de remplir une listbox suivant un critère précis avec toutes les valeurs contenant au minimum ce critère.
    Pour + de clarté :
    critère = AMICALE base = AMICALE DE POMPIERS
    AMICALE BOULE
    ANPE
    BASKET BALL
    ASSOCIATION AMICALE D'ENTRAIDE

    résultat dans listbox=>AMICALE DE POMPIERS
    AMICALE BOULE
    ASSOCIATION AMICALE D'ENTRAIDE
    Merci.

  2. #2
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    bonjour,

    sans autre precision, on va definir des criteres, en colonne A, la liste des association, En textbox1 = Le mot à decouvrir, lst = nom de la listbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    sub traitement()
    dim i as long
    with userform1
           .lst.clear
           for i = 1 to sheets("Feuil1").range("A65536").end(xlup).row
               if instr(sheets("Feuil1").range("A" & i),.textbox1)>0 then
                  .lst.additem sheets("Feuil1").range("A" & i)
               end if
           next i
    end with
    end sub
    bonne journée

  3. #3
    Membre Expert Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Par défaut
    Si La Range("A1") est l'entete de colonne
    for i = 1 to sheets("Feuil1").Range("A1").End(xlDown).Row)
    Pour eviter de boucler sur 65536 lignes

  4. #4
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    re:

    regarde bien jean-pierre, .end(xlup).row ---> Remonte à la derniere ligne saisie, pour eviter de boucler sur les 65536 lignes

    et en passant par en dessous, cela evite, s'il y a une cellule vide dans la colonne, de s'y arreter et de rater les lignes suivantes

    Salutations

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 68
    Par défaut
    Merci a vous deux,je ne connaissais pas l'instructuion Instr.
    Je la teste sur un simple fichier, mais j'ai une erreur13 Type incompatible.
    Ne vois pas pourquoi?
    Ci joint le fichier test.
    Merci
    P.S : ai essayer aussi avec LIKE sans plus de résultat, si vous connaissez.
    Fichiers attachés Fichiers attachés

  6. #6
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    re:

    il n'y a que 3 criteres maxi dans un instr

    1 chaine de caractere
    2 caractere (ou chaine) recherchée dans la chaine
    3 position de départ (si omis, commence à 1 )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If InStr(Feuil1.Range("a" & x), crit) > 0 Then
    dans ta demande seuls 2 criteres suffisent

  7. #7
    Membre Expert Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Par défaut
    merci Wilfried,

    J'ai cherché cette fonction que je ne connaissais pas mais je n'avais rien trouvé
    Merci de m'avoir éclairé

  8. #8
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 68
    Par défaut
    Je vais essayer celà de suite.Je pensais que la position de départ représentait la premiére cellule à partir de laquelle la comparaison s'effectuait.
    Effectivement en regardant l'aide VBA pour instr, le 1er critere correspond a "start"et il doit être de type numérique pour signifier à partir d'où commence la recherche.
    C'est comme la fonction Mid().
    En tout cas merci bcp Wilfried...et JP.

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

Discussions similaires

  1. [SQL] Comment rechercher une donnée selon un critère !
    Par Il_TiRaNNo dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 09/05/2007, 15h59
  2. recherche de donnée dans 2 colonnes
    Par zeloutre dans le forum Access
    Réponses: 10
    Dernier message: 05/03/2007, 13h08
  3. [WinDev 9] Recherche de données
    Par elgigante dans le forum WinDev
    Réponses: 4
    Dernier message: 03/12/2006, 19h48
  4. Recherche de Donnée dans une base
    Par Poisson59 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 19/09/2006, 12h40
  5. Réponses: 1
    Dernier message: 30/08/2006, 19h08

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