Croisement de données dans un tableau

Bonjour,

Je suis toujours dans les tableaux et toujours aussi coincé

Je cherche à faire un croisement de données à partir de l'onglet BD dans l'onglet résultats à partir de plusieurs critères.

Merci pour le temps que vous m'accorderez.

Le fichier joints est beaucoup plus détaillé

bonjour

un essai a verifier

comme il s'agit d'un brouillon ; j'ai tout mis sur la meme feuille

52fred35.zip (12.80 Ko)

cordialement

Bonjour

Je ne suis pas convaincu, au vu de tes énoncés des résultats des 2 dernières colonnes, mais on peut toujours modifier.

Une autre approche avec rntre autres une fonction personnalisée (Code VBA dans Module)

Cordialement

bonjour

en effet Amadeus ;il me semble que le resultat esperé et erroné dans les 2 dernières colonnes (critereB);mais j'ai laissé courrir

cordialement

Merci de votre aide, je vais étudier tout ça, parce qu'au vu des formules, je suis un peu perdu.

Dans l'une des formules, il y a NB.SI($J6;{"*B*"."*C*"."*D*"."*E*"."*F*"}).

J'avoue être intrigué par l'utilisation de ce NB.SI, pourriez vous m'en dire plus ?

Bonjour

Dans l'une des formules, il y a NB.SI($J6;{"*B*"."*C*"."*D*"."*E*"."*F*"}).

J'avoue être intrigué par l'utilisation de ce NB.SI, pourriez vous m'en dire plus ?

La formule, en tant que telle

=NB.SI($J6;{"*B*"."*C*"."*D*"."*E*"."*F*"})

est l'équivalent de

=NB.SI($J6;"*B*")

et ne compte que 1 si elle trouve un B dans la cellule (précédé ou suivi de n'importe quoi d'autre)

Pour attribuer 1 pour chaque lettre indiquées, il faut transformer la formule en matricielle qui passera en revue tous les critères indiqués dans la fonction NB.SI

Sommeprod permet de faire cela

=SOMMEPROD(NB.SI($J6;{"*B*"."*C*"."*D*"."*E*"."*F*"}))

et attribue 1 à chaque critère vrai.

Pour un détail plus imagé, tu te places sur la cellule contenant cette formule et "Outils" "Audit de formule" "Evaluation de la Formule" et tu visualises chaque étape du fonctionnement

projet1

ici, J6 renvoie AD et donc, seul le D est identifié

Cordialement

Merci pour vos explications, je vais me replonger dans le fichier parce que là il y a du taf.

Le fait que se soit par matricielle, sur 50000 lignes ça risque de ramer un peu non ?

Bonjour

Le fait que se soit par matricielle, sur 50000 lignes ça risque de ramer un peu non ?

Incontestablement, 50000 lignes...Quoi que, on travaille sans doublons avec une ligne par produit, ce qui réduira.

un traitement par VBA serait plus approprié, mais pour cela, il faut attendre qu'un spécialiste prenne le sujet.

Cordialement

Merci, je retiens tout de même cette solution, certain tableau étant plus petit, elle conviendra parfaitement, en attendant une éventuelle solution en vba.

Bonjour,

Un essai en vba, tu as juste à choisir dans ta liste déroulante.

Respecter le mode de saisie des critères en B4:F5

Théoriquement tu peux en rajouter mais je n'ai pas testé. Nommer la plage des critères 'criteres'.

Bien optimisé, même pour 50000 lignes (un hasard, tu as de la chance ). Tu diras le temps par curiosité.

Fais d'abord des contrôles de résultats sur un petit fichier, je n'ai fait qu'un contrôle sommaire.

eric

PS: la prochaine fois précise le volume des données dans le 1er post, le choix du traitement en dépend.

PS2: est-ce qu'un critère peut être une sous-chaine d'un autre critère ? Ex: er et vert. J'ai pensé le traiter à moment donné puis j'ai zappé.

Bonjour

En partant du fichier de tulipe_4

A tester

Merci à vous tous pour vos réponses, je dois dire que la solution proposé par éric (pas encore tester), semble être celle qui convient le mieux du fait qu'elle tient compte de la liste déroulante.

eriic a écrit :

PS2: est-ce qu'un critère peut être une sous-chaine d'un autre critère ? Ex: er et vert. J'ai pensé le traiter à moment donné puis j'ai zappé.

qu'entends tu par là ?

Aussi petite question, quand vous traitez des tableaux, comment vous les représentez vous ?

Je bloque à l'interprétation et du coup je ne trouve pas de marche à suivre même pour débuter, c'est assez frustrant d'autant que j'ai de nombreux tableaux calqués sur le modèle de la feuille BD...

Petite aparté au sujet, sur la quantité de fichiers qui m'a été confié, un peu plus de 200..., j'ai divisé par 3 ceux que j'ai pu traiter et éviter des doubles voir triples manipulation des agents. Entre les cours, vos implications sur ces forums et les "exercices" au quotidien j'avance petit à petit et je tenais à vous en remercier.

Bonjour,

eriic a écrit:PS2: est-ce qu'un critère peut être une sous-chaine d'un autre critère ? Ex: er et vert. J'ai pensé le traiter à moment donné puis j'ai zappé.

qu'entends tu par là ?

Si tes états ont plusieurs lettres et que l'un est inclus dans l'autre. Ex: OK et NOK

Aussi petite question, quand vous traitez des tableaux, comment vous les représentez vous ?

Pas sûr de bien comprendre ta question.

Un tableau a plusieurs dimensions.

Par exemple 2 : dim tabl(10,3)

Ce tableau fait 10 lignes et 3 colonnes. Si tu veux l'élément 3 de la 5ème ligne: a= tabl(5,3)

eric

Tout d'abord, j'ai mis en place sur 2 fichiers et les résultats obtenus sont correct.

Le temps de traitement pour 40000 lignes est inférieur à 2 secondes

Sur un 3em tableau, je me suis aperçu que les états font entre 2 et 5 caractères y compris avec espace, par exemple "A ", "ABCDE", "BC", etc... et que l'espace n'est généré qu'à la fin si il ne contient que 1 caractère "A ", "B ".

De plus, dans le feuille BD, de mon exemple, la colonne "Marque" est en E:E, dans le 3em tableau elle est en O:O (le tableau va de A à X en nombre de colonne)

Le tableau est donc plus grand, les colonnes A et B reste inchangées. Ou dois je modifier pour décaler "Marques" ?

Autre question, combien d'états maximum puis je croisés ?

Dans le tableau d'exemple il y en a 5.


eriiic a écrit :

Pas sûr de bien comprendre ta question.

Un tableau a plusieurs dimensions.

Par exemple 2 : dim tabl(10,3)

Ce tableau fait 10 lignes et 3 colonnes. Si tu veux l'élément 3 de la 5ème ligne: a= tabl(5,3)

eric

c'est le fait de "transposé" le tableau que je n'arrive pas à comprendre.

Sur un 3em tableau, je me suis aperçu que les états font entre 2 et 5 caractères y compris avec espace

Je ne vois pas de fichier de test...

c'est le fait de "transposé" le tableau que je n'arrive pas à comprendre.

Transforme un tableau (3,10) en tableau(10,3)

Utilisé car en vba tu ne peux agrandir un tableau avec Redim Preserve que sur la dernière dimension. Donc si tu as un tableau dont tu désires augmenter les lignes au fur et à mesure du besoin, il doit être de la forme (nb_col, nb_lig)

Par contre pour le coller sur la feuille il doit être de la forme (nb_lig, nb_col)

eric

eriic a écrit :

Je ne vois pas de fichier de test...

Ca va venir, mais je mets déjà en place les fichiers qui fonctionne avec ta solution

L'autre tableau

Les croisements semblent identique à l'autre, mais il faut que je vois avec le responsable de l'antenne concernée, car le codage me parait bizarre dans son exemple.

Si tu mets plusieurs états dans BD ça n'a plus rien à voir avec ta demande initiale..

Ca ne risque pas de marcher...

Pour la macro "A ", "B ", "A B", "ABCF" et "NSTOK" sont 4 états différents.

Et dans ta demande les états n'étaient pas suivis d'espace...

eric

Après m'être renseigné, le programme qui sort ce tableau est différent des autres antennes.

L'exemple est peut être mal choisi quand je mets ABCF dans la feuille BD, il ne s'agît pas d'un cumul d'états mais bien d'un états indépendant.

Si tu préfères on pourrait nommé "ABCF" état10, "A " état1.

L'ensemble des états à une lettre contient un espace derrière. Les états à 2 lettres voir plus, n'en contienne pas.

Rechercher des sujets similaires à "croisement donnees tableau"