Extraction de données d'un tableau

Signaler
-
Messages postés
32482
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2021
-
Bonjour,

Je cherche à trouver une solution au problème suivant:
J'ai un tableau qui regroupe dans une première colonne les pays de vente d'un produit, dans une seconde le code du produit vendu, dans une troisième le domaine d'activité de l'acheteur, dans une quatrième le volume de la commande acheté par le client en 2014 et dans une cinquième le volume acheté en 2013. Mon problème est que je souhaite sommé les ventes ratachées à un secteur d'activité (dépendant du domaine d'activité de l'acheteur). Une difficulté supplémentaire veut que deux secteurs différents peuvent faire appel au même produit (même code produit) donc on ne peut pas selectionner les ventes d'un secteur en fonction uniquement du code produit car sinon on compterait deux fois les produits qui sont vendus à duex secteurs différents. Je ne sais pas codé en VB dans excel donc je voulais savoir si quelqu'un à une idée de comment faire cette opération.

Bonne journée à vous et merci par avance

6 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Bonjour,
" Je ne sais pas codé en VB dans excel"
Je crains fort que tu devras alors commencer par apprendre au moins les rudiments de VBA/Excel (ce que sont les objets Excel, leurs propriétés, les variables, leur type, etcc ...)
Tu es ici sur un forum de développement et aucun développement n'est possible sans la connaissance de ces rudiments.
Lorsque tu auras acquis ces bases essentielles, ce sera avec plaisir que de nombreux développeurs t'aideront à surmonter, dans le cours de ton développement, telle ou telle autre difficulté spécifique et parfaitement isolée, accompagnée du code tenté et qui la concerne seule.
Messages postés
32482
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2021
347
Bonjour,

Déjà.. j'ai déplacé ta discussion dans VBA ( rubrique dédiée à la création de macros sous Excel) car je pense, lorsque tu parles de tableau, qu'il s'agit d'un document excel.
Dis moi si je me suis trompé.. (peut être programmes-tu en VB6 ou en vb.net) ..dans ce cas je déplacerait le sujet dans la rubrique la plus adaptée


Ensuite... la description de ton problème est un peu "'fouillis".
Donc essayons de reformuler différemment ( des phrases courtes et facilement compréhensibles, un texte aéré (pas un pavé de 40 lignes), si besoin des exemples de lignes de ton tableau..;etc..)

En attendant..
Je comprend que Tu as 5 Colonnes:
1 - les pays de vente d'un produit
2 - le code du produit vendu
3 - le domaine d'activité de l'acheteur
4 - le volume de la commande acheté par le client en 2014
5 - le volume acheté en 2013

jusque là..ça va..

Par contre.. pour ce qui est de ton souci...
je souhaite sommé les ventes ratachées à un secteur d'activité (dépendant du domaine d'activité de l'acheteur). Une difficulté supplémentaire veut que deux secteurs différents peuvent faire appel au même produit (même code produit) donc on ne peut pas selectionner les ventes d'un secteur en fonction uniquement du code produit car sinon on compterait deux fois les produits qui sont vendus à duex secteurs différents

Peux-tu essayer de reformuler (au moyen d'un exemple concret peut-être) ?

et puis.. Le secteur d'activité c'est la même chose que le domaine d'activité de l'acheteur ?

Et au final.. ce que tu souhaites c'est la somme des volumes achetés (en 2014) par Domaine d'activité et par produit ?

Si c'est bien sous excel que tu travailles.. pourquoi ne pas utiliser directement les formules ou même un tableau croisé dynamique ?



Merci pour ton aide Jordan. Je reconnais que mon principal problème est de ne rien connaître à l'informatique donc ucfoutu tu as raison mais je reviendrai, en suivant tes conseils, dans 15 ans et comme mon stage se termine dans 6 mois, ça risque de ne plus servir à rien.

C'est exactement ça Jordan. Par exemple, j'ai (je garde ta notation pour les colonnes):
1- Italy
2- p4230
3-Automotive cycle
4-26
5-24

Par exemple, je veux calculer (pour un seul pays) le volume des ventes de la branche plastique de specialité. Cette branche regroupe les références p4230 (celle de l'exemple) plus d'autres (p4231, p4232). Mais p4230 peut aussi faire parti de la branche plastique optique: ça depend du secteur d'activité de l'acheteur (si il est classé dans l'activité optique, alors les ventes de p4230 seront à compter dans les ventes de la branche plastique optique).

Voilà, dis moi si c'est mon explication est claire.

Pour les formules et les tableaux, je prefèrerais utiliser ça mais je ne sais pas faire non plus, je vais me renseigner sur les tableaux croisés dynamiques.

Merci encore.
Messages postés
32482
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2021
347
Oula.. sacrée usine à Gaz que tu comptes créer...
Y'a pas mal de boulot et aucun code tout fait qui puisse réaliser ce que tu souhaites faire...

Sans trop avoir réfléchi au problème... si je devais m'atteler à ce travail je pense que pour simplifier les choses je commencerai par:
- Créer un onglet qui référence les différents codes de branche
quelque chose sur au moins trois colonnes :

REFERENCES | TYPE DE BRANCHE | secteur d'activité de l'acheteur
P4230 plastique -
P4231 plastique -
P4230 plastique optique optique

En gros.. pour chaque référence tu crées autant de ligne que de possibilités..

Ensuite, dans ton tableau principal tu pourras ajouter une colonne qui, à l'aide d'une macro, permettra de mettre en face de chaque ligne le type de branche auquel le code est rattaché en fonction : De sa référence ET du type d'activité de l'acheteur.

Dans l'exemple que je t'ai mis au dessus, on pourra faire par exemple :
Pour une ligne de ton tableau principal :
Reference = "P4230"
Secteur_Activite = "toto"
=> Type_Branche = "plastique"

et pour une autre ligne :
Reference = "P4230"
Secteur_Activite = "optique"
=> Type_Branche = "plastique optique"
Merci Jordan.

oui ça je l'ai fait. Et après tu ferais comment ? :)
Messages postés
32482
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2021
347
Pour ensuite ajouter dans ton onglet principal le type pour chaque ligne, tu peux utiliser, comme je te le disais, une formule du genre :
Index / Equiv ( sous sa forme "matricielle").

Exemple : http://support.microsoft.com/kb/59482/fr
NB: remplace "MATCH" par EQUIV
Une deuxième méthode donne les mêmes résultats mais utilise plutôt concaténation. La formule d'exemple suivante peut être préférable de correspondance des données par rapport à plusieurs critères (plus de deux) car elle ne nécessite pas imbriqués instructions Si :

=INDEX($C$2:$C$5,EQUIV(D2&E2,$A$2:$A$5&$B$2:$B$5,0))


vous devez également entrer cette formule comme formule matricielle
ok je vais regarder ça. Merci encore Jordan je te tiens informé
Re-bonjour Jordan,

Comment puis-je faire pour imposer un critère changeant dans une fonction SOMME.SI. Je ne veux pas de critères sur plusieurs colonnes (donc pas utiliser SOMME.SI.ENS) mais je voudrais faire un truc dans l'esprit de: SOMME.SI(plage soumise au contrôle; OU(les deux critères ok); plage à sommer) ?

Bonne journée à toi.
Messages postés
15
Date d'inscription
jeudi 13 février 2014
Statut
Membre
Dernière intervention
28 mai 2015

Ca ne marche pas lorsque j'impose des critères sur la même colonne.
Messages postés
32482
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2021
347
fais voir ta formule....
NB: même si ce forum n'est pas là pour ça... (ce n'est pas de la programmation)...
Messages postés
15
Date d'inscription
jeudi 13 février 2014
Statut
Membre
Dernière intervention
28 mai 2015

C'est bon ça a marché merci encore Jordan
Messages postés
15
Date d'inscription
jeudi 13 février 2014
Statut
Membre
Dernière intervention
28 mai 2015

=SOMME.SI.ENS('Report year n'!$F$43:$F$3000;'Report year n'!$A43:$A3000;"=$B$6";'Report year n'!$X43:$X3000;"=$B$9")

Voilà la formule. Tu vois une faute ?
Messages postés
32482
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2021
347
De mémoire il me semble que quand c'est " = " il ne faut pas le mettre.


=SOMME.SI.ENS('Report year n'!$F$43:$F$3000;'Report year n'!$A43:$A3000;"$B$6";'Report year n'!$X43:$X3000;"$B$9")