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
 
@

@+Thierry

Guest
Bonsoir ce fil,

Tiens, je suis revenu par ici, car Poisac avait besoin du même style de travail... (Lien supprimé)

Mais je constate que çà fait plaisir de se décarcasser...

Bonne Soirée et Bon Week End à tous et toutes.

@+Thierry
 
S

stéphane

Guest
Bonsoir à tous,

Thierry, non non je ne vous ai pas oubliés pas dutout. C'est juste que je n'avais plus d'écran... Je pense que c'est la chaleur qui a eu raison de lui (il n'était plus tout jeune de toute manière). Finalement je suis content qu'il m'ait laché car je me suis acheté un super écran de 19" ==> quel changement et confort par rapport à un 15" !!!

Ceci étant, Thierry tout d'abord un ENORME merci pour le tps passé sur mon fichier.
Je dois te dire que j'ai été scotché en lançant la macro ! Cela me dépasse et j'aimerai que tu m'explique quasiment ligne par ligne ce que tu fais progressivement.

Par contre, j'ai compris que tu étais passé par des filtres, hors en fait il faut reporter les sous-totaux existant (S/T TRIBU, S/T CHEFPDT, S/T RAYON) dans les feuilles de synthèse par rayon. Dans ce cas, il faut peut-être faire des sous-totaux à la suite de ta macro ?

Maintenant, j'ai travaillé aussi de mon côté, par contre pas en VBA mais avec des fonctions (index et equiv imbriquées) et j'aimerais ton avis.
J'ai choisi ces fonctions car les rechercheV avec seulement l'argument du rayon me redonnaient qu'une réponse.
J'ai par contre galéré avec les références relatives et absolue (F4 : $).
Je pensais que ces fonctions ne seraient pas trop gourmandes en ressources mais cela ne semble pas le cas ?

Pour des fichiers moins lourds faut-il passer par des macros ?

Encore merci et toutes mes excuses pour avoir été aussi long à répondre, mais ce n'était pas de ma faute.

Je suis très intéressé par un petit apprentissage en VBA, donc toutes tes suggestions sont les bienvenues.

Stéphane.
 

Pièces jointes

  • Fichierthierry.zip
    46.1 KB · Affichages: 26
  • Fichierthierry.zip
    46.1 KB · Affichages: 26
  • Fichierthierry.zip
    46.1 KB · Affichages: 25
J

Jean-Marie

Guest
Bonjour, Stéphane

C'est moi qui vais reprendre le relais, tu sais, Thierry sans l'offenser c'est pas, comme qui dirais un formuliste.

Laisse moi un peu de temps et je te modifie tes formules

Bonne journée

@+Jean-Marie
 
J

Jean-Marie

Guest
Re...

Ci-joint le fichier modifié, Définition des plages pour les trois feuilles,
1ère feuille : Base, et BaseA
2ème feuille : TabHomme, et TabHommeC
3ème Feuille : TabLinge, et TabLingeC

Modifications de toutes les formules.
Rajout d'une ligne et d'une colonne, dans la deuxième et troisième feuille
Pour la ligne pour déterminer la colonne à prendre en compte pour la fonction Index
Pour la colonne, pour calculer le nombre d'élément et la position dans l'index vertical dans BaseA, et faire l'incrément pour l'affichage des données.

Je suis parti sur l'idée que les données étaient triées en fonction du code 1 et 12, ce qui doit être le cas avec l'ancienne version de Stéphane.

Voilà, une démo mais réelle de plus pour la fonction INDEX et EQUIV

Je pense que de limiter la longueur des tableaux à la réalité des quantités de données, doit donner des temps de calcul plus rapides. A toi Stéphane de me le dire.

J'espère que l'insertion de ma ligne et de la colonne, ne va pas te faire un patacaisse dans tes codes VBA.

Bonne soirée

@+Jean-Marie
 

Pièces jointes

  • FichierTHIERRY.zip
    31.9 KB · Affichages: 27
  • FichierTHIERRY.zip
    31.9 KB · Affichages: 31
  • FichierTHIERRY.zip
    31.9 KB · Affichages: 28
@

@+Thierry

Guest
Bonsoir Stéphane et Jean-Marie

Pas de Problème je comprends mieux ton absence, car tu sais Stéphane, il est trop souvent constaté que bien des gens ont leur solutions et disparraissent à jamais sans même un mot....

Donc très heureux que ce ne soit pas ton cas et tu es tout excusé, cas de force majeure donc !! lol (j'espère que tu en as profité pour faire l'acquisition d'un super TFT 19" car avec la taille de tes tableuax faut au moins çà (lol)

Pour que Jean Marie prenne la relève aucun souci, c'est exact que je ne connais pas du tout Excel. (coté Formules tapées dans des cellules, j'entends of course, lol, car ce n'est pas mon domaine et Monique, Celeda et Jean-Marie sont nos dévoués spécialistes d'XLD)...

Par contre, vu que 90% du travail est déjà fait par VBA, à partir de là il est d'une grande facilité de faire tous les sous totaux dans chaque feuille à la volée avec au choix soit c'est VBA qui calcule, soit il écrit les formules (et là, par contre, je maîtrise toutes les formules nécessaires en anglais)

Mais pour ceci j'ai besoin déjà de savoir si les ruptures par pages telles qu'elles sont faites sur mon programme par Rayon sont OK, où si il faut travailler sur autre chose...

Ensuite pour les sous totaux je dois savoir ce que tu veux additionner avec précision...

Voilà comme ceci tu auras l'embarras du choix

Bonne Nuit


PS Moi c'est bien simple quand je vois çà sur des milliers de cellules, c'est simple j'ai immédiatement mal à la tête !!! :

smiley_233.gif
=SI(INDEX(Harry!$A7:Harry!$A$6000;EQUIV(12;Harry!$A$1:Harry!$A$6000;0);1)<>12;"
smiley_366.gif
";(INDEX(Harry!K7:Harry!K$6000;EQUIV(12;Harry!$A$1:Harry!$A$6000;0);1)))
smiles_69.gif


@+Thierry
Take it Easy Just For The Fun​
 
S

stéphane

Guest
Bonsoir à tous,

Non non Thierry, il fonctionne bien.

J'ai enfin réussi à ouvrir le fichier de Jean-Marie. J'ai dû désinstaller Leechget qui faisait à chaque fois planter.

Jean-Marie, j'ai beaucoup de mal à comprendre les formules que tu as faites et surtout ta définition des plages?

Peux-tu m'expliquer plus précisément?

Peux-tu expliquer la fct décaler et c'est points virgules?

=DECALER('Linge de maison'!$B$14:$AZ$14;;;'Linge de maison'!$A$10)

Encore merci ?

Stéphane.
 
@

@+Thierry

Guest
Bonsoir Stéphane, Jean Marie, le Fil et le Forum

Heureux que ton écran tienne le coup...

Pour les Formules de Jean Marie, je n'en sais bougrement rien vu que comme qui dirait... je ne suis pas un formuliste.... (lol)

Mais bon, j'ai fait trois lignes de codes de plus dans le fichier de base 100%VBA...

Et donc tu auras tous tes sous-toto créés à la volée dans la foulée ;-)

Bonne soirée
@+Thierry
 

Pièces jointes

  • XLD-Report_Split-Data_Sur_Feuilles.V01.zip
    46.5 KB · Affichages: 19
J

Jean-Marie

Guest
Bonsoir, Tout le monde

La fonction DECALER, permet à partir une référence de cellules 'Linge de maison'!$B$14:$AZ$14, de déterminer une autre plage.

Cette référence 'Linge de maison'!$B$14:$AZ$14 est la première ligne de ton tableau contenant des valeurs.

Le 2ème argument indique le décalage horizontal à faire à cette référence, ici laissé à vide

Le 3ème argument sert de décalage de la référence verticalement, ici laissé à vide

Les trois premiers arguments sont obligatoires

le 4ème argument, celui qui nous intéresse, puisqu'il sert à déterminer une longueur de lignes. La valeur doit être supérieure à 0.

J'espère que tu comprendras le fonctionnement de cette fonction. Si tu as un doute ou une question pour l'appliquer, tu sonnes, je te répondrai. Il y a un fichier démo sur cette fonction Lien supprimé

Bonne journée

@+Jean-Marie
 
S

stéphane

Guest
Bonjour le forum,

Hello Thierry & Jean-Marie,

Thierry, la macro ne fonctionne pas :
"erreur d'application 1004" : Application.Calculation = xlCalculationManual

Jean-Marie, merci pour tes précieuses explications. Qu'est-ce que c'est compliqué en fait pour quelque chose d'assez simple pourtant !

Je n'aurai jamais trouvé seul !

Merci

Je suis encore incertain avec ces nouvelles fonctions index, equiv, decaler surtout quand elles sont imbriquées.

A bientôt.

Stéphane
 
@

@+Thierry

Guest
SAlut Stéphane, Jean Marie, le Fil, le Forum

Pour Stéphane :
Application.Calculation = xlCalculationManual

Est une instruction on ne peut plus standard lorsque l'on veut éviter qu'Excel calcul pendant l'exécution d'une macro (ce qui la ralentit d'autant)...

Quelle version d'Excel utilises-tu ? Car c'est assez étarnge que tu aies un problème avec une ligne de code comme celle-ci...

Ceci dit, tu peut mettre en commentaire les lignes correspondantes en début de procédure et fin de procédure.... (Mettre une apostrophe en début de ligne ' et elle deviendra verte (soit en commentaire et non en instruction VBA)

En début de Procédure :
'Application.Calculation = xlCalculationManual

En Fin de Procédure :
'With Application
'.Calculation = xlCalculationAutomatic
'.Calculate
'End With

Pour Jean Marie, si tu as cinq minutes, assistance required => Lien supprimé


Bon Samedi à tous et toutes
@+Thierry qui s'éclate avec le Wiki !!!
 
@

@+Thierry

Guest
Re Salut Stéphane

tu ne m'as pas répondu...

Sur quelle version d'excel travailles-tu, c'est important de savoir pourquoi ton PC n'accepte pas :
Application.Calculation = xlCalculationManual

Celà pourra aider d'autres gens dans ton cas si nous arrivons à cerner ce problème...

C'est celà aussi (et surtout !) l'esprit de ce Forum XLD

Bon Week End
@+Thierry
 
M

michel

Guest
Bonjour à tous

@+Thierry , j'ai aussi eu le message d'erreur "erreur d'application 1004" au lancement de la procédure :
( j'utilise excel 97 )

j'ai résolu le problème en insérant….;o)…. range("a1").select en début de procédure , juste avant
Application.Calculation = xlCalculationManual

Un seul select pour faire fonctionner ta superbe demo sous excel97 c'est acceptable…;o)…..non?….…;o(….

comme dans le projet de Claire l'autre jour , ainsi que pour quelques autres fils que j'ai pu lire dans le forum , le problème est principalement lié à Excel 97 et à l'utilisation des commandbuttons dans certaines situations .
Effectuer un "select" dans la feuille , juste après le lancement de la procédure semble résoudre définitivement le problème .


bonne soirée
Michel
 
@

@+Thierry

Guest
Bonsoir le Fil


Merci Michel de ce complément d'info...

Donc il y a juste à parier que Stéphane travail sous XL 97 (les gars quand vous avez encore ce système pensez toujours à le préciser)

Moi étant donné que je ne m'approche plus d'XL 97 il n'est pas évident
de "penser pour eux"...

Bonne Fin d'Aprèm
@+Thierry
 

Discussions similaires

Réponses
7
Affichages
361
Réponses
2
Affichages
520
Réponses
3
Affichages
571

Statistiques des forums

Discussions
312 282
Messages
2 086 770
Membres
103 391
dernier inscrit
lrol