Récuper données Excel sur plusieurs feuilles

Fermé
balthordu Messages postés 58 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 26 août 2010 - 30 mars 2007 à 11:45
 Karits - 11 déc. 2007 à 16:53
Bonjour a tous
Voila mon problème: j'ai des données sur une feuille Excel contenant sur une colonne des nom de produits et sur une autre colonne sa date de parution. Sur une autre j'ai des noms des produit ainsi que ces ventes de cette année.
Le problème est que les noms des produits de la 2ème feuilles ne sont pas tous identiques. C'est à dire que seuls quelques produits sont dans les 2 feuilles. Ce que je voudrait, c'est retiré des articles avec leur ventes en fonction de la date de parution qui est sur l'autre feuille. Mon résultat sera la liste des produits en fonction de la date de parution en fonction des ventes. Mais que ceux qui sont en commun avec les 2 feuilles
Je ne sais pa comment faire. Peut etre avec les tableaux dynamiques, j'ai regardé mais je ne vois pas la marche a suivre. En résumé je veux recuper des données dans une feuille qui sont aussi présente dans une autre en fonction d'un critère sur une feuille.
Merci de votre réponse, en m'indiquant la marche à suivre.
A voir également:

4 réponses

Patrick Ono limo Messages postés 2 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 30 mars 2007
30 mars 2007 à 12:06
Avez-vous déjà essayé de trier ces données par date?
0
Jefrale Messages postés 97 Date d'inscription vendredi 23 mars 2007 Statut Membre Dernière intervention 18 juillet 2007 34
30 mars 2007 à 12:40
Bonjour,

Soit il faut utiliser la fonction SI qui permet de faire une selection suivant certains critères. Soit il faut développer une macro.
Je fais du dévelllopement dans excel en VBA mais pour réaliser ce petit programme il me faut plus de détails (le mieux serait un exemple concret)
Je reste à disposition si necessaire.
Cordialement.
0
balthordu Messages postés 58 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 26 août 2010 14
30 mars 2007 à 14:19
Merci en premier de votre attention.
Tres bien je vous donne un exemple:désolé je ne pouvais pas aligner les colonnes. Mais je pense que vous n'aurai aucun problème a lire

Feuille 1:
nom du produit + date de fabrication

prod1 2000
prod2 2000
prod3 2000
prod7 2000

feuille 2

nom du produit + vente

prod1 12
prod2 32
prod4 41
prod5 21
prod6 12
prod8 31

Voici le résultat obtenu

feuille 1 ou 2 ou 3 (peu importe où se trouve le résultat)

nom du produit + année + vente

prod1 2000 12
prod2 2000 41

Ce que je veux est afficher les produit que je trouve dans les 2 feuille en fonction de la date 2000. Sachant que dans la feuille 2 les dates se sont pas renseignées. Mais il y a des produits en commun entre les 2 feuilles.
Voila j'espere avoir été clair.
Cordialement
0
Jefrale Messages postés 97 Date d'inscription vendredi 23 mars 2007 Statut Membre Dernière intervention 18 juillet 2007 34
1 avril 2007 à 10:59
Bonjour,
Voilà le code à insérer dans un module qui ensuite peut-être lié à un bouton


Sub cherche()
l = 1
Worksheets("Feuil1").Activate
For nl = 2 To 10
Worksheets("Feuil1").Activate
pdt1 = Cells(nl, 1)
an = Cells(nl, 2)
Worksheets("Feuil2").Activate
pdt2 = Cells(nl, 1)
vte = Cells(nl, 2)
If pdt1 = pdt2 Then
Worksheets("Feuil3").Activate
l = l + 1
Cells(l, 1) = pdt1
Cells(l, 2) = an
Cells(l, 3) = vte
Worksheets("Feuil1").Activate
End If
If nl = 10 Then
Worksheets("Feuil3").Activate
End
End If
Next

End Sub

Bon courage
0
balthordu Messages postés 58 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 26 août 2010 14
2 avril 2007 à 09:03
je suis désolé mais je ne trouve pas encore ce que je veux. Voila ma premiere feuille:
prod1 2000
prod2 2001
prod4 2001
prod5 2003
prod6 2000
prod8 2000

la deuxieme:

prod1 2
prod2 6
prod3 8
prod5 4
prod6 3
prod7 1

et le résultat:

prod2 2001 6
prod5 2003 4
prod6 2000 3
ce resulat je le trouve avec votre algo. Or ici ce que je veux c'est :

prod1 2000 2
prod6 2000 3



Ce que he ne trouve pas dans le code c'est l'endroit où l'on séléctionne la date que l'on veut selectionner dans la première feuille. Car ici le résultat que je veut ce doit etre que les produit avec leur ventes en 2000

Merci
0
Jefrale Messages postés 97 Date d'inscription vendredi 23 mars 2007 Statut Membre Dernière intervention 18 juillet 2007 34 > balthordu Messages postés 58 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 26 août 2010
2 avril 2007 à 09:31
Il fallait le dire.
Aujourd'hui je n'ai pas le temps de m'en occuper, peut-être ce soir.
Si j'ai bien compris il faut ajouter une boite de dialogue pour demander la saisie d'une année.
A ce sujet est-ce seulement l'année (aaaa) ou est-ce la date en entier (jj/mm/aaaa) ?
0
balthordu Messages postés 58 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 26 août 2010 14 > Jefrale Messages postés 97 Date d'inscription vendredi 23 mars 2007 Statut Membre Dernière intervention 18 juillet 2007
2 avril 2007 à 09:48
Non la boite de dialogue n'est pas du tout neccessaire. Car votre algo permet de selectionner les nom commun des deux feuille et c'est ce que je veux. Il me suffit de faire un simple tris dans la feuille 3 avec les dates. Donc le probleme des dates est réglé. Ne vous pencher pas du tout sur ce sujet.
Par contre je viens de voir que il y a un autre probleme plus genant. En effet votre algo marche que si le nb de ligne est le meme pour chaque feuillle. Or ce ce n'est pas du tout le cas. La feuille avec les date contient 2 fois moins de données que l'autre.

Par contre pouvez vous me dire a quoi sert cette partie du code:

If nl = 10 Then
Worksheets("Feuil3").Activate
End
End If

Je posséde quelque connaissance en C c'est que qui me permet de comprendre un peu votre code.
Si vous pouvez vous y pencher des que vous pouvez je vous remercie encore par avanve.
Et merci de ce que deja vous avez fait pour moi.
0
Jefrale Messages postés 97 Date d'inscription vendredi 23 mars 2007 Statut Membre Dernière intervention 18 juillet 2007 34 > balthordu Messages postés 58 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 26 août 2010
2 avril 2007 à 09:53
Re
Cette partie du code sert à tester si mon c ompteur (nl) est arrivé à 10, chiffre que j'ai mis au départ de ma boucle For...Next.
A ce sujet le chiffre 10 peut être changé en 100, 200, ou même 65536 qui est le nombre de lignes d'une feuille excel.
Mettez-le au maximum de lignes que vous pouvez avoir.
Cordialement.
0
balthordu Messages postés 58 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 26 août 2010 14 > Jefrale Messages postés 97 Date d'inscription vendredi 23 mars 2007 Statut Membre Dernière intervention 18 juillet 2007
2 avril 2007 à 10:46
J'ai trouvé le probleme!
Le truc c'est que votre algo compare ligne par ligne. Ce qui veut dire que si le prod2 se trouve a la ligne 2 dans les deux page il le selctionnera. Or il se trouve que comme je possède une base de données de 10000 articles un produit qui est present dans les 2 pages peut se trouver a la ligne 500 dans une et 1000 dans une autre. Comme le nb de ligne n'est pas le même je ne peux pas les avoir au meme niveau. Et moi je veux que ce produit soit quant meme selectionner. Voila apres je sui sur que sa sera bon. Il faut donc ajouter une deuxième boucle for.
Donc ce que je pense l'algo doit faire c'est prendre un article de la page 1, parcourir TOUTE la page 2 et si il le trouve il le selectionne. Ensuite il prend le produit suivant de la page 1 et reparcourt TOUTE la page 2.
Je pense qu'il doit y avoir 2 boucles for imbriquées. Je pene que l'ago que je vous propose est bon. Quand a le mettre en forme la je ne peux pas.
J'espere que l'ago que je vous proposeva vous permettre de m'aider encore une fois si vous avez bien sur le temps.
Cordialement
0
Bonjour, je ne comprend pas cette partie du code : (plus particulierement cumvte)

If pdt1 = pdt2 Then
cumvte = cumvte + vte
End If
Next

Worksheets("Feuil3").Activate
If cumvte = 0 Then GoTo suite
l = l + 1
Cells(l, 1) = pdt1
Cells(l, 2) = an
Cells(l, 3) = cumvte
cumvte = 0

Merci
0