Requête macros

Fermé
babeth - 21 mai 2015 à 20:11
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 - 29 mai 2015 à 15:46
Bonjour,

je vous joins un fichier afin de mieux vous faire comprendre mes besoins,
dans un fichiers je vais avoir entre 20 000 à 30 000 lignes qui seront sur une feuille, ou il y a une colonne département et d'autre colonnes, il faudrait que la requête soit la suivante à chaque fois que l'on trouve un nouveau département il faut ouvrir une feuille avec le nom du département et copier la ligne entière, évidemment si le département existe déjà, il faut copier la nouvelle ligne de " global" à la suite des autres sur les autres sur la feuille du même nom
Cordialement merci

http://www.cjoint.com/confirm.php?cjoint=EEvugtzJNrF
A voir également:

23 réponses

Ayuritenshi Messages postés 278 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 5 mai 2016 53
22 mai 2015 à 08:32
Salut je te propose cette solution tu pourras ajouter autant de lignes que tu le souhaite et tu peux également faire des recherches partiel.

http://www.cjoint.com/confirm.php?cjoint=EEwiFaS5XNI
Dis moi si cela te convient c'est sur une nouvelle feuille
A+
0
Ayuritenshi Messages postés 278 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 5 mai 2016 53
22 mai 2015 à 08:34
j'ai pas mis le bon excel xD je m'en excuse
http://www.cjoint.com/confirm.php?cjoint=EEwiIoeYS5T
Voilà
0
babeth > Ayuritenshi Messages postés 278 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 5 mai 2016
22 mai 2015 à 11:48
bonjour,
j'avais répondu mais je ne vois pas ma réponse, alors je refais.
Est ce que tu peux m'expliquer comment cela fonctionne, je ne vois pas de boutons
donc comment faire pour dupliquer les feuilles (avec le nom du "département" et copier les lignes entières
La recherche j'ai compris mais je ne sais pas ou je vois pas comment generer le nouveau fichier
Merci de me répondre
Cordialement
Babeth
0
Ayuritenshi Messages postés 278 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 5 mai 2016 53
22 mai 2015 à 12:46
oui bien sure alors tu va sur la feuille 2 car je l'ai mis sur une nouvelle feuille et tu marque simplement ta recherche exemple si tu veux histoire des arts tu ecrit histoire des arts ou simplement * art et tu aura tous les résultats comprenant le mot art dedans avec toutes la ligne
0
bonjour,

je suis navré, je pensais qu'avec le bout de fichier je pourrais me débrouiller, mais en fait c'est bien plus complexe que ce que je pensais, l'on m'envois le vrai fichier (une partie, et ce qui est a faire est pas différent mais plus complexe, alors je joins un fichier avec explications, si par un effet de bonté tu pouvais regarder je te serais reconnaissant
Par avance merci

http://www.cjoint.com/confirm.php?cjoint=EEwotDMlRls
0
Ayuritenshi Messages postés 278 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 5 mai 2016 53
22 mai 2015 à 14:39
Re bonjour je viens de regarder et j'en suis désolé mais ca sort de mes compétences :/
bon courage pour résoudre votre problème ...
0
babeth > Ayuritenshi Messages postés 278 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 5 mai 2016
22 mai 2015 à 15:03
merci de cette franchise et si une personne peut me dépanner j'en serais ravi

mille merci a toi et à vous tous

et bravo pour votre devouement
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
22 mai 2015 à 17:35
Bonjour à tous les deux

Un essai à tester
La macro est à lancer par Ctrl+k (pour le moment)
https://www.cjoint.com/?3EwrGZ9CpWf

Question. Les données de la feuille Feuil1 vont elles toujours en augmentant, c'est ce que j'ai supposé, sinon il faut prévoir le nettoyage des feuilles de département

Cdlmnt
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 22/05/2015 à 17:53
RQ. Remplacer la ligne
'.Cells.Copy Sheets(nf).Cells(1, 1)
par celle ci
.Cells(1, 1).CurrentRegion.Copy Sheets(nf).Cells(1, 1)
ça devrait aller plus vite
0
BONSOIR

merci pour tout ce que tu fais pour moi, il y a un petit problème, primo je ne sais pas changer les lignes, deuxio est ce qu'il y a une possibilités que la colonne semaine de la feuille 1 ne soit pas recopié
par avance merci
0

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

Posez votre question
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
22 mai 2015 à 18:54
1. primo je ne sais pas changer les lignes
Alt-F11, tu vas dans le Module 1
tu met un apostrophe ' devant la ligne à supprimer
tu insères une ligne après elle
tu colles la ligne remplaçante
2. deuxio est ce qu'il y a une possibilités que la colonne semaine de la feuille 1 ne soit pas recopié
cette colonne semaine tu veux la conserver vide ou bien carrément la supprimer
0
encore merci pour ta réponse rapide, tu tires plus vite que ton ombre
Bravo et merci mille fois
Bien compris pour le primo, vais le faire de suite .
pour la colonne, elle est renseigné à l'origine, mais comme c'est l'inspection académique, je suis obligé de la recevoir mais je n'en ai pas besoin sur les feuilles donc il faut la supprimé lors des copies sur les feuilles
Mille merci à toi
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 22/05/2015 à 19:33
OK, je vais te faire bosser un peu

tu ajoutes les lignes soulignées
1. ici au début du code
Const lideb = 2
Const coSem = 5

2. et ici vers la fin de la procedure
.Rows(lideb - 1).AutoFilter Field:=coDpt, Criteria1:=nf
.Cells(1, 1).CurrentRegion.Copy Sheets(nf).Cells(1, 1)
Sheets(nf).Columns(coSem).Delete

Tu n'as pas répondu à cette question
Question. Les données de la feuille Feuil1 vont elles toujours en augmentant, c'est ce que j'ai supposé, sinon il faut prévoir le nettoyage des feuilles de département

Bonne fin de journée
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 23/05/2015 à 09:46
Quelques précisions
1. Testes bien la macro avant de l'appliquer au vrai fichier
2. Dans le vrai fichier : Alt-F11 pour accéder à l'éditeur vba, puis Insertion/Module et tu copies tout le code. Tu modifies éventuellement la valeur de la constante FS avec le nom de la feuille où s'empilent les données

Option Explicit

Const FS = "Feuil1"
Const coDpt = 9

3. Il faudra me dire comment tu comptes lancer la macro (raccourci clavier comme j'ai fait, un bouton, un clic-clic dans une cellule, ...)
4. Si tout va bien, peux tu m'indiquer le temps mis par la macro pour s'exécuter dans le vrai fichier (donnes moi aussi son nombre de lignes)

Cdlmnt
0
babeth > ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024
23 mai 2015 à 14:08
bonjour,

vais te répondre :
ce fichier fluctue, c'est un fichier qui signales les erreurs de saisie des opératrices, lorsqu'il y en as évidemment, donc il peut faire 20 000 lignes comme il peut faire 0 lignes si les opératrices n'ont pas fais d'erreurs, d'où la nécessité de purger les feuilles "départment" lorsqu'elle n'existe plus dans la "feuille 1".
Tu comprendras qu'une feuille peut disparaître un jour et revenir le lendemain si l'opératrice à fait des erreurs de saisie, mais disons que nous naviguons toujours avec environ 5000 lignes, nous avons eu des pointes plus hautes, mais rarement en dessous de 1000.
Pour résumer il faut savoir que ce fichier est donc mis à jour par un serveur qui tourne la nuit, et que l'idéal serait: comme je vais le mettre dans les taches planifiés pour ouverture vers 6 heures du matin, donc l'idéal comme je te disais c'est que la macro se lance à l'ouverture du fichier pour mise à jour à l'ouverture sans clic et donc qu'il balaie toute la "feuille 1 de la 1ère à la dernière ligne en se recréant à chaque ouverture (peut-être une utopie ce que je te dis ?)
Hier en prenant 12000 lignes (environ) nous avons mis un peu moins de 10 secondes, c'est très bien
Voila je ne sais comment te dire merci .
PS j'ai fais les changements en suivant tes directives et j'y suis arrivée.
mille merci
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 23/05/2015 à 15:02
Ah, tu ne m'avais pas tout dit !

1. ce fichier fluctue, c'est un fichier qui signales les erreurs de saisie des opératrices, lorsqu'il y en as évidemment, donc il peut faire 20 000 lignes comme il peut faire 0 lignes si les opératrices n'ont pas fais d'erreurs, d'où la nécessité de purger les feuilles "département" lorsqu'elle n'existe plus dans la "feuille 1".
Est ce que ça veut dire que
1.1. que chaque matin, un nouveau fichier arrive (qui n'a rien à voir avec celui du jour précédent) : c'est à dire qu'il n'est pas censé compléter le fichier précédent
1.2. Ce fichier ne contient que la feuille "Feuil1" avec la liste des données et surtout aucune feuille département
1.3. A partir de ce fichier tout neuf à une seule feuille, tu veux ventiler les données dans les feuilles département : il n'y aura de créé que les feuilles dont le département figure dans la colonne département de la Feuil1 : donc pas besoin de purger les feuilles département non concernées ce jour là puisqu'elles ne seront pas dans ce fichier
2. Pour résumer il faut savoir que ce fichier est donc mis à jour par un serveur qui tourne la nuit
"mis à jour" n'est alors, au sens du 1.1, pas le bon terme, ce ficher est recréé chaque nuit
3. l'idéal comme je te disais c'est que la macro se lance à l'ouverture du fichier pour mise à jour à l'ouverture sans clic
Tu vas bosser un peu
Dans l'éditeur vba (Alt-F11) puis dans la fenêtre de gauche (liste des modules)
3.1. tu clic-clic sur le module ThisWorkbook
3.1. dans la fenêtre horizontale du milieu (en haut), il y a marqué Général. Tu déroules et sélectionnes Workbook
Si tu ne vois pas Workbook, pas de panique tu recommences depuis 3.1.
L'éditeur te propose alors d'écrire la procédure Workbook_Open
tu la complètes par un appel à la procédure OK, comme ça
Private Sub Workbook_Open()
Call OK
End Sub
3.4. Lorsque tu ouvres un fichier contenant des macros, par défaut, Excel te met en niveau de sécurité Moyen, ce qui fait apparaitre une fenêtre te demandant l'autorisation d'exécuter les macros. Si tu veux la court-circuiter. Outils/Macros/Securité et tu choisis l'option Faible
4. Hier en prenant 12000 lignes (environ) nous avons mis un peu moins de 10 secondes, c'est très bien
As tu bien fait les modifications du message 10 ?
RQ. Remplacer la ligne
'.Cells.Copy Sheets(nf).Cells(1, 1)
par celle ci
.Cells(1, 1).CurrentRegion.Copy Sheets(nf).Cells(1, 1)

Comme tu vois j'ai un (au moins) doute, si je suis à côté de la plaque (points 1 et 2), tu dis et re-expliques

Cdlmnt
0
1.1 OUI ca veux dire qu'un module toutes les nuits prends les saisies et les vérifies et crée une nouvelle feuille qui n'a rien à voir avec celle de la veille
1.2 et oui en effet il n'y a qu'une feuille "Feuille 1" en effet mis à jour n'est pas le bon terme, il faut dire qu'il y a une création d'un état des erreurs constaté par le module d'où le fait de créer à l'ouverture un nouveau fichier avec les feuilles "departments"
Pour le reste ok je vais bosser pour essayer de faire ce que tu me dis
et je te tiens compte de ce que je peux faire...merci à toi cela me permet de comprendre un peu mieux .
@ bientôt de te lire
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
23 mai 2015 à 16:11
Ouf, j'ai eu peur ;-)
Si tu veux un code commenté pour voir comment ça marche tu dis

Bon week end
0
je veux bien voir un code commenté

merci à toi

bon week end et merci pour tout
0
regarde mon changement en message 10 dis moi si ca vas
.Rows(lideb - 1).AutoFilter Field:=coDpt, Criteria1:=nf
.Cells(1, 1).CurrentRegion.Cpy Sheets(nf).Cells(1.1)
Next nudpt

par contre dans le Workbook j'ai mis cela:dans la feuille général
Option Explicit
Private Sub Wordbook_Open()Call OK
End Sub
et ca marche pas
erreur de compilation attendu fin d instruction

tu ne m'as pas dit si on peut faire la mise a jour sans clic ou sans faire ctrl+k

merci
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
23 mai 2015 à 17:14
Bon

On va faire simple
https://www.cjoint.com/?3ExrdCikkiQ

Ce fichier ne contient que la feuille 1
Alt-F11 pour passer dans l'éditeur vba
dans le module Workbook,
procedure Workbook_Open() il y a un apostrophe devant Call OK
tu l'enlèves (l'apostrophe) pour activer la ligne
tu enregistre le fichier et tu le ferme
tu le rouvre
ça devrait fonctionner

RQ1. la procédure procedure Workbook_Open() comme son nom l'indique, s'exécute automatiquement à l'ouverture du fichier
....
MAIS, car je sens qu'il va y avoir un mais ...
0
il n'y a pas de mais, mais il y a un mais je dois enlever les (parenthèses) et OK pour que ca marche, sinon j'ai un message d'erreur, d'autre part
l'application ne se lance pas à l'ouverture; je dois cliquer sur ctrl+k
d'autre part si par exemple j'enlève les ligne d' un department' que je sauvegarde, que je ferme et que je relance la feuille du "department" reste crée avec les lignes que j'ai eraser et alors qu'il n'y a plus de ligne, d'où l'intérêt de faire un "rase" à la fermeture du fichier, et de relancer l'application à l'ouverture du fichier et comme je te demandais en automatique si possible

euhhhh est ce possible

merci
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
23 mai 2015 à 17:36
Je ne comprends pas bien ce que tu as fait
1. Qu'est ce que donne celui là à l'ouverture ?
https://www.cjoint.com/?3ExrHhPMscL
2. Tu ne m'avais pas dit que le fichier pouvait être ré-ouvert dans la journée. Dans ce cas que faut il faire ?
0
je sais pas, je crois que je m'exprime mal
le fichier que tu m'envoi il est ok, super, à l'ouverture sans "clic" il met le temps de réaction (0.00632) et j'ai les feuilles de départment avec les lignes;
Mais mardi quand je serais en réelle, j'aurais une tout autre "Feuille1" car toutes ces lignes vont être rectifié dans la journée et ainsi de suite chaque matin, et il y auras de nouvelles lignes de fausses avec de nouveaux "departments", alors la je pose la question est ce que les feuilles des "départments" existant disparaitrons pour laisser la place aux nouvelles feuilles et aux nouvelles lignes, c'est la mon soucis
Car non le fichier est ouvert une fois le matin et il n'est pas ré-ouvert jusqu'au lendemain matin.


Si tu penses que ca marcheras dans le sens ou je te le dis
il ne faut rien toucher et il me reste à te remercier grandement de tout le temps que je t'ai fais perdre et de tous les soucis que je t'ai donné

Grand Merci
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 23/05/2015 à 19:05
A chaque ouverture, celui-là supprime toutes les feuilles du classeur sauf Feuil1
J'ai supprimé la feuille Explications
https://www.cjoint.com/?3ExsC0SgoFq
Tu testes : soit
1. tu ouvres
2. tu supprimes un departement dans Feuil1
3. tu enregistres et tu fermes
4. tu re-ouvres
Est ce que ça correspond à ce que tu veux

MAIS, il y en aura encore un
Ce fichier lorsqu'il est "mis à jour" la nuit par l'académie (vive l'EN en passant)
Option1. Est ce qu'il est supprimé et recréé, si oui, les macros vont disparaitre, pas terrible
Option 2. Est ce qu'il est simplement modifié, si oui, l'exécution des macros à l'ouverture (de nuit) vont peut être pose problème. Il y a des solutions
0
Maitre , car je peux t'appeler maitre, tu as saisi mes mauvaises explications, mais c'est super comme boulot
Alors la mise à jour du fichier la "Feuille1" c'est une liaison ODBC avec serveur (SQL server 2008
Sur le poste de travail je garde le fichier que tu viens de me faire , je pends le fichier du serveur il y a un pont entre les deux, ce qui fait que je garde la structure du fichier que tu m' as fait, seul change les données de la feuille .
Du fait que j'ai mis une ouverture programmée, qui ne touche que les données de la feuille 1, donc en clair, ma "feuille 1" conserve toutes les structures (colonnes et macros que tu viens de faire) seul changement les données a partir de la ligne 2 de la "feuille1"

je peux te dire " merci l'artiste" un grand merci

(oui parlons en de l'EN....vivement la retraite....hihihihi)
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 23/05/2015 à 19:12
J'ai encore comme un léger doute mais bon, si mardi ça coince tu dis

L'idée serait d'ouvrir le fichier de données (sans macro celui là) via un bouton par exemple, depuis un autre ficher maitre (lui)

RQ1. Maitre c'est (un peu) exagéré
RQ2. Au fait, dans ton rectorat, on ne peut pas te fournir la bête qui fait tout ça :-) ?

Donc on ferme jusqu'à (peut être) mardi

Cdlmnt
0
Je ne sais pas si tu vas me croire, j'ai fait les applications à l'époque pour pouvoir faire les pré-inscriptions sur les minitels, j'ai tout mis en place, le rectorat et l'académie touchaient les dividendes (des P et T) moi nada, j'ai quand même un grade d'ingénieur informaticienne mais en programmation sur "ACCESS".
De nos jours c'est fini l'E.N. signe des contrats avec des marchands de logiciels et nous perdons tous nos acquis, et personne n'est capable de résoudre les problèmes tel que celui la, et quand tu t'adresse à CELCAT il te bousille des colonnes mais sont bons pour rien d'autre...voila en quelques mots ce que représente le service informatique d'une université d'une des plus grandes ville de France...il est heureux qu'il reste encore des gens comme vous qui dominez l'outil informatique " EXCEL"
Cordialement
Bon W.E et merci
0