Petit astucien | bonjour à toutes et à tous,
je voudrais avoir l'avis de spécialistes (que vous êtes) sur la faisabilité d'une idée que j'ai en tête... le contexte est le suivant: - gestion des sytèmes incendie dans une industrie, ou sur un navire... - possession d'une 'algoliste' (BdD) sous excel, avec l'ensemble des détecteurs incendie (les champ sont les suivants; Automat VFS ZONE LOC Folio FAI ZC - ZNC Voie Désignation du Local Coffret JDT Niveau Local Détecteur Type Capteur Ligne Collective Asservi 01 Asservi 02 Asservi 03 Asservi 04 Asservi 05 Asservi 06 Asservi 07 Asservi 08 Asservi 09 Asservi 10 Asservi 11 Asservi 12 Asservi 13 Asservi 14 Asservi 15 Asservi 16 Asservi 17 Asservi 18 Asservi 19 Asservi 20 - possession des schémas des bâtiments, locaux, avec les étages, les Le but de la manip est le suivant: Voilà ce que souhaiterai réaliser. Pensez-vous celà réalisable? ---> la démo pour bonzaï est presque adaptée, mais je préfererai une boîte de dialogue sous excel... j'ai placé des fichiers exemples ici: http://kreg.free.fr/EXCEL/ Modifié par n2c_coxiste le 26/04/2007 18:30 | ||||||||
Publicité | |||||||||
| |||||||||
Petit astucien ![]() | Message original par n2c_coxiste Bonjour, C'est tout à fait possible avec une macro. Pour qu'elle s'active à l'ouverture il faut qu'elle porte un nom particulier "auto_open" je crois. | ||||||||
![]() | Bonsoir, C'est certainement très faisable... par une entreprise de développement appropriée. Ou par un allumé en mal de programmation VBA. mais le monde des forums étant ce qu'il est et celui des programmeurs au chomage à peu près aussi vaste, je doute fort que tu trouves ici ou ailleurs une solution clef en main. Dans le monde d'Excel les boites de dialogue +++ s'appellent des Userform (en abrégé USF) et leur maitrise à un tel niveau nécessite quelques années de persévérance. Quoi que... s'il s'agit de faire un "bonzaï like" ça peut se révéler relativement simple. A toi de proposer une ébauche : sinon il est clair que bmp ou pdf le problème est le même. La seule difficulté réside dans l'ampleur de ce que tu mets dans tes USF en matière de bouton radio, boite à cocher, etc... Bien que facilement réalisable le masquage des menus Excel rencontre une vive opposition sur la plupart des forums Excel sur internet et il est fort improbable que tu y trouves quelqu'un pour t'accompagner sur cette voie. Pour la connexion avec Visio je ne sais pas, Access no problème mais y faut fatiguer grave, je ne vois pas forcément l'intérêt. C'est juste pour amorcer le débat... Bon appétit ! A+ | ||||||||
Petit astucien | Salut à toutes et à tous, quelle rapidité! j'ai déjà trouvé des bribes de fonctions ou de macro pour les *.pdf mais je n'ai pas lancé l'affaire. (shell.execute et sendkeys sont les deux fonctions référencées qui fonctionnent) J'ai déjà fait une ébauche de la USF ou dialoguebox... elle doit pouvoir sélectioner 1 parmis plisieurs onglets en fonction du radiobouton coché, et ceci fait pointer vers des listes différentes (plages identiques sur des onglets ou feuilles différentes sus-sélectionnées). Je voudrais pouvoir choisir mon critère de recherche, par local, niveau, bâtiment, détecteur... Puis afficher dans cette même boîte les infos que je juge utile... (contenu du local par exemple, liste des détecteurs incendie...) Puis pouvoir lancer le pdf 'kivabien' en plein écran, zoomé, centré sur l'appareil précédemment recherché (pdf vectoriel) il existe une liste de SENKEYS, et sur le forum google.excel le sujet a été développé par plusieurs voies différentes. Je fais ça pour démontrer à mes chefs qu'on peut faire mieux que le filtre automatique, que nous sommes quelques dizaines de personnes à utiliser en permanence. Si je fais ma démo, on prends un stagiaire qui fera qque chose de carré, suivant un cahier des charges que nous aurons préalablement rédigé. ça entre dans un projet détude par exemple... Mais je dois convaincre de la faisabilité de la chose (et je suis convaincu, ayant programmé moi-même il y a quelques lustres, que c'est bien réalisable... Merci par avance. Greg. | ||||||||
![]() | bonjour, Ce qui me parait le plus nébuleux, c'est la possibilité de passer tes paramètres à Acrobat en VBA pour le reste on trouvera toujours une solution. Il faut donc bien tester les limites de faisabilité de ce point précis avant de te lancer sur le système de sélection, sinon tu auras travaillé pour rien. Les stagiaires capables de développer à ce niveau sur VBA ne me semblent pas très nombreux... De plus à première vue le sujet me semblant assez impressionnant, il me semble assez probable qu'on débouche rapidement sur des problèmes d'Array, Collection, Modules de classe... et là on rentre carrément dans un no man's land ! Bien poser le problème avant de te lancer car à ce niveau, tu ne trouveras que des aides très ponctuelles sur des points très précis avec exemples et fichiers joints à l'appui. [Edit] Il ne serait peut-être pas inutile de faire un petit tour également sur d'autres forums moins généralistes MPFE - XLD A+ Modifié par galopin01 le 27/04/2007 03:24 | ||||||||
Petit astucien |
je traine aussi là bas... et sur le group EXCEL de Google; qui est pas mal aussi.
| ||||||||
Petit astucien | Salut à tous, c'est encore moi......... j'ai réussi certaines choses... mais je bloque sur des bugg de débutant, j'en suis désolé, et vous sollicite à nouveau. Erreur "1004", UserForm ou UserForm1, déclaré dans "Feuilles", lancé par un bouton DEMO sur une page du classeur. je place le fichier ici: http://kreg.free.fr/EXCEL/DETECTEURS%20INCENDIE%20TR0%20%e0%209%20(indice%203%20).XLS les commandes SENDKEYS pour faire faire de manips à AcroRead fonctionnent bien, le seul pb est que je ne sais pas passer une variable dans la ligne de commande... (les SENDKEYS ne sont pas dans ce fichier joint) Sub Bouton18_QuandClic()
Voilà, je voudrais remplacer NC 234 par une variable qui se nomme Local_ dans ma macro, et je ne perviens pas à trouver la synthaxe adéquate... vous auriez une idée?
Pour ce qui concerne l'erreur "1004", je ne l'ai pas en permanence, et si je parviens à afficher le UserForm1, celui-ci ne s'initialise pas... les listes restent vides... WhY?!? Merci pour votre aide précieuse. Greg.
| ||||||||
![]() | bonsoir, pas eu le temps de creuser mais pour le sendkey (tout à fait au hasard) tu peux essayer quelques concaténations du genre : "^f " & Local_ & " % ~ {ESC}" "^f {" & Local_ & "} % ~ {ESC}" Pour le reste il faudra attendre un peu. A+ | ||||||||
Petit astucien | Sub cherche_local() SendKeys "^f " & Local_ & " % ~ {ESC}" Merci, celle_ci fonctionne à merveille! Si ça peut intéresser les programmeurs qui passent par ici, il y a cette page belge sur ce sujet: http://users.skynet.be/micdub/vba6.htm Merci encore. (ça prends forme peu à peu) | ||||||||
![]() | Bonsoir, tu pourrais remplacer les Application.Wait Now + TimeValue("00:00:01") par : DoEvents ça devrait permettre de supprimer le : While Not EstActive(RetVal) A+ Modifié par galopin01 le 22/05/2007 21:49 | ||||||||
![]() | Ton lien de 22/05/2007 : 19:39 ne fonctionne pas. | ||||||||
Petit astucien | Salut, merci, je prends note, surtout que le EstActive me donne des erreurs...
le lien suivant? http://users.skynet.be/micdub/vba6.htm chez moi ça tourne. Sinon si c'est le REP EXCEL sur mon site, tenter de piocher manuellement dans http://kreg.free.fr/EXCEL/ prendre le 2e fichier excel, celui qui pèse 1,8Mo. Greg.
Modifié par n2c_coxiste le 22/05/2007 22:28 | ||||||||
Petit astucien | bonjour à tous, je bloque sur une morceau de code... situation: je recherche dans une colonne donnée un STRING issu d'une InputBox. (typiquement L2:L1249 ou dans la plage nommée LOCAL) je voudrais copier les 'x' lignes qui contiennent cette chaîne recherchée, et coller ces lignes à partir de "B1321" De ses données extraites, je fais quelques bricoles.... extraction, misen en forme, concaténation conditionelles... puis je veux effacer cette sélection.
Vous avez une idée??? merci, car ça fait quelques heures que je sombre peu à peu! | ||||||||
![]() | Euh... Si ton code est aussi clair que tes questions, pas étonnant que tu bloques ! Quand une question est bien posée, le problème est pas loin d'être résolu. A+ | ||||||||
Petit astucien | Salut Galopin, ça peut venir de là, mais même si ma question était claire (ne fusse que dans mon esprit), je ne pense pas que ça aie pu résoudre l'énigme qui se pose à moi. Je reprends: je stocke une chaîne de caractère (Une lettre suivie d'un nombre à 3 chiffres; ex: G103 stocké dans Local_) Je désire rechercher dans une colonne définie (nommée LOCAL) les occurences de cette chaîne Puis, copier les lignes concernées dans une feuille temporaire, ou en fin de tableau (ligne 1321). Lorsque j'ai extrait ce petit monde (ce que je ne parviens pas à faire pour l'instant), j'affiche les différentes données dans mon USF (liste des détecteurs incendie du local, type de détecteur, adressable individuellement ou disposé sur une boucle, dans ce cas le n° de la boucle, référence de la FicheActionIncendie (FAI) correspondant à ce local... et bouton pour pouvoir afficher le plan du local (PFD avec SENKEYS)
C'est l'étape de création du filtre auto qui me bloque... je vais placer le fichier dans me rep qui va bien: lien = http://kreg.free.fr/EXCEL/gliste%20ind1.xls Je me suis basé sur une fichier tutorielèsque belge pour avoir une base... j'aurais aimé dédié le code un peu mieux pour moi,mais la génération des listes rest un peu obscure à mes yeux) http://users.skynet.be/micdub/tele1.htm
D'avance merci, Greg.
Modifié par n2c_coxiste le 29/05/2007 17:45 | ||||||||
![]() | Ben voilà... Je vois pas l'intéret du filtre dans cette situation. Une petite macro qui cherche toutes les occurences de "G103" ans la colonne L et copie la ligne concernée dans une feuille "cible" Sub Test() Bien sur on peut "variabiliser" le string recherché... A+ | ||||||||
PC Astuces a besoin de vous pour survivre. Nos conseils et astuces vous ont aidé ? Vous avez résolu un problème sur votre ordinateur ? Vous avez profité de nos bons plans ? Aidez-nous en retour avec un abonnement de soutien mensuel. 5 € par mois 10 € par mois 20 € par mois
| |||||||||
Petit astucien | Salut Galop d'Ain bien vu, je n'ai pas pensé à ça, mais c'est parfait! il y a sans doute bien des façons de parvenir à ce saint graal... mais là c'est limpide! Merci à toi, je continue mon exploration (suis débutant en fait, même si je sui curieux et ai déjà pondu quelques lignes dans le passé!) Greg, from N2C.
| ||||||||
Petit astucien | Sub vasy()Ha ben ZUT alors, ça copie bien les lignes, sauf la colonne L (lelocal) gloups! Correctif, la chaîne saisie dans une autre partie de code ne garde pas sa valaur... donc ça me cherche la chaîne "" Arf, trop drôle!!! (J'aurais du déclarer ça en Public???) ça c'est corrigé en replaçant une ligne Local_ = InputBox("local recherché: ") Donc tout est bon............. méa coulpa. Modifié par n2c_coxiste le 29/05/2007 22:19 | ||||||||
Nouvelle astucienne | salut a tous! je rencontre un petit probleme avec mon pc perso actuellement j'aurais besoin de petit conseils ou mieux de solutions. je viens d'acheter un pc portable il y a 1 mois, dc qui utilise windows vista (patience!!) hier j'ai travaillé sur des dossiers word et exel (2007) ms en voulant les retoucher un petit peu hier soir je me suis apercu que je ne peux plus travailler dessus!!! lorsque je veux taper un texte lordi me donne un message du genre " aucune modification possible car la selection est verouillée" c'est surement une erreur de ma part ms je ne vois pas ce ke j'ai pu faire... merci de me repondre rapidement.
| ||||||||
Petit astucien | Salut à toi, je pense que tu as mal posté ta requête... mais bon. je ne connais pas Vista, et la suite office 2007... tu n'as pas ouvert les doc 2x, sous deux sessions différentes? Relance la machine... CTRL + ALT + SUPP pour voir si office est encore ouvert.... Après il y a des moulinettes pour débugger les fichiers OFFICES corrompus... A tester. (rechercher sur Google document ou fichier + office ou word ou excel + corrompus ou verrouillé) Voilà, tiens nous au jus. Greg. | ||||||||
Petit astucien | bonjour à tous, je reviens à la charge, avec les lignes de code... j'ai une recopie qui se passe mal, il me manque des cellules à la recopie. dans une feuille "temp" je recopie la ligne 1 d'une autre feuille de l'onglet. Jusque là, c'est ok. puis, à l'aide la la petite macro 'kivabien' de Mister Galopin, je recopie les lignes entières qui m'intéressent, à la suite de la première ligne dans la feuille "temp" Et là, toutes les cellules n'y sont pas, j'ai un décalage entre la ligne 1 et les suivantes (les titres ou noms de colonnes ne correspondent plus)
vous avez une pitite idée de ce qui peut bugger? Merci par avance, Greg. | ||||||||
![]() | bonsoir, (non testé...) remplacer les lignes 11 à 17 MsgBox "on recherche " & Local_ Le reste devrait suivre. A+
| ||||||||
Petit astucien | Salut Galopin, donc cette ligne permet en un seul coup de recopier la ligne contenant les noms de colonne dans la feuille temporaire. 'sans aller-retour de 'sheets'. j'ai remplacé le petit morceau par cette ligne. Par contre, je pense que c'est la partie suivante qui pose problème, quand on sélectionne les lignes contenant une certaine données (Local) et qu'on les récopie une à une dans la feuille 'temp' N'y a t-t-il pas de soucis, quand les cellules sont vides (mais j'ai remplacé "" par des données), ou si il y a des plages nommées? peut-on remplacer cette ligne: o.EntireRow.Copy Sheets("temp").Range("A" & 2 + z) par une ligne un chouïlla différente o.Rows("1:1").Copy Sheets("temp").Range("A" & 2 + z) en l'écrivant je me remds compte du non sens... j'ai l'impression que "EntireRow" est en cause. C'est une piste possible, ou il y a un truc énorme à côté?!? Arf, la route est encore longue... Merci pour ta patience. j'ai placé une copie au cas ou (http://clopig.free.fr/ExcelGreg/gliste%20ind3.xls) Modifié par n2c_coxiste le 19/11/2007 18:06 | ||||||||
![]() | Ben... j'ai pense pas tel quel ça me parait très bien d'ailleurs c'est "in extenso" le code de ma macro test. Je vais refaire quelques essais à partir de ton fichier ! Waiting... | ||||||||
![]() | ... si tu me donnes le mot de passe ! Modifié par galopin01 le 19/11/2007 18:22 | ||||||||
Petit astucien | Les feuilles sont protégées par "OK" au cas ou je ferai n'importe koi!!! (par le biais de la macro) je fais un essai de téléchargement depuis le site pour vérifier, mais normallement, pas de passe. Désolé pour ce hic Greg.
| ||||||||
![]() | Pas besoin de mot de passe... J'ai pas eu le temps de vraiment fouiller mais à mon avis le seul problème pourrait-être que tes feuilles ont pas la même structure ? C'est quoi la feuille "Sous_U" ? A+ | ||||||||
Petit astucien | dans l'USF, je choisi la SousUnité Technique, qui pointe vers une des 4 feuiles. je ne fais les essais que sur l'onglet Tr 1-2-9-0 qui est le plus à jour pour le moment. Les autres SousU (feuilles) seront remplacées et auront la même structure que la première. A moins que la recherche de pointe pas vers la bon onglet!!! Vais voir ça, c'est possible!!!! Merci, je vais creuser! Greg.
| ||||||||
![]() | le problème c'est : For Each o In Range("lelocal") qui pointe sur la feuille old Tr 1-2-9-0 old alors évidement si tu travailles sur la feuille Tr 1-2-9-0 y a un blème ! A+ | ||||||||
Petit astucien | Comment as-tu vu celà? j'en reste pantoit!!! | ||||||||
![]() | Si je peux me permettre une suggestion, tu travailles sur beaucoup de Range au nom pas forcément évocateur. Essai de travailler un peu plus sur des instances de feuilles et de préférence avec les noms de feuilles VBA : Pour le débogage, c'est plus cool ! Ensuite tu pourras variabiliser. Enfin ce que j'en dis... Moi c'est la première chose que j'ai fait : [Feuil1].Activate
Et Bingo ! | ||||||||
Petit astucien | Oui, c'est vrai, j'ai essayé de travailler avec des plages nommées, sur le conseil des forumeurs, mais j'ai un peu négligé leur devenir au fil du temps, et surtout quand j'ai remplacé Tr1-2-9-0 par le nouvelle feuille à jour, qui contient plus de données... l'autre a gardé mes plages nommées. Bon, je reprends tout au début, c'est trop flou. Merci pour ta précieuse aide, j'aurais pu tourner en rond longtemps. (vu que je ne cherchais pas du bon côté) Greg. | ||||||||
Petit astucien | en fait c'est encore pire que ça... en fonction de la Sous_U sélectionnée, je stocke dans la variable Tr1-1-9-0 ou les autres Tr3-4-8-0 ou Tr5-6-7-0 dans Sous_U puis dans lelocal je stocke lelocal1290 ou lelocal3480 ou lelocal5670 je dois donc bien définir ses trois dernières plages... allez, v essayer ça de suite!
Modifié par n2c_coxiste le 19/11/2007 19:36 | ||||||||
Petit astucien | Ben voilà, merci, merci et encore merci. Grâce à ton aide j'ai pu démêler tout ce petit monde... et hop, ça tourne bien (rechercher sur Tr1-2-9-0 les données d'un local comme le L604 par exemple) Par contre, j'ai vu un autre piège; dans les feuilles, certains locaux ont 1, ou 2, ou 3 espaces avant le nom!!! Par exemple, le W701 est écrit " W701" donc en faisant des tests, ça ne me donnait rien... halalala... Donc je dois travailler deux choses, la boîte de saisie (pour obliger à respecter majuscules et interdire les espaces) et dans la fonction de recherche, rechercher la chaîne et pas l'expression exacte. j'ai placé la fichier mis à jour, c'est plus complet... Encore un grand merci, sans vos excel-ant forums, je n'en serai pas là! Greg. Modifié par n2c_coxiste le 19/11/2007 21:28 | ||||||||
Petit astucien | bonjour, je reviens à la charge avec une nouvelle petite question.... Je voudrais extraire des données par rapport à un critère sur une colonne; recopier les lignes entières quand la donnée d'une plage ne commence pas par un chiffre suivi d'un espace...
Donc, j'ai recherché ce qui était dispo dans ma collection de routines, et j'ai fait une tentative, vaine... If Left$(o.Value, 1) = "1" Then pour tenter de comparer le premier caractère de gauche par rapport à "1" pour commencer... mais ça ne fonctionne pas... Quelque chose existe? Quel est le jocker officiel dans les macro? (j'ai essayé "1 ?" mais nada...) ou alors "1 " & ? Merci par avance. Greg.
| ||||||||
![]() | bonsoir, joker ? j'ai pas ça en magasin. Une routine comme ça peut faire l'affaire :
Sub test() ...à condition de ne pas avoir d'espace parasite à gauche de la chaine(sinon rajouter un Trim) A+ Modifié par galopin01 le 17/12/2007 18:45 | ||||||||
Petit astucien | Salut Galopin, oui, j'ai déjà trimé la feuille, ca c'était un "carnaval" la dedans... je vais vite essayer ça, car je bloque (et pas internet au boulot, donc ça n'aide pas beaucoup!!!!) merci encore. Greg. <> ========================================================================= petit bug, l'instruction mid(o.value, 2, 1) n'est pas acceptée, "erreur de compilation; nombre d'argument incorrect ou affectation de propriété incorrecte" Pourtant, en lisant le F2 de Mid ou mid$ je ne vois pas ce qui défaille. Si je raccourci le test Y = ... pour juste tester que la valeur commence bien par un chiffre, celà fonctionne, mais ne copie pas dans ma feuille temporaire... Ceci dit, je n'y ai pas encore passé des heures, gestion des enfants oblige... donc je m'y remet. Greg. Modifié par n2c_coxiste le 17/12/2007 20:43 | ||||||||
Petit astucien |
pour y voir + clair.......... Y est à VRAI, mais o.EntireRow.Copy Sheets("temp").Range("A" & 2 + z) ne s'execute pas.... | ||||||||
Petit astucien | bon, je ne comprends pas pourquoi la ligne de recopie ne passe pas... (à cause de sa syntaxe, avec un espace?!?) pour contourner ce problème, je remplace par cette ligne par Call cocopie() et dans Sub cocopie() je place mon mini code (recopie des lignes concernées et comptage de celle-ci) ça fonctionne bien, mais j'ai du redéfinir la plage, si cette plage contient des lignes vides, plantage...... donc je dois encore creuser, à moins de définir de manière dynamique cette plage, par XlUp... Vais voir, mais déjà là je suis bien content... Encore merci Galopin, je progresse, peu à peu... la route est longue | ||||||||
![]() | pour moi ça passe. Si tu ne définis pas mieux ta plage il faut tester o <> "" en premier pour éviter de poser un Left sur un o.value vide :
'... La démo Evite de poser des balises code seules, c'est un peu (très) c... A+ Modifié par galopin01 le 18/12/2007 00:12 | ||||||||
Petit astucien | Ooops, copier/coller.... j'ai placé une version plus récente: IcI Et pour le mid(o.value, 2, 1) qui ne passe pas, Excel ne digère pas les conditions multiples du genre? bon, enfant malade... donc garderie = refoulement, donc je suis à la maison... = Excel! (et enfant) A tout' merci, Greg. | ||||||||
Les bons plans du moment PC Astuces | Tous les Bons Plans | ||||||||||||||||||
|