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

Excel Discussion :

Extraire une donnée d'une cellule par rapport à une liste


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2020
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Extraire une donnée d'une cellule par rapport à une liste
    Bonjour,

    J'ai besoin d'extraire une donnée d'une cellule (nom de cheval) par rapport à une liste afin de ramener la donnée si elle est trouvée.
    Je m'explique :
    J'ai une liste de chevaux dans un onglet "chevaux" en colonne A (liste qui peut contenir près d'une centaine de noms)
    J'ai un détail d'opérations liées à ces chevaux dans un onglet "opérations". Le nom du cheval apparaît dans la colonne B. J'aimerais, qu'en colonne E, le nom du cheval soit extrait en testant par rapport à la liste de l'onglet "cheval".

    J'ajoute un fichier pour une meilleure compréhension.
    J'ai évidement essayé de me débrouiller seule, mais je n'arrive pas extraire le nom du cheval en testant toutes les cellules de la liste.

    Merci de votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 055
    Points : 9 476
    Points
    9 476
    Par défaut
    Hello,
    comme ta demande ne m'a pas l'air si facile que cela à faire et comme je ne suis pas un spécialiste des formules, j'ai créé une fonction personnalisée en VBA qui m'a l'air de réaliser ce que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Function SearchWhoIsIn(Cellule, tabChevaux As Range) As String
    Debug.Print Cellule
    SearchWhoIsIn = ""
    For Each cheval In tabChevaux
    If InStr(1, Cellule, cheval) > 0 Then
        SearchWhoIsIn = cheval
    End If
    Next
    End Function
    La fonction a comme premier argument la cellule où se trouve le texte dans lequel on doit chercher un cheval. Le deuxième argument est la plage qui correspond aux noms de chevaux de la première feuille.
    Voici ce que cela donne :
    Nom : Chevaux.PNG
Affichages : 150
Taille : 25,1 Ko

    Chevaux dans la formule correspond à la plage nommée englobant les noms des chevaux de la première feuille.

    Le classeur exemple en pièce jointe.

    [EDIT] oops à mettre en commentaire le Debug.print du code VBA
    Ami calmant, J.P
    Fichiers attachés Fichiers attachés

  3. #3
    Candidat au Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2020
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Trop top !
    Rien n'est impossible avec Excel et avec ceux qui savent.... et qui partagent...

    Je te remercie d'avoir solutionner ce problème ; la solution me va tout à fait !

  4. #4
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 055
    Points : 9 476
    Points
    9 476
    Par défaut
    Une version plus optimisée de la fonction personnalisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Function SearchWhoIsIn(Cellule, tabChevaux As Range) As String
    SearchWhoIsIn = ""
    For Each cheval In tabChevaux
      If InStr(1, Cellule, cheval) > 0 Then
         SearchWhoIsIn = cheval
         Exit Function
      End If
    Next
    End Function
    On sort de la boucle dès que le cheval a été trouvé comme cela on ne balaie pas toute la liste à chaque fois

  5. #5
    Candidat au Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2020
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    J'ai quand même une petite question : dans ton code VBA, tu mets en ligne 3 "For Each cheval In tabChevaux". Mais comment est défini "cheval" ?

    Merci

  6. #6
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 055
    Points : 9 476
    Points
    9 476
    Par défaut
    Citation Envoyé par Gremlins49 Voir le message
    J'ai quand même une petite question : dans ton code VBA, tu mets en ligne 3 "For Each cheval In tabChevaux". Mais comment est défini "cheval" ?
    C'est vrai que j'aurai dû définir la variable Cheval au début de la fonction :
    Si il y a Option Explicit au début du module VBA, il y a une erreur de compilation si la variable n'est pas déclarée. Mais ne je n'avais pas mis cette option.

  7. #7
    Candidat au Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2020
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci, ça marche nickel dans mon fichier.

    Bon week-end

Discussions similaires

  1. [XL-2007] Incrémentation de cellule par rapport à une autre
    Par schmitx dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/01/2010, 11h25
  2. [XL-2003] Recherche de cellules par rapport à une autre
    Par martinmacfly dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/12/2009, 14h27
  3. [XL-2007] Conditionnal formating d'une cellule par rapport à une autre
    Par rouget dans le forum Excel
    Réponses: 5
    Dernier message: 10/11/2009, 23h54
  4. selection cellule par rapport a une chaine de caractere
    Par fullmetalknet dans le forum Conception
    Réponses: 30
    Dernier message: 06/11/2009, 09h30
  5. Copier/coller d'une cellule par rapport à une autre
    Par AzelRoth dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/02/2009, 15h54

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