Rapatrier données d'une base variable quotidiennement

  • Initiateur de la discussion Stéphane
  • Date de début
S

Stéphane

Guest
Bonjour à tous experts d'Excel,
je me sens bien petit après avoir un peu naviguer sur le forum.

Je suis plutôt utilisateur, mais je suis conquis par les formidables possibilités de ce log.

Je dois rechercher des données dans un 1er feuillet pour les remettre dans un 2ème.

La recherchev m'affiche les mêmes lignes puisque l'argument (rayon) est le même, je ne sais pas comment faire?

Ex base :

COL.:

A B C D E F G H


Rayon Sous Famille Référence Libellé Vtes CA
Rayon Produit Référence Qtés

1 60 300 8701 Café grains 2 9
1 60 300 8705 Déca grains 3 12
Total Famille=300 5 21
1 60 320 8002 Arrabica fins 1 5
Total Famille=320 1 5
Total Sous Rayon=60 6 26
1 70 340 9000 Filtre n°1 10 9
1 70 340 9002 Filtre n°2 20 20
Total Famille=340 30 29
Total Sous Rayon=70 30 29
1 75 360 5000 Détartreur 2 10
Total Famille=360 2 10
Total Sous Rayon=75 2 10
Total Rayon=1 38 65

2 50 200 1500 Soluble n°1 1 10
2 50 210 1600 Soluble n°1 5 20
Total Famille=200 6 30
Total Sous Rayon=50 6 30
Total Rayon=2 6 30
TOTAL 44 95

Cette base figure sur une feuille. Je dois réaliser une feuille par rayon, MAIS chaque jour le nbre de lignes varie (nouvelles références, ou familles, d'autres disparaissent).
J'ai tenté des RechercheV, mais en fait avec l'argument du rayon cela me donne la première valeur trouvée et "étirée".
De plus, je ne sais pas comment rapatrier les sous totaux (famille, sous-rayon et rayon) dans la colonne A !

J'ai tenté avec la fonction INDEX en imbriquant EQUIV cela me donne des résultats +/- cohérents. J'ai bien le rayon souhaité mais en étirant j'ai le rayon suivant ! bien que dans la formule je mette 1 (pour rayon 1).

=INDEX(base entière;EQUIV(1;colonne où se trouve le rayon;0);colonne renvoyée)

Un grand merci pour votre aide.
Toutes infos diverses m'intéressent également même si ce n'est pas une solution.
C'est par petits bouts que l'on avance sûrement.

Stéphane
 
M

Monique

Guest
Bonjour,

Avec la fonction sommeprod, tu fais le total des quantités ou du CA selon critère de n° de rayon ou autre critère.

Je ne sais pas si c'est un début de solution ou bien une info.
 

Pièces jointes

  • Rapatrier_Stephane.zip
    4.8 KB · Affichages: 39
S

Stéphane

Guest
Merci Monique pour ta réponse,

mais en fait, ma feuille récap par rayon doit reprendre strictosensus les infos de la base mais concernant le rayon. Ceci pour toutes les infos le concernant, c'est à dire une véritable "photo" de la base.

C'est bien cela qu'il faudrait : "une photo des rayons", mais comme vous avez pu le voir toutes les lignes n'indiquent pas le n° du rayon, pour marquer le changement de rayon, sous-rayon,famille, il y a un total (colonne A). Le n° de rayon est renseigné colonne B, lors des sous-totaux la colonne n'est pas renseignée !

Ce qui me pose pb c'est qu'elle change tous les jours avec de nouvelles références, nouveau sous-rayon et/ou famille.

J'aimerais que ce soit "automatique" et ne pas avoir à vérifier "à la main" si il ne me manque pas un sous-rayon créé pour seulement quelques jours.

Merci encore à ceux qui passe un peu de temps sur ce pb !
 
C

chris

Guest
Bonjour,
Le problème vient du fait que tu essaies de synthétiser des données qui le sont déjà : il est généralement plus simple de partir de donées listées les unes sous les autres et qu'excel traite comme base de données et de faire des synthèses de ces données.
On peut alors utiliser les tableaux croisés dynamiques : cela ne liste que les rayons existants donc les nouveaux.
Sinon il va falloir faire du vba pour récupérer les lignes.
La logique serait :
faire une boucle A pour lire le rayon de la colonne 1 : on commence par la première ligne (sous les titres), on crée une feuille correspondante, on y copie la ou les lignes de titres, puis, avec une nouvelle boucle B, toutes les lignes dont la colonne rayon contient ce rayon ou commence par le mot total.
Dès qu'on trouve un autre rayon ou arrête la boucle B et on reprend donc la boucle A à la ligne concerné.

Connais-tu vba ?
Chris
 
S

Stéphane

Guest
Bonsoir Chris,

Je crois que c'est bien du VBA qu'il faut.
Je n'y connais rien à part l'enregistrement automatique de macros. Il faut donc me guider pas à pas.

je joins une partie de la base pour mieux visualiser. C'est bien d'une "photo" complète de la base par rayon et sur des feuillets différents dont j'ai besoin.

Encore un grand merci pour vos éclaircissements.

Stéphane.
 

Pièces jointes

  • exemplebase.zip
    43.6 KB · Affichages: 31
@

@+Thierry

Guest
Bonsoir Stéphane, Chris, Monique, et le Forum

Enfin plutôt devrais-je vous souhaiter bonjour !! ;-) arf 4:00 du mat... Fait tellement chaud ici que j'ai fait un truc pour toi Stéphane...

Bon attention c'est fait à la volée... Et suis pas sûr d'avoir tout capté mais j'ai suivi en fait les conseils avisés de Chris...

Enfin voilà un fichier avec un procédure qui va créer autant de feuille que de Rayons (attention j'ai fait des tests et j'ai rajouté des rayons dans ton exemple...et j'ai aussi viré pas mal de lignes pour rester sous 50Ko) et donc le programme reportera les données relevant de chaque rayon dans chaques feuilles correspondantes...

C'est un premier pas... Pour le reste, évidemment je ne tiens pas compte des sous totaux et tout çà...

Les Codes aussi pourrait être fignolés car j'ai fait çà vraiment rapidos... en m'inspirant d'un projet sur lequel je travaille tout le week end.

Tiens nous au courant

Bonne semaine à vous tous et toutes

@+Thierry
 

Pièces jointes

  • XLD-Report_Split-Data_Sur_Feuilles.zip
    49.8 KB · Affichages: 37
@

@+Thierry

Guest
Bonjour tout le monde !

Alors pas encore debout ! (lol)

Just un truc, j'y ai pensé en dormant, tu ne ne pourras avoir plus de 9 rayons différents avec cette première "mouture", mais c'est faciment modifiable si nécessaire...

Il n'y a que deux lignes à changer

1°) Remplacer :
Sheets(Sheets.Count).Name = "Rayon " & Item
Par :
Sheets(Sheets.Count).Name = "Rayon " & Format(Item, "000")


2°) Remplacer
If CStr(Cell.Value) = Right(Sheets(z).Name, 3) Then
Par :
If Format(CStr(Cell.Value), "000") = Right(Sheets(z).Name, 3) Then


Par contre les onglets seront triés de manière "informatiquement logique" pour des String, en effet le rayon 111 sera classé entre les onglets "Rayons 001" et "Rayon 002"... Mais celà peut s'arrranger aussi mais là je file au boulot...

Bon Lundi et Bonne Semaine
@+Thierry
 
S

stéphane

Guest
Merci Thierry pour l'attention et le temps passé sur ce casse tête. Merci aux autres pour leur contribution.

Néanmoins Thierry, je n'arrive pas à ouvrir ton fichier joint, il dois manquer une partie du chemin d'accès.

J'attends de le lire avec beaucoup d'impatience.

Encore merci,

Stéphane.
 
@

@+Thierry

Guest
Re ce fil, et à Stéphane

J'ai téléchargé avec succès deux fois ce ficiher depuis ce Lien supprimé (50k), sur deux machines différentes et deux FAI. No Soucy

Je vais tester du bureau demain, mais si quelqu'un d'autre à soit un souci, soit pas de souci... Il est bien venu dans ce fil.

As tu au moins WinZip ?

Bonne Nuit
@+Thierry
 
@

@+Thierry

Guest
Bonjour Zon, le Fil, le Forum

Merci à toi Zon pour ce test. Donc j'en conclus que Stéphane a un autre problème...

Je t'envoie le fichier non-compressé en BAL si tu veux Stéphane (?)

Bonne Journée
@+Thierry
 

Discussions similaires

Réponses
7
Affichages
316
Réponses
2
Affichages
505
Réponses
3
Affichages
559

Statistiques des forums

Discussions
312 069
Messages
2 085 041
Membres
102 764
dernier inscrit
nestu