Comment extraire des données a partir de plusieurs feuilles

Résolu/Fermé
fox_hound Messages postés 5 Date d'inscription dimanche 30 août 2015 Statut Membre Dernière intervention 1 septembre 2015 - 30 août 2015 à 22:34
fox_hound Messages postés 5 Date d'inscription dimanche 30 août 2015 Statut Membre Dernière intervention 1 septembre 2015 - 1 sept. 2015 à 11:59
Bonjour à tous,

Je me heurte à un problème dans ma base de données.
J'ai un classeur avec trois tableaux identiques, un pour la seine et marne, un pour l'Essonne et un autre pour le val de marne. Chacun des tableaux dispose de 32 colonnes (qui peux augmenter), pour les lignes cela fait respectivement 900, 440, 500 (environ) et cela augmente au fil des nouveaux dossiers
Ces tableaux contiennent des infos sur des postes électriques. (Nom, numéro de tel, type de coffret, bref plein de données, et surtout une case Statut (en colonne E) et information en colonne AH)
Pour le statut (en service, fiche problème, hors conduite...) j'ai essayé d'extraire les données de ces trois tableaux dans des feuilles distinctes. (Une pour les « fiches problème » une pour les « hors conduite ».
Je souhaitais que les postes concernés ce copie directement dans la feuille.

J'ai trouvé cette macro mais je n'arrive pas à l'adapter, je suis très limiter niveau connaissance dans ce domaine, à part les enregistrements et les macros extrêmement simple...
J'ai collé ce code dans chacune des trois feuilles en mettant le nom de la feuille (omt_91 ; omt_77 ; omt_94)

Private Sub Worksheet_Activate()
Sheets("omt_91").[A12:AE1000].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=[H1:H2], CopyToRange:=[A1:E1]
End sub

Puis dans les feuilles hors conduite et fiche problème
En mettant en H1 : statuts et H2 : hors conduite/fiche problème

Private Sub Worksheet_Activate()
Sheets("omt_91").[A12:AH1000].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=[H1:H2], CopyToRange:=[A1:E1]
End sub

Je ne comprends ce que je dois mettre dans les modules et je ne comprends pas comment adapter la programmation.
Cela ne marche pas. Avez-vous un conseil a me donné, Déjà est-ce possible de synthétiser dans une feuille, des données de trois feuilles différentes. D'autant que je voudrais extraire juste certaines cases (la case statut, la case noms, poste source, départ, et la case information.... exigent en plus.)
Ce code fonctionne très bien dans le fichier d'origine évidement, le truc super c'est que ci je change un statut il disparaît de la feuille ou il était et le tableau de cette dernière ce range automatiquement.

Voila j'espère que mon pavé est compréhensible.
Par avance je vous remercie de vos retours.

désolé cela a déjà été aborder je pense, mais je n'ai pas réussi à mettre en pratique.
(truc tout bête je voudrais joindre le tableau mais je ne trouve pas comment faire sur ce forum...)
Merci Encore
-FOX

6 réponses

via55 Messages postés 14404 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 2 703
30 août 2015 à 23:22
Bonsoir

Ce que tu recherches doit être possible
Pour joindre ton fichier tu vas sur le site cjoint.com, tu telecharges ton fichier, tu fais créer un lien, tu le copies et tu reviens le coller ici dans un prochain message en indiquant clairement à partir d'une exemple précis ce que tu veux copier et où (le mieux c'est de remplir une feuille avec les données à transcrire de l'exemple).

Cdlmnt
Via

0
fox_hound Messages postés 5 Date d'inscription dimanche 30 août 2015 Statut Membre Dernière intervention 1 septembre 2015
31 août 2015 à 08:00
Ok merci, je fais ca ce midi.

cdlt

-FOX
0
fox_hound Messages postés 5 Date d'inscription dimanche 30 août 2015 Statut Membre Dernière intervention 1 septembre 2015
31 août 2015 à 09:36
Bonjour,

Je joint un bout de mon fichier réduit au plus simple. avec ce que j'aimerais.

https://www.cjoint.com/c/EHFhCMoIDNd

Je n'ai mis que quelques lignes par tableau.
Le code n'est pas du tout bon. même si je ne prend que sur un seul tableau, la macro bloque.

Merci par avance de vos retours.
Cordialement
-FOX
0
via55 Messages postés 14404 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 2 703
31 août 2015 à 18:52
Bonsoir

Sans macro, par formules en rajoutant 2 colonnes de comptage en colonnes AI et AJ de chaque feuille :
http://www.cjoint.com/c/EHFqZFYYg2h

Cdlmnt
Via
0
fox_hound Messages postés 5 Date d'inscription dimanche 30 août 2015 Statut Membre Dernière intervention 1 septembre 2015
31 août 2015 à 19:43
Bonsoir Via,

Impeccable c'est tout a fait ça. Merci beaucoup pour tout ce travail. J'ai essayé de comprendre les formules, mais j'ai du mal. Impressionnante d'ailleurs ces formules (le débutant à parler)

Merci encore beaucoup pour le temps que vous avez passé dessus, c'est vraiment parfait et pile poil comme je veux.

Cordialement
-FOX
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
via55 Messages postés 14404 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 2 703
31 août 2015 à 22:02
Re

Explication sur la formule en B8 de la feuilles Hors conduite :

=SI(A8="";"";SIERREUR(INDEX(OMT_77!B:B;EQUIV(LIGNE()-7;OMT_77!$AI:$AI;0));SIERREUR(INDEX(OMT_91!B:B;EQUIV(LIGNE()-7;OMT_91!$AI:$AI;0));INDEX(OMT_94!B:B;EQUIV(LIGNE()-7;OMT_94!$AI:$AI;0)))))

Le principe :
1) SI rien en A8, rien en B8 non plus

2) On prend dans la colonne B de la feuille OMT77 (INDEX) la valeur se trouvant sur la même ligne (EQUIV) que la valeur correspondant à la ligne courante-7 dans la colonne AI de la même feuille OMT77 => (INDEX(OMT_77!B:B;EQUIV(LIGNE()-7;OMT_77!$AI:$AI;0))
ainsi en B8 on est en ligne 8 et LIGNE()-7 donne 1, on recherche donc la valeur 1 en colonne AI ; elle se trouve en ligne 14, la valeur retournée par la formule est alors celle de la cellule colonne B ligne 14 soit Sly

3) Si le nombre recherché n'existe pas dans la colonne AI il a erreur, d'où la gestion de l'erreur avec SIERREUR avant INDEX .... qui renvoie à exécuter la partie suivante de la formule : la recherche du même nombre mais dans la feuille OMT91 d'où INDEX(OMT_91!B:B;EQUIV(LIGNE()-7;OMT_91!$AI:$AI;0))

4) Là encore le nombre peut ne pas être trouvé (c'est qu'il est alors dans la 3eme feuille) d'où la 2eme gestion de l'erreur pour aller chercher dans la feuille OMT94

Les formules des autres colonnes sont quasi identiques sauf qu'au lieu de renvoyer la valeur de la colonne B on renvoie celle de la colonne C, etc

Cdlmnt
Via
0
fox_hound Messages postés 5 Date d'inscription dimanche 30 août 2015 Statut Membre Dernière intervention 1 septembre 2015
1 sept. 2015 à 11:59
Bonjour,

Merci pour ces explications, j'y vois plus clair.

Cordialement
-FOX
0