BADGES
Bonjour,
Je vous écris aujourd'hui car je me trouve dans une situation difficile, j'essaye de créer un logiciel permetant à des gardien de faire une demande de badge pour un locataire afin de leur faciliter le travail.
La problematique ici c'est que j'ai écris mes ligne mais je n'arrive pas a les faire " agir", les ligne écrite sont des copier collé de macro, malheureusement je ne suis pas développeur :/ il s'agit de mettre en application la formule SI() au niveau de la mise en page.
Je vous serait absolument reconnaissant de bien vouloir m'aider à mettre en fonction ce VBA.
c'est le 4) si hall sinon parking du document ci-joint( Les codes VBA), les ligne sont juste quand je met lecture sur mon VBA ca marche mais quand je le fait directement sur ma page excel il ne fonctionne pas
par avance merci !!
Bonjour,
Nous sommes sur un forum Excel !
Le classeur d'où est issu ce code (avec le code), serait plus approprié.
Que veux-tu qu'on du code sans l'objet auquel il s'applique ?
Cordialement.
re:
Pour faire suite a mon message voici exactement la problématique sur un support Excel
Encore merci de l'aide que vous pourrez m'apporter
M. FFERRAND,
J'ai renvoyer le support excel, il est vrai que c'est plus facile que juste un code sur une feuille WORD,
les lignes sont inscrient dans le VBA mais mais je n'arrive pas a le faire fonctionner.
Je vous le remet ci dessous :
Je me tiens a votre disposition pour tout demande d'information complémentaire
Merci
Re,
J'ai jeté un oeil à ton classeur, et j'ai refermé.
Tu as déjà pas mal de code, en 3 modules standard (ça fait déjà 2 de trop !
Le classeur m'a l'air relativement abouti, donc plutôt bien conçu en ce qui concerne son apparence, mais apparemment, si rien ne fonctionne malgré la présence de code, c'est une coquille vide et c'est donc que sur le plan des fonctionnalités la conception a été défectueuse.
Pour que quelque chose fonctionne comme prévu, il faut déjà avoir conçu comme il devait fonctionner et défini les différentes fonctionnalités à mettre en place, puis les construire selon un plan de réalisation logique, dont à mon sens ne fait pas partie la pêche de code ici ou là...
Et si je regarde le code, j'y vois pour l'essentiel du code enregistré, une bonne partie utilisé pour mettre des formules (ce que je trouve en général aberrant), un gros volume pour faire de la mise en forme (ce qui me paraît aussi difficile à justifier), et une procédure non évènementielle se baladant seule dans un module de feuille. Choses déjà qui, pour moi, montrent qu'on ne sait pas utiliser VBA.
VBA n'a pas vraiment d'utilité pour tout ce qu'on peut faire aussi bien ou mieux et souvent plus vite dans Excel : les formules dont on a besoin, on les met et elles ne bougent plus, la mise en forme, une fois qu'on l'a faite, elle reste. Le rôle de VBA en ces matières reste marginal, pour gérer quelques variations périodiques. J'ai pu dire, ce qui n'est d'ailleurs qu'un indice, que je trouve toutefois significatif, que lorsque dans un certain volume de code des boucles et des tableaux à proportion, c'est qu'on n'avait pas fait de la programmation VBA, mais juste de l'Excel manuel automatisé...
Etant donné que la seule intervention que je jugerais utile c'est de commencer par éliminer le code présent pour reprendre la conception au niveau de la définition des fonctionnalités à mettre en place, et engager la contruction de chaque dispositif fonctionnel à partir d'une vue d'ensemble, tu peux attendre que quelqu'un ne partageant pas mes convictions décide de plonger dans ce fatras pour te venir en aide... Je lui souhaite bon courage, car au survol aucune amorce d'élément fonctionnel n'est apparue à mes yeux, et les fonctionnalités sont totalement absentes de ta présentation, si l'on excepte l'objectif final, qui relève du voeu pieu sans description précise de la façon dont ça doit fonctionner.
Cordialement.
Re;
Pour dire vrai M. Ferrand je suis loin d'être une personne qui s'y connais en excel et encore moins en VBA j'ai testé différente manière, avant de me tourner vers ce forum j'ai lu different site et cours sur internet pour y arriver j'ai testé d'y mettre des macro dans ma VBA pour que cela fonctionne, malheureusement cela fait beuguer mon PC, comme :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B5")) Is Nothing Then
'********* Appel de la Macro *****************
Macro1
End If
If Cells(5, 2).Value = "Parking" Then
Range("C24:D28").Select
Selection.Clear
End If
End Sub
et toute les fonctions n'y sont pas comme la mise en forme des cellules avec les couleurs et bordure.
Le seul moyen que j'ai trouvé à faire ce que je souhaite, c'est d'enregistrer les macro et reprendre les ligne deja ecrit.
malheureusement le SI() ne fonctionne pas les boucles tourne sans arrêt ne permettant pas le projet possible, etc.
je sais exactement quels sont les fonctionnalité que je souhaite mettre en place, le projet a été longment mis en place avant de commencé à le réaliser.
en tout cas je vous remercie pour vos réponse rapide ainsi que le fait que vous vous soyez penché sur la question, vraiment merci!!!
J’espère alors si vous ne le pouvez pas qu'une autre personne le pourra
Bien à vous
Tu confirmes très exactement ce que j'ai dit ! Tout ce que peut faire ton code, même si on le nettoie, c'est ce que tu aurais dû faire manuellement une fois pour toutes en construisant ton fichier.
C'est comme si pour faire cuire un poulet tu reconstruisais à chaque fois ta cuisine et faisait livrer un four. Ou si à chaque meuble entrant chez toi tu refaisais les fondations et érigeait les murs et redisposait les cloisons !
VBA permet de faire ce que tu ne peux pas faire avec Excel, ou le faire d'une façon qui ne pourrait être utilisée manuellement.
Une macro enregistrée ne fait que reproduire tous tes mouvements pour accomplir une opération manuelle. Si l'opération mérite une macro, la moindre des choses est de l'expurger des mouvements qui sont inutiles pour le programme et d'y introduire les éléments que l'enregistreur ne fournira jamais puisque cela ne résulte pas de mouvements manuels.
Quand tu écris Select avant de faire une opération, tu dois être persuadé que tu fais une grosse erreur (tu ne fais d'ailleurs que ralentir VBA, quand tu n'introduis pas en plus des risques de dysfonctionnement), quand tu mets une formule en code ou opère une mise en forme, tu perds ton temps et tu réduis VBA à singer Excel...
Si tu opères en VBA et que tu penses formules pour faire un calcul, tu tapes à côté, si un calcul doit être fait en VBA, le faire avec des moyens VBA. Si tu penses fonction SI en écrivant du code quand une condition intervient tu penses en termes Excel, tu ne penses pas branchements conditionnels en termes VBA...
Cela ne vient sans doute pas spontanément mais tant que tu restes collé sur ton code défecteux, tu n'as aucune chance d'avancer (même si quelqu'un fait en sorte de te le faire fonctionner, même fonctionnant il n'en est pas moins mauvais). Tu obtiendrais certainement des conseils plus profitables en te concentrant sur les différents volets fonctionnels de ce que tu veux réaliser, pour recueillir des méthodes sur les meilleures façon d'y parvenir... qu'ensuite tu ne soies pas en mesure de le coder toi-même au pied levé est secondaire, tu trouveras assistance en la matière et tu acquerras progressivement de la méthode.
L'assemblage d'éléments disparates ne peut jamais permettre la mise en oeuvre d'un programme bâti sur mesure pour faire efficacement ce qu'on lui demande.
Je comprend maintenant ce que vous tentiez de me faire comprendre, le VBA ne pourra jamais réaliser ma fonction SI(), il ne permet que d’insérer le décor à la 1er utilisation. votre illustration de la cuisine et de la maison me l'on bien fait comprendre.
Mais du coup comment puis-je résoudre mon problème car les fonction liées à excel et non a VBA comme vous me l'avez clairement expliqué ne me permette pas de mettre ma formule SI() sur une ou plusieurs cellule avec la mise en forme conditionnelle.
Je vous avoue être vraiment perdu, j'ai supprimé les ligne que je vous ai envoyé comme vous me l'avez dit car cella est inutile si je ne peux rien en faire.
si j'ai bien compris il est possible d'y arriver mais pas de cette manière, s'il vous plait aiguillez moi vers une solution.
Pour ça, il faudrait que tu commences par décrire ton projet, ce qui compose ton classeur et la façon dont cela devra fonctionner.
mon projet consiste a dématerialiser les demande de badge de locataire via nos gardien afin d'optimiser le temps et éviter de gâcher du papier.
les nouvelles demande de badge peuvent ce faire soit pour une place de parking afin de rentrer dans le parking ou pour accéder a un hall d'entrer dans un batiment d'ou notre cellule B5
hors les badges pour hall demande plus de caractéristique que ce de parking c'est pour cella que la mise en forme doit changer des la sélection de B5.
pour des soucis de confidentialité j'ai été obligé de vous envoyer une partie du tableau sans toutes les feuille du classeur car des nom et adresse y figure.
le projet va se faire en trois grandes parties :
1) automatiser la mise en forme selon le choix de la cellule B5 ( hall ou parking)
2) créer une macro avec un bouton sauvegarder et effacer pour enregistrer les information dans la feuille "Liste" ( je sais deja comment faire mais ce n'est peut etre pas la méthode la plus efficace )
3) il s'agit de creer un comme une conversation si il y a des réclamations. le commentaire sera écrit en feuille 1"tableau de bord" et via le numéro de demande il copiera le texte sur la ligne comprenant le numéro de demande dans la feuille "Liste" ( pour moi ceci parait totalement compliqué voir impossible.
Je vous joint ci dessous mon fichier légèrement modifier pour des soucis de confidentialité ce qui engendre quelque erreur
Encore merci M. Ferrand
Bonne soirée à vous
Bien cordialement
Ce par quoi il faudrait commencer, c'est une description des processus de traitement de demandes de badges, de façon qu'on puisse les matérialiser pas à pas, et voir la colonne vertébrale commune à l'ensemble des demandes ainsi que les dérivations et particularités.
Le choix de type de demande au départ n'est pas un problème, c'est ce qui lance le processus, il faut les détails pour savoir comment cheminer jusqu'au bout de la façon la plus économique, et mettre en place les fonctions élémentaires qui seront activées selon les cas.
Tant que je n'ai pas assimilé dans le détail ton histoire de mise en forme différenciée, je reste réservé sur la focalisation que tu fais là-dessus. Il y a diverses façons de gérer ces variations, et si les différences sont très marquées il devient plus rationnel de recourir à des modèles...
Pour commencer à envisager la chose, il faut que je sache ce que l'utilisateur doit faire et ce qui doit en résulter dans chaque cas. Après, ce n'est pas une macro qu'il convient de faire mais autant de procédures fonctionnelles qu'il y a de fonctions à assurer, qui seront activées selon besoins par la ou les procédures principales.
(Il serait gênant d'avoir une machine à laquelle tu ne puisses changer le moindre boulon et qu'il faille changer à chaque défaillance...
Bonjour M. FERRAND,
pour répondre à votre message au mieux j'ai commenté sur le fichier excel chaque partie et ce qu'il doit ce passer dans deux feuille différentes, la feuille "parking" et la feuille "Hall", mais bien-sur il faut que ces deux feuille fusionne pour ne faire qu'une comme précédemment vu.
sur cette feuille excel vous verrez la macro d'enregistrement vers la feuille "liste", il s'agit d'une ébauche, il manque donc beaucoup d'information comme vous pourrez le constater. il s'agit s'implement de vous montrer ce que j'imagine faire, j'ai deja pré remplie il vou suffit d'appuyer sur sauvgarder.
PS: vous remarquerai que les bouton sauvgarder et nouveau son séparer mais je conte les fusionner à l'avenir
j’espère vous avoir donner toutes les informations dont vous aviez besoin pour comprendre le fonctionnement
Dans l'attente de vous lire
Bien cordialement
Bonjour bilel, Ferrand,
Hum... Ma réponse est hors sujet, juste pour signaler à Ferrand de regarder sa MP !
Merci
Bon Dimanche !
Bonjour Galopin,
Il doit y avoir un délai d'acheminement car rien encore parvenu, je surveille donc... Bon dimanche.
Bilel,
Pas le temps de regarder tes classeurs maintenant, j'espère que tu m'indiques bien ce que saisit successivement le gardien et où. Que je puisse avoir une idée globale (matérialisée dans le classeur) du déroulement de l'opération.
Bon dimanche.
Je pense avoir correctement expliqué le déroulement du projet, j’espère que cela vous satisfera.
Prenez votre temps je comprends tout à fait que vous ayez des priorités, je n'aurais moi même pas pu répondre dans la journée.
Très bon dimanche à vous
J'ai pris le temps hier soir de me pencher d'un peu plus près sur tes fichiers, et je dois dire que cela fait apparaître des choix hésitants ne permettant pas de savoir où tu veux exactement aller...
Travailler à partir d'un formulaire sur feuille est un choix qui en vaut un autre... mais pourquoi 2 feuilles, voire un 3e doublon parasite qui je pense doit disparaître, quasi identiques ? Rien ne justifie qu'il n'y ait pas qu'un seul formulaire pour Hall et Parking !
Il semble qu'on veuille opérer par listes déroulantes, OK. Mais quand on regarde le second fichier, un certain nombre de listes ont disparues. Il en est de même de formule.
C'est à clarifier.
Le rôle du tableau de bord est aussi à préciser.
Je pense que la base de données est à recomposer, car cette multitude de tableaux parcellaires ne permet pas une organisation efficace des prélèvement de données recherchées...
Mais il convient de lever une ambiguïté au départ : on a l'impression que tu constitues une base de données allant jusqu'à un tableau recensant les adresses précises de chacun des locataires sur l'ensemble de tes sites !
Ceci pour un dispositif permettant au gardien de saisir des demandes de badges, or en principe chaque gardien intervient sur un seul site, et même semble-t-il sur un seul immeuble du site. Il n'a pas à gérer l'ensemble des sites.
S'il y a des fonctions distinctes à assurer, il faudrait les distinguer clairement au départ...
L'interrogation principale porte donc sur la finalité, et éventuellement la dissociation en classeurs distincts des fonctions d'enregistrements des demandes de badges au niveau local et de gestion centrale de ces demandes.
Sur les bouts de fonctionnalités qui figurent : ton code relatif aux mise en forme et formules est à éliminer purement et simplement.
La mise en forme du formulaire ne justifie pas de VBA. Les éléments variables devraient se régler par MFC (ou si cela apparaît préférable être inclus dans le code de traitement des demandes.
Pour les formules, soit on peut mettre des formules qui sont définitives, soit on traite en VBA (traitement demande) et donc sans formule !
Il y a évidemment des sécurité de base qui manquent : ne pas pouvoir passer à la saisie d'un nouveau badge tant que la saisie en cours n'a pas été validée (ou annulée).
Bien sûr ta procédure de validation (enregistrée) est à réécrire.
Mais le code est une question secondaire (et qui sera vite réglée) tant que la finalité de ce classeur n'est pas clairement établi. Et que selon cette finalité on ait organisé en conséquence les données sous-jacentes.
Cordialement.
M FERRAND,
Merci d'avoir pris le temps de vous pencher sur la question j'ai de mon coté eut la possibilité de revoir la totalité du classeur que vous retrouverez ci dessous.
Ce classeur sera distribué à tous les gardiens c'est pourquoi je ne peux pas me permettre d'en faire un pour chaque gardien ce qui serait totalement impossible à gérer. Le but est de centraliser toutes les demandes afin que nous puissions les traiter en agence.
sur le classeur que je viens de vous envoyer j'ai réussi à faire la mise en page que je n'arrivais pas via le VBA mais il reste quelques problématiques je n'arrive pas à faire disparaitre la liste déroulente ( D24 à D28). Et en plus les couleur n'apparaissent plus car le gris est dominant sur les autres car il est rattaché à la cellule ce situant a sa gauche.
J'ai pensé qu'il était peut-être préférable d'élargir le nouveau code VBA (que je vous invite à regarder) sur ces cellules mais le probleme est qu'il peuvent encore utiliser les listes même si je suis sur la page parking.
Le tableau de bord est, je dirais, l'une des artères primordiales de ce projet car avec la partie commentaire qui constitue le suivi de la demande après envoie. c'est carrément primordial.
en ce qui concerne l'enregistrement, j'imagine que vous avez pu constater que nous avons comme l'impression que cela beugue, mais en réalité c'est juste le temps de reproduire toutes les actions réalisées. Auriez-vous une solution via VBA pour que cela ne se produise pas ou que tout se copie d'un coup ?
J'espère que l'avancement du tableau vous satisfera.
Je totalement à votre écoute pour toutes modifications permettant d'améliorer le projet.
Je vous remercie encore un fois pour l'aide que vous m'apportez
Dans l'attente de vous lire
Bien cordialement
SVP ]je suis vraiment bloqué la :/
est-il possible via VBA d'effectuer une recherche V du numéro de demande dans la fueille "Liste" colonne A. puis après avoir effectuer cette recherche dans cette même feuille "liste" ce placer sur la colonne U insérer une nouvelle colonne puis coller le texte ce situant en feuille 1. pour qu'a chaque fois qu'un nouveau texte est écrit et enregistré il n'écrase pas l'ancien.
Donc si je reprend l'idée;
RechercheV dee la cellule C18(feuille 1) dans la colonne A (feuille 2) => créer une nouvelle colonne U => coller cellule (D22 ; D20; D18 et AB19;22)
possible ?
Désolé, pas eu le temps aujourd'hui de regarder ton fichier modifié, des imprévus !
Mais sans rien regarder, on n'a pas besoin de RECHERCHEV en VBA, ni de faire autant de manipulations pour ne rien écraser...
Pas de soucis je comprends
Impatient de voir votre solution
a très bientôt
M.FERRAND, bonjour
Tout d'abord merxi du temos que vous avez passé a me repondre !
Je vous ecris pour vous dire que j'ai fini la totalité de mon projet .
Les macros son un peu long a faire avec les copie colle mais bon c'estddéjà pas ma.
Si jamais vous avez n'importe quelle idées je suis preneur bien sûr
Encore merci bonne journée a vous