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 :

recherche sur une colonne dynamique


Sujet :

Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 121
    Points : 62
    Points
    62
    Par défaut recherche sur une colonne dynamique
    Bonjour a toutes et a tous
    J'ai un tableau sur le quel j'effectue une recherche de valeur sur une colonne précise (B).
    Si la valeur rechercher est trouvée alors je recopie sur la colonne F, la meme valeur correspondante a la valeur qui existe déja :
    ..B...F
    ------
    5 e
    3 c

    Si j'injecte une valeur = 5, j'aurai

    ..B...F
    ------
    5 e
    3 c
    5 e

    Cela marche avec la fonction RECHERCHEV(). Mon problème c'est que la colonne B change constament avec des nouvelles valeurs et je veux pouvoir prendre en considération ces nouvelles valeurs dans les recherches qui viennent après. Je m'explique en exemple :
    ..B...F
    ------
    5 e
    3 c
    J'ai une nouvelle valeur = 6 (6 n'existe pas dans mon tableau) elle est introduite et la lettre "f" est saisie par l'utilisateur :
    ..B...F
    ------
    5 e
    3 c
    6 f
    J'ai encore une nouvelle valeur = 6, je veux avoir :
    ..B...F
    ------
    5 e
    3 c
    6 f (sans que l'utilisateur intrévienne)
    Cela ne fonctionne pas car la fonction RECHERCHEV recherche que dans la colonne dèja prédéfinis qui s'arrete avant l'introduction des nouvelles valeurs.

    Merci pour vos aides.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Points : 150
    Points
    150
    Par défaut
    Bonjour,

    Cela ne peut se faire que par macro VBA car il n'existe pas de fonction standard de formule pour recalculer une zone de recherche.

    Etape 1:

    Définir un nom ("zone") qui sera utilisé par la fonction RECHERCHEV

    Ex: RECHERCHEV(valeur;zone;1;FAUX)

    Etape 2:

    Dans l'éditeur VBA, cliquez sur la feuille qui contient la "zone" et ajoutez le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub Worksheet_Change(ByVal Target As Range)
      Dim rng As Range
     
      'On vérifie que la dernière valeur saisie est bien adjacente à la zone de recherche
      Set rng = Target.Offset(-1, 0)
      If Not Intersect(Range("zone"), rng) Is Nothing Then
        'On met à jour le nom "zone" pour la fonction RECHERCHEV
        ActiveWorkbook.Names.Add "zone", rng.CurrentRegion
      End If
    End Sub
    Lorsque vous ajoutez une valeur à la liste, la zone "zone" est mise à jour automatiquement. Vous pouvez le vérifier par la formule "=LIGNES(zone)" qui s'incrémente à chaque saisie.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 121
    Points : 62
    Points
    62
    Par défaut
    Merci pour la réponse djib
    Voila j'ai testé votre code et çà ne marche pas comme je veux :
    Je fais =RECHERCHEV(A10;zone;2;FAUX) mon tableau à 2 colonnes pour l'instant.
    Le résultat est le meme que comme je faisais avant. C'est à dire il prend pas en compte les nouvelles données ajoutées dans la zone de recherche.
    Par contre quand je spécifie que la zone de recherche est deux colonnes et toutes les lignes (meme si elles sont vides), çà marche bien sauf que j'ai un message qui s'affiche me disant que je fais "référence une circulaire" !!!!!!!!
    Je ne sais pas si c'est moi qui n'as pas bien saisie comment faire??§§§§
    Dernière question : je crois bien faire mais comment vérifier que la macro est bien liée a mon classeur?
    Merci encore pour votre aide.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Points : 150
    Points
    150
    Par défaut
    Si je comprends bien vous voulez faire une liste d'historique de saisie autorisant donc les doublons dans la première colonne. Par contre il n'est pas possible de mettre la fonction RECHERCHEV dans la 2ème colonne si cette colonne fait partie de la zone de recherche (d'où la référence circulaire).

    Il faudrait dissocier la liste de recherche de la liste de saisie (historique) en faisant une liste de valeurs uniques pour la zone de recherche. Si la valeur saisie ne se trouve pas dans la liste de recherche vous l'ajoutez à la liste de recherche.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 121
    Points : 62
    Points
    62
    Par défaut
    Bonjour djib et merci pour ton aide.
    Il faudrait dissocier la liste de recherche de la liste de saisie
    Mais la liste de recherche est appelée a etre modifier grace a la liste de saisie!!!

    Sinon comment rajouter une nouvelle saisie dans la liste de recherche?

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Points : 150
    Points
    150
    Par défaut
    Par macro on peut le faire mais il y a un autre problème dans ce que vous voulez faire:

    Si la valeur saisie en colonne 1 existe dans la liste de recherche on affiche la valeur associée de la colonne 2 mais si la valeur n'existe pas, comment saisit-on la valeur associée ?

    Il y a une opération intermédiaire de saisie de l'ensemble des valeurs (colonne 1 et 2) à faire avant de vérifier si la valeur de la colonne 1 existe dans la liste de recherche. Après on teste si la valeur existe: si elle existe on affiche la valeur trouvée en colonne 2, sinon la valeur saisie.

    J'ai fait un exemple en PJ avec 2 onglets "recherche" et "histo". Vous saisissez les 2 valeurs en fin de liste de "histo" et ça met à jour la liste de recherche (ou non si la valeur existe)

    Remarque: la macro se trouve dans le module "Feuil2 (histo)" du projet VBA
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. faire une recherche sur une colonne de type 'time' calculée
    Par jean-gfnet dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/09/2013, 15h02
  2. faire une recherche sur la colonne d'une liste annuaire
    Par gracouille dans le forum SharePoint
    Réponses: 1
    Dernier message: 13/10/2008, 17h06
  3. Réponses: 5
    Dernier message: 14/03/2008, 17h01
  4. Réponses: 10
    Dernier message: 18/07/2007, 15h18
  5. Réponses: 2
    Dernier message: 07/10/2006, 19h46

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