Recherche de donnée en fonction de 2 critères dans un tableau

  • Initiateur de la discussion Xavier
  • Date de début
X

Xavier

Guest
Bonjour à tous

J'espère qu'un bon géni va pouvoir m'aider…J'ai vainement essayé de frotter mon ordinateur tel la lampe d'Aladin, mais je n'y arrive pas.
Je suis novice en macro, programmation, VBA. J'espère que vous serez indulgent avec moi.
D'avance merci.

Je cherche à extraire d'un tableau des données de la colonne "montant" en fonction de conditions sur les colonnes "code" (alphabétique) et "sous-code"(numérique).
J'ai essayé de faire des recherches V conditionnelle, mais je n'y arrive pas.

Pour compliquer un peu le tout, j'ai besoin en fonction des cas soit de total par code et sous code, soit par code uniquement.

Le nombre de ligne du tableau n'est pas fixe. Le tableau étant le résultat de la requête d'importation.

Pour essayer de résoudre mon problème j'ai organisé 2 tableaux différents.
1) Le premier (directement généré par la requête) présente les données en ligne. Sur chaque ligne tous les champs "code", "sous code" et "montant" sont renseignés.
Dans ce tableau, je n'ai pas de sous-totaux par code, puis par code et sous code (je ne sais pas le faire dans un tableau issue d'une requête).
2) Dans le deuxième tableau (tableau croisé dynamique), j'ai les sous-totaux par code, puis par code et sous code. Mais les donnés "code" ne se répète pas sur chaque ligne (je ne sais pas le faire).

En gros, je cherche à avoir une fonction du style : recherche dans colonne "code" = XX et dans colonne "sous code"= 01, alors donner le résultat de la colonne "montant". Il me faut préciser que les données de "sous-code" peuvent être identique d'un code à l'autre (exemple le sous code 01 existe pour chaque code).

La difficulté venant de la recherche sur 2 colonnes, peut-être qu'il est plus facile de créer une colonne additionnelle combinant les données des 2 colonnes. Ensuite il serait possible d'utiliser une recherche verticale.
Ainsi, si je reprends l'exemple précédent j'aurais une colonne avec l'info XX01.
Je ne sais pas si c'est possible de procéder comme ça et si c'est judicieux.
De plus la modification devrait-elle être réalisée dans le tableau de requête (ok à chaque modif? ) ou dans la base source Access.


Voilà je crois avoir tout dit.

J'espère que vous pourrez me sauver… :)

Par avance merci encore.

Xav



PS: Une petite précision, je me trouve en Asie (+ 6 heures) je ne serais donc peut-être pas connecté en même temps que vous
 
C

Celeda

Guest
Bonsoir,

Xavier :

1-
planewelcom_e0.gif
bienvenue sur XLD

2- un fichier serait le bienvenu aussi

3- 1- ''Dans ce tableau, je n'ai pas de sous-totaux par code, puis par code et sous code (je ne sais pas le faire dans un tableau issue d'une requête).''
mais on peut-être est-il possible de le transformer ton tableau et de faire des sous-totaux


4--2- TCD - ',Mais les donnés "code" ne se répète pas sur chaque ligne (je ne sais pas le faire).''
Il faut voir le tcd pour savoir si on peut le faire ou pas dans le tcd ou créer une colonne supplémentaire dans la base du TCD.

5-'' En gros, je cherche à avoir une fonction du style : recherche dans colonne "code" = XX et dans colonne "sous code"= 01, alors donner le résultat de la colonne "montant". Il me faut préciser que les données de "sous-code" peuvent être identique d'un code à l'autre (exemple le sous code 01 existe pour chaque code).'' : peut-être qu'une simple recherche v sur deux tableaux différents sur des feuilles différentes pourraient faire l'affaire.

.............mais il me semble qu'un fichier s'impose............


On va peut être pas te sauver mais t'aider modestement.

Celeda

PS : petite précision, nous nous sommes au Québec et on a 6 h de moins donc avec toi cela fait douze heures quoique si tu lis ce message et que nous sommes encore entrain de surfer........pendant que l'Europe dort......il y a une chance pour que tu nous attrapes sur le forum.......à bientôt
 
@

@+Thierry

Guest
Bonjour Xavier, Celeda et Le Forum,

Ben ici à presque 8:00 du Mat, donc je ne vais pas faire de bruit pour ne pas réveiller la Miss (2:00 du Mat) et pas déranger l'Asie pendant la sieste !

Je ne sais pas si çà pourrait te convenir, mais je fais bcp d'imports de données et je rencontre un problème un peu similaire avec des comptes et des sous-comptes....

Je décris vite fais :

Import Brut
COL "A" = Compte (8 Digits)
COL "B" = S/Compte/Type (3 Digits)
COL "C" = S/Compte/Analytic (3 Digits)
COL "D" = Libellé (Up to 35 Digits)
COL "E" = Base Currency (3 Digits)
COL "F" = Montant Currency
COL "G" = Montant Dollars Equiv

Inditifiaction des Comptes et S/Comptes
Sur la même feuille en Colonne "H" j'ai un formule de concaténation
=A1&B1&C1 => "12345678ABC123" (8 + 3 + 3 digits)

à partir de la je peux faire toute sorte d'analyses mêmes par analytic... Parfois même je peux encore distinguer si nécessaire la currency
=A1&B1&C1&F1 => "12345678ABC123CAD" (8 + 3 + 3 + 3 digits)

Ensuite on peut faire pas mal de choses...

Une autre méthode sans faire de colonne supplémentaire serait d'utiliser une formule matricielle... (Voir cette démo Lien supprimé (7k) qui est une démo basic pour démarrer avec ces formules...)

Pour les TCD, je te laisse entre les mains expertes de Celeda !

Bonne Journée à tous et toutes
@+Thierry
 
R

Roland

Guest
Salut xavier

un truc simple pour avoir des sous-totaux par codes et sous-codes


Tu tries ta base par code et sous-code.

Par le menu données sous-totaux, tu prends par changement de code.
Il te fait les sous-totaux pour chaque code.
puis par le meme menu, tu prends le changement de sous-code sans oublier de décocher remplacer les sous-totaux existants

A++
 
M

Monique

Guest
Bonjour,

Avec la fonction SOMMEPROD, tu devrais réussir à obtenir tes résultats.
Tu regardes si le classeur joint te convient.
Tu trouveras davantage d'exemples de la fonction SOMMEPROD dans le fichier joint sur ce fil :
<http://www.excel-downloads.com/html/French/forum/messages/1_27748_27748.htm>
Cette fonction peut avoir jusqu'à 30 critères et est à valider de façon classique.
 

Pièces jointes

  • sommeprod_Xavier.zip
    3 KB · Affichages: 98
X

Xavier

Guest
Bonjour Celeda, Monique, Thierry, Roland & le forum

Tout d'abord merci pour vos rapides réponses.
Grâce à vous mon problème est résolu.

Pour le résoudre j'ai donc 2 solutions:
1er solution :
a)Inséré une colonne avec la formule de concaténation ( =code & sous-code) dans mon tableau de requête.
b) Créer 2 TCD (issue de précédent tableau). L'un me donne le total par code, l'autre par code et sous-code. (Si je passe par le menu donnée je dois refaire l'opération à chaque MAJ du tableau et la recherche V n'est plus pertinente, option abandonnée).
c)A chaque MAJ de la requête, le tri se fait par code puis sous-code, je peux donc ensuite utiliser une recherche V. quand je veux en fonction du niveau de détails que je souhaite.

2ième solution :
J'utilise la fonction SOMMEPROD.
Solution que je préfère dans ce cas car elle m'évite de multiplier les tableaux et les mises à jour.
Et c'est plus facile à manier pour moi que recherche V.


Encore à tous un grand, énorme merci pour votre aide non seulement rapide mais efficace.
Autant vous dire que je suis super content…

A+
Xavier
 

Discussions similaires