Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Problème de sélection de plage de données

sky_bilout

XLDnaute Nouveau
Bonjour à tous!
J'ai des petits soucis pour définir une plage de données avec des cellules non voisines. Je voulais tout simplement dans ma formule séparer les cellules d'un point virgule mais du coup à l'intérieur de ma formule, Excel crois que je passe au paramètre suivant et tombe en erreur.
Explication: en réalité je veux utliser la fonction bdlire qui est comme suit:
=bdlire(plage_de_donnée; champs; critères)

Ma plage de données A1:B6 du feuillet "SOURCE":
Champs1 - Champs2
a - 1
b - 2
c - 3
d - 4
e - 5

A partir de cette liste je voudrais remplir la liste suivante A1:B2 du feuillet "RESULTAT":

Champs1 - Champs2
b - ???

j'ai donc fait dans la case "???":
=bdlire(SOURCE!A1:B6; SOURCE!B1; RESULTAT!A1:A2)

et donc à la place de ???? apparaît 2, jusqu'ici pas de soucis!!

j'en arrive au problème: en fait je veux le résultat sur plusieurs lignes:
Champs1 - Champs2
a - ???
c - ???
e - ???

Pour la première ligne >> toujours aucun souci puisque la plage de données est Feuill2!A1:A2 donnée pour le paramètre "critère" (désolé pour la confusion, à ne pas confondre avec le premier paramètre qui s'appelle "plage de données"...)

En revanche, pour saisir le paramètre "critère" des 2 lignes suivantes, j'ai voulu mettre:
=bdlire(SOURCE!A1:B6; SOURCE!B2; RESULTAT!A1;A3)
=bdlire(SOURCE!A1:B6; SOURCE!B2; RESULTAT!A1;A4)

parcequ'à chaque fois je ne dois sélectionner pour le paramètre "champs" de bdlire que le nom de la colonne et la valeur que je veux lui donner(soit a soit c soit e)

quelqu'un peut me dire commet dans la formule lui donner ses 2 cellules le nom du champs et sa valeur, autrement que par le ";"?

Merci beaucoup!!
 

PMO2

XLDnaute Accro
Re : Problème de sélection de plage de données

Bonjour,

Il semblerait que cette fonction ne fonctionne pas sur des critères en ligne avec un seul nom de champ en en-tête
comme vous le spécifiez dans votre message. En revanche cela fonctionne si on met les critères en colonne chacun
avec un en-tête (nom du champ). Mais je ne suis pas spécialiste de cette formule et, peut être, la solution existe.

Je vous propose l'emploi d'une fonction personnalisée qui comporte 4 arguments
DataBase : correspond à l'entièreté de votre base de données (titres des champs inclus)
NomChampEquivalence : adresse du champ dans lequel on doit trouver une équivalence
NomChampReponse : adresse du champ dans lequel on désire trouver la cible à afficher
Critere : critere de recherche dans le ChampEquivalence pour trouver la cible dans le ChampReponse

Il faudra inclure dans l'usage de cette fonction les $ pour obtenir des références absolues selon le cas.

Code à copier dans un module standard

Code:
Function BDLIRE_pmo( _
    DataBase As Range, _
    NomChampEquivalence As Range, _
    NomChampReponse As Range, _
    Critere As Range) As Variant
Dim var
Dim i&
Dim j&
Dim ChampDBCol&
Dim ChampCritCol&
var = DataBase
For j& = 1 To UBound(var, 2)
    If NomChampEquivalence = var(1, j&) Then
      ChampDBCol& = j&
    ElseIf NomChampReponse = var(1, j&) Then
      ChampCritCol& = j&
    End If
Next j&
For i& = 1 To UBound(var, 1)
  If var(i&, ChampDBCol&) = Critere Then
    BDLIRE_pmo = var(i&, ChampCritCol&)
  End If
Next i&
End Function

Voir les exemples d'utilisation dans la feuille "test" du classeur joint.

Bon courage.

Cordialement.

PMO
Patrick Morange
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…