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 :

Rechercher une valeur sous VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 32
    Par défaut Rechercher une valeur sous VBA
    Bonjour le forum,

    Comment faire, en VBA, pour entrée une valeur et la chercher dans le tableau colonne B.

    J'ai le tableau avec 2 colonnes A et B:
    A ....................B
    /COLLC1111 48051P0012
    48051E0005 48051J0921
    48051E0007 48134E0001
    48051E0008 48051E0009
    48051E0009 48051J2902
    48051E0012 48051E0013
    48051E0013 48051E0014
    48051E0014 48051E0027
    48051E0027 48051E0007
    48051E0101 48051E0102
    48051E0102 48051E0103
    48051E0103 48051E0104
    48051E0104 48051E0005
    48051J0921 48051P0030
    48051J2902 48051P0035
    48051P0012 48051E0101
    48051P0030 48051E0008
    48051P0035 48051E0012
    48134E0001 48134E0016
    48134E0002 48134E0006
    48134E0003 48134E0009
    48134E0004 48134E0005
    48134E0005 48134E0025
    48134E0006 48172E0015
    48134E0007 48134E0004
    48134E0008 48134E0007
    48134E0009 48134E0018
    48134E0016 48134J1425
    48134E0018 48134E0008
    48134E0025 48134J0930
    48134J0930 48134E0002
    48134J1425 48134E0003
    48172E0015 48172E0016
    48172E0016 48172E0028
    48172E0017 48172E0019
    48172E0019 48172P0014
    48172E0028 48172P0004
    48172P0004 48172E0017

    et puis avec la valeur trouver dans la colonne B, je voudrais remonter au format texte /COLLC1111. En fait je veux jongler entre la colonne B et A.

    Par exemple je choisi la valeur 48172E0017 en colonne B.
    Je passe en colonne A et je cherche cette valeur. Lorsque je trouve cette valeur je prends ça valeur en colonne B ainsi de suite et je remonte jusqu'au format texte qui est /COLLC1111.

    Merci d'avance pour vos réponses!
    Fichiers attachés Fichiers attachés

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Transports

    Informations forums :
    Inscription : Août 2013
    Messages : 6
    Par défaut
    Bonjour

    Essaye d'être plus précis car j'ai du mal à te suivre !
    Tu veux rechercher une valeur dans la colonne B, mais une fois que tu l'as trouvé que veux tu en faire exactement ?

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Comment faire, en VBA, pour entrée une valeur et la chercher dans le tableau colonne B
    La recherche peut être effectuée de plusieurs manières.
    En utilisant par exemple la méthode Find de l'objet Range, en faisant une recherche séquentielle par une boucle, ou en utilisant une des méthodes de l'objet WorkSheetFunction telles que VLOOKUP et MATCH.
    Maintenant, reste à savoir comment on entre la valeur à chercher soit dans ta question "entrée de valeur" ?
    Par un inputbox, un contrôle de UserForm, une référence à une cellule ?
    Un peu plus de précision dans ta question ne serait pas superflu.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 32
    Par défaut
    bjr gduv95,
    Je te donne en exemple pour mieux comprendre

    ex: je cherche 48172E0017 en colonne B.
    je la trouve et je regarde la valeur en colonne A (ici 48172P0004)
    Puis cette nouvelle valeur je la cherche en colonne B, et je retrouve la nouvelle valeur en colonne A (48172E0028 ), ainsi de suite.
    Lorsque j'aperçois le format texte /COLLC1111, j’arrête la recherche.
    Tout cette suite de valeur je l'enregistre dans un fichier (de 48172E0017 à /COLLC1111).

    J'espère que tu comprendras

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Transports

    Informations forums :
    Inscription : Août 2013
    Messages : 6
    Par défaut
    Comme te le conseil Philippe,

    Moi j'utiliserai UserForm avec une Textbox pour rentrer la valeur à rechercher.
    Ensuite, tu cherches la valeur dans la colonne B avec une boucle (For).
    Une fois la valeur trouvée tu l'inscris dans un autre onglet. Comme nous sommes dans une boucle For, la variable est mémorisée ce qui te permets d'aller voir dans la colonne A la nouvelle valeur. Là tu n'as plus qu'a l'insérer dans une variable et recommencer ta recherche dans la colonne B. Et ainsi de suite ...

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 32
    Par défaut
    Je vous remercie pour votre aide, je vais essayer de le programmer.

  7. #7
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    C'est faisable mais il faut que tes chaines de caractères suivent un même format 48172 = 5 chiffres t'en as toujours 5 ?

    "/COLLC1111" apparait en A ou en B ? Est-ce toujours la même chaine ?

    Par exemple si tu cherches 48051... il n'y a pas de COLLC1111 donc on fait quoi ? On s'arrête à 481... ?

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Transports

    Informations forums :
    Inscription : Août 2013
    Messages : 6
    Par défaut
    Pour t'aider un peu voici une proposition de commencement.
    C'est un peu brouillon mais ça marche...
    Fichiers attachés Fichiers attachés

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 32
    Par défaut
    bjr EngueEngue,
    /COLLC1111 apparait tojours en colonne A
    On au aura toujours une valeur en format texte /COLLC1111 ou ASSIEC2424
    par exemple.
    le format par fois je peux avoir 12698 ou 31456.

    Merci gduv95!!

  10. #10
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Nawak.. bon courage

  11. #11
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour.

    Pas difficile et ultra rapide à traiter avec des variables tableaux …

    Mais il faudrait vraiment être précis ! Par exemple :
    Citation Envoyé par vefa12 Voir le message
    Tout cette suite de valeur je l'enregistre dans un fichier (de 48172E0017 à /COLLC1111).
    Un fichier, oui mais de quel type ?‼ Excel, texte ? …

  12. #12
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 32
    Par défaut
    bonjour Marc-L;
    je voudrais l'enregistrer sur feuille excel (sur la feuil 3 par exemple)

  13. #13
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Dans ton exemple, il n'y a qu'une seule feuille !

    Cette feuille n°3 existe-t-elle déjà dans ton classeur de travail ?

  14. #14
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 32
    Par défaut
    nn elle n'existe pas!!

  15. #15
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Comme quoi un effort de clarté est vraiment nécessaire ‼

    Encore un manque de précision :
    à la septième itération en remontant on se retrouve sur la ligne n°21 avec en colonne A 48134E0002,
    cette valeur se retrouve en colonne B dans une ligne supérieure (n°32),
    faut-il poursuivre le processus ou s'arrêter là vu que l'on redescend ?

  16. #16
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 32
    Par défaut
    dsl j'ai peut etre du mal a me faire comprendre!!
    il faut poursuivre le processus!!
    je dois avoir sur la feuille:
    iteration1: 48172E0017
    iteration2: 48172P0004
    iteration3: 48172E0028
    iteration4: 48172E0016
    iteration5: 48172E0015
    iteration6: 48134E0006
    iteration7: 48134E0002
    iteration8: 48134J0930
    iteration9: 48134E0025
    iteration10: 48134E0005
    iteration11: 48051E0104
    iteration12: 48051E0103
    iteration13: 48051E0102
    iteration14: 48051E0101
    iteration15: 48051P0012
    iteration16: /COLLC1111

    cdt

  17. #17
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bien, ce n'est pas alors qu'une remontée mais plutôt une simple correspondance de valeurs uniques entre chaque colonne …

    Tu dois avoir faux à partir de l'itération n°11 sinon mon code - allant jusqu'en n°37 avec ton exemple
    la recherche commençant sur la dernière ligne - serait bon pour la corbeille ! …

    Comme une procédure VBA n'est pas forcément nécessaire pour répondre à la demande, j'ai vérifié
    via une formule directement dans la feuille de calculs : la liste est identique à celle de ma procédure …
    Mon code de début d'après-midi de la veille ne finira donc pas dans la corbeille !

    Précisions quant à ma démonstration :
    - contrairement au post #7, peu importe le format des valeurs car seule la correspondance exacte est cherchée …

    - La liste est affichée dans une seconde feuille, aisément adaptable pour une autre feuille …

    - Pas d'utilisation d'une zone de saisie pour commencer la recherche,
    la procédure se déclenche en double cliquant sur une cellule en colonne A ou B. Elle peut aussi être liée à un bouton.
    Si une zone de recherche est nécessaire, via l'instruction InputBox ou une cellule dédiée
    là aussi c'est facilement adaptable …

    - La fonction Match est en fait la fonction EQUIV de la feuille de calcul.
    Pour une aide sur toute autre instruction, y positionner le curseur puis cliquer sur la touche !

    Pour suivre le processus, ne pas oublier le mode pas à pas (touche F8) et la Fenêtre Variables locales

    - Copier le code suivant dans le module de la feuille contenant le tableau source pour gérer l'évènement du double clic :
    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
    Sub Demo()
        C& = ActiveCell.Column:  R = ActiveCell.Row
        If ActiveCell.Value = "" Or C > 2 Or R < 2 Then Beep: Exit Sub
        TS = [A1].CurrentRegion.Value
        ReDim TL$(1 To UBound(TS), 1 To 1)
        If C = 2 Then L& = 1: TL(1, 1) = TS(R, 2)
     
        Do
            L = L + 1: TL(L, 1) = TS(R, 1)
            R = Application.Match(TS(R, 1), Application.Index(TS, , 2), 0)
        Loop Until IsError(R)
     
        Feuil2.Cells.ClearContents
        Feuil2.[C1].Resize(L).Value = TL
        Feuil2.Activate
    End Sub
     
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        If Not Intersect([A1].CurrentRegion, Target) Is Nothing Then Cancel = True: Demo
    End Sub

  18. #18
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 32
    Par défaut
    bonjour Marc-L,

    je viens de copier le code et lorsque je le lance pour l'executer je n'ai rien.
    Voici mon fichier, peut être que j'ai oublié quelque chose!

    cdt
    Fichiers attachés Fichiers attachés

  19. #19
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    De mon côté cela fonctionne sur deux ordinateurs avec différentes versions d'Excel …

    Là je ne peux télécharger ton fichier.
    J'espère que tu n'as pas copié le code dans un module normal mais bien dans le module de la feuille comme pourtant précisé :
    Citation Envoyé par Marc-L Voir le message
    Copier le code suivant dans le module de la feuille contenant le tableau source pour gérer l'évènement du double clic
    Sinon si tu lances directement la démonstration, la recherche commence à partir de la cellule active en colonne A ou B …


    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …


    __________________________________________________________________________________________
    Il n'y a pas que les aigles qui atteignent les sommets, les escargots aussi mais ils en bavent !

  20. #20
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 32
    Par défaut
    J'ai bien mis le code dans la feuil1, et je n'ai rien!!
    ce que je comprends pas c'est le double clic!!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Copie de valeur sous VBA avec un bouton recherche
    Par vefa12 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/08/2013, 16h01
  2. codage vba pour rechercher une valeur selon 2 critères
    Par sims92.66 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/10/2011, 21h29
  3. [AC-2007] Rechercher une valeur dans un sous-formulaire
    Par Crachover dans le forum IHM
    Réponses: 2
    Dernier message: 28/01/2010, 14h26
  4. Rechercher une valeur dans fichier Excel depuis VBA Access
    Par tribaleur dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/07/2008, 14h10
  5. Rechercher une valeur dans excel avec VBA
    Par kebab666 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/06/2007, 10h00

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