Macro, créer des carrés de certaines tailles automatiquement
Bonjour.
J'aimerai, pour l'implantation de machine dans un atelier,
créer automatiquement des rectangles (ou carrés) avec à l'intérieur de ceux-ci, des données...
La taille des rectangles seraient définis suivant le nom de la machine, dans une base de données.
En exemple sur le fichier ci-joint :
Je rentre à coté de nom de machine, TC1600 - 4M
ainsi que un N° de série, etc.
Apparait après exécution du macro un carré de 1500 de longueur et de 500 de largeur (je donne les tailles réelles, mais vous pouvez réduire à quelques cm sur l'écran (je m'occuperais de rendre ça proportionnelle ensuite)
Avec dans le carré, le nom de machine, et les indications types : nom machine e N° série.
Je travail avec excel 2003
Merci !
- Messages
- 1'794
- Excel
- 2010
- Inscrit
- 25/08/2014
- Emploi
- Consultant VB6 / SQL / VBA / Excel / Access
Bonsoir,
Ci-joint un début de proposition, à tester.
Fait sous 2010 ...
Bonne soirée
Bouben
Bonjour et merci beaucoup Banzai64
Je renvois ci-joint votre fichier excel avec 2,3 modifs. Notamment la liste complète des machines (dans la feuille "BdD machine"), une légère modification des noms de feuilles. (au passage la cellule coef est très bien
- Maintenant, en appuyant sur le bouton "création" j'aimerai que l'élément de la colonne "sens" se rajoute aux restes des éléments qui s'afficheront, mais cette fois, j'aimerai que les textes du genre "client :" ou "N° série" ne s'affiche pas (exception pour le "N°" devant le N° de commande en rouge)
- Je voudrais que ne s'affiche, en appuyant sur le bouton "création" que les lignes qui sont renseignés dans la feuille "listes" par une machine (histoire d'éviter d'avoir 100 carré qui s'affiche d'un coup
- Il y aura de très grands carrés, ainsi que des plus petits, certains de ces petits carrés ne pourront pas afficher tous le texte demandé, pourrait-il avoir un ajustement automatique suivant la taille du carré ? (ou par catégorie, si c'est plus simple pour vous ?, les carrés en dessous de 1000 aurait un texte en 8, et ceux au dessus de 1000 en 12 par exemple.)
- Actuellement, en appuyant sur création une seconde fois, tous les anciens carrés s'effacent, peut-on faire en sorte que les carrés affichés ne se réinitialisent pas ? (Si vous n'y arrivez pas, c'est pas grave, je me contenterai d'un copié, collé sur une autre feuille
Merci du coup de main !
PS: Et merci bouben, malheureusement j'ai chez moi un message d'erreur. =S
Bonjour
ValentinF a écrit :c'est presque ça
Moyennement plaisir : Cela veut dire que je me suis trompé en traitant ta demande
ValentinF a écrit :que les lignes qui sont renseignés dans la feuille "listes"
C'est ce qui se passe, la macro ne sait pas lire des données vides
Dans l'exemple que tu as laissé dans la page c'est le numéro de série qui est en rouge mais dans le texte tu parles du numéro de contrat (moi j'ai mis le numéro de contrat en rouge)
ValentinF a écrit :tous les anciens carrés s'effacent
Normal, car ils ont un numéro unique et que faire si une erreur dans les caractéristiques d'une machine qui est déjà dessinée ?
Si tu y tiens vraiment j'essaierai de trouver une astuce (pour le moment pas d'idée)
Mais explique moi pourquoi tu as besoin de ne pas effacer les anciennes formes ?
En attendant à tester
Re-bonjour.
Pour le "presque ça", je voulais dire que c'était très très bien, mais que je souhaitais vous redemander de l'aide car j'avais besoin d'aller encore plus loin. (j'aime bien poser mes problèmes petit à petit, mais j'ai peut-être tord).
Désole si je vous ai vexé, ce n'était nullement mon attention, bien au contraire !
A l'heure actuelle, je dirai que c'est "presque parfait"
Pour l'écriture en rouge, ce que vous avez fait est pile ce qu'il me faut.
Pour le point sur les carrés qui se réinitialisent à chaque fois et qui pose problème, je vous explique :
Ses carrés (qui représente des machines en cours de fabrication, et qui resterais environ 2 semaines sur le tableau) vont être placé sur une image de fond que je mettrai sur Excel représentant un atelier vue de haut. Il m'arrivera le lundi de créer, par exemple, 2 carrés, le mardi 3 carrés, le mercredi aucun, le jeudi un certain nombre, etc...
J'aimerai donc, si je créés de nouveaux carrés, éviter de devoir replacer les anciens carrés qui auront été réinitialiser de nouveau.
Après, je peux contourner le problème en fessant un copié collé vers une autre page, mais sélectionner chacun des carrés pourra selon les cas, s'avérer un peu long (et le but de ce tableau, est bien de gagner du temps
Merci infiniment !
Bonjour
Les formes anciennes ne sont plus effacées
A tester
Bonsoir.
C'est parfait !
J'ai testé quelque combinaisons, la première parfois ça me mettait un message d'erreur (j'avais créés plusieurs carré, tout supprimés, puis recréés, etc.), j'ai restesté par la suite de la même manière, et ça fonctionnait parfaitement. Bizzare, mais ça fonctionne bien pour le moment, donc rien à changer. (Peut-être un bug la première fois ?
Je vais rajouter ma partie perso, montrer ça aux personnes qui utiliserons le tableau (histoire de recueillir leur derniers avis), puis je posterai le tableau (pour ceux chercheront la manière de faire cela dans la futur).
Je vais aussi essayer de comprendre seul le codage, puis je reviendrai reposter après (demain dans la matinée) demander quelque éclaircissement.
Et je n'oublierai pas le petit
Bonjour.
Ça marche très bien.
Ci-joint mon Excel avec quelques modifs sur le macro :
A la ligne : .Name = "Machine " & Format(NbMachine, "000000000000000000000000")
J'ai rajouté quelques zéros, en effet, au bout d'un certains nombres de test, l'erreur "70" s'affichait, probablement du au fait que chaque machine à un numéro dédié, et donc qu'au bout d'un moment la limite soit atteinte.
J'ai aussi rajouté, suivant la taille du carré en largeur, des tailles d'écriture correspondante. (et non plus suivant la longueur de la machine, mais suivant la largeur)
J'ai rajouté le plan de l'atelier, vue du dessus.
Et le coef dans la feuille "liste" est maintenant de 1,79% (l'affichage à l'unité me convint)
J'aimerai cependant, changer quelques choses,
- Je voudrais que tout le texte qui s'affiche dans les carrés soit en gras.
- Je voudrais que finalement dans le carré, ce soit le numéro de série qui soit en rouge (l'avant dernière ligne)
- Je voudrais que le numéro de commande soit en écriture blanche, surligné noir (la dernière ligne) (tjrs dans le carré)
Est-il possible, suivant la taille du carré (ceux inférieur à 1500 en largeur), que ne s'affiche seulement les "nom machines", "N° de série" et "N° de commande" ? (En effet, afficher aussi le "nom du client" et le "sens", rend le tout trop petit pour être lisible
Si ce n'est pas possible, peut-être afficher en premier, le "nom machine", "le N° série", le "N° commande", puis le "client" et le "sens" dans les 2 dernières lignes, ces 2 dernières seront cachées par la taille du carré, mais cela correspondrait à la demande.
Merci bien !
Bonjour
Il ne devrait pas y avoir d'erreur parce que justement chaque forme a un nom unique
Au prochain problème il faut impérativement connaitre la valeur de NbMachine et regarder dans la page si une forme ayant ce nom (Machine 058) dans le cas ou NbMachine = 58
ValentinF a écrit :Je voudrais que le numéro de commande soit en écriture blanche, surligné noir (la dernière ligne) (tjrs dans le carré)
Heuuuu écriture blanche sur fond blanc pas glop non ?
Le reste à tester/vérifier
Merci, je vais regarder ça !
Si c'est "SURLIGNER" noir sur écriture blanche. Sa devrait être visible.
C'est comme recréer un carré noir avec cette fois une écriture blanche !
si c'est "SOUSligner" noir sur écriture blanche, là oui, c'est pas super utile
Du coup c'est parfait. Il faudrait juste SURLIGNER la dernière ligne dans les carrés, plutot que les SOUSLIGNER.
Et je ne comprends pas très bien ce que vous voulez dire
Au prochain problème il faut impérativement connaitre la valeur de NbMachine et regarder dans la page si une forme ayant ce nom (Machine 058) dans le cas ou NbMachine = 58
Si une erreur survint, il faudrait que je regarde dans la page si une forme aurait le nom de l'erreur ? Où pourrais-je la voir ? Dans le macro ?
Et pour (dans le macro) :
With F1.Shapes.AddShape(msoShapeRectangle, PosX, PosY, Longueur * Coeff, Largeur * Coeff)
' Il ne devrait pas avoir de souci : Permet de formater les nombres inférieurs à 100 sur 3 chiffres
La formule réinitialise les noms données à chaque carrés créer, c'est cela ? Mais du coup, s'il réinitialise, il devrait redonner le même nom, non ?
EDIT : Je viens de me rendre compte d'un truc... C'est impossible de surligner un texte sur Excel 2003 ? (contrairement aux versions plus récente ?)
Bonjour
ValentinF a écrit :Il faudrait juste SURLIGNER la dernière ligne dans les carré
Je ne sais pas faire, même en manuel
Fournis un fichier avec ce que tu veux
Quand tu as l'erreur ---> débogage
Place le pointeur de souris sur NbMachine --> Tu devrais obtenir la valeur de cette variable
Ensuite tu dois chercher dans la page si une forme a cette valeur
Cela expliquerait l'erreur mais pas le pourquoi de l'erreur
Il me faudrait le fichier en cause
Ensuite pour le déroulement de la macro
Elle compte le nombre de formes ayant comme début de nom "Machine" et numérote la prochaine forme en rajoutant 1 au nombre qu'elle a trouvée
Normalement il ne devrait pas y avoir de conflit, j'ai dit normalement
Bonjour.
Ci-joint le tableau Excel avec ce que je souhaiterai lorsque je parle de "surlignage", actuellement, c'est un carré avec un fond noir qui est placé, mais je sais que sur Word il est possible d'utilisé la fonction "surlignage", mais peut-être est-il impossible de l'utilise sur Excel. Après, créer un carré noir en plus du carré normal avec à l'intérieur le N° commande en blanc, ça risque d'être compliqué peut-être ?
J'ai aussi retrouvé comment créer l'erreur "70" dont je parlais précédemment (elle est présente sur l'Excel joint).
Voici les étapes de la création d'erreur.
1 Lancez la création, avec le bouton "création"
2 Modifié une des lignes déjà existante dans "listes" (en modifiiant, le n° série, nom client, etc.)
3 Lancez de nouveau la création
4 Que je supprime le carré qui à été "modifié" dans l'étape 2.
5 Lancez de nouveau la création. POUF ! Erreur...
C'est bizzare, comme erreur
En bref, si je créer des machines le lundi, que j'en créer d'autres le mardi, que le mercredi je supprime les machines du lundi et que j'en créer de nouvelles, ça me met l'erreur 70.
Je vais peut-être être obligé de contourner l'erreur en copiant collant sur une autre feuille ?
EDIT (16:05)
J'ai l'impression que l'erreur "70" n'apparait pas, si je ne surprime pas les premiers carrés créés, même si je fais l'étape de création d'erreur avec les carrés suivant (tout en gardant les premiers carrés)
Bonjour
C'est bon j'ai compris d'où provenait l'erreur
Exemple : Création de 4 formes (1,2,3 et 4)
Suppression de la forme 3 --> reste 3 formes la 1, la 2 and the 4 (tu suis
Au lancement de la macro, celle ci compte les formes ("Machine ..") et en trouve 3
Donc la prochaine aura comme numéro 4 et badaboum ---> Plantage
Correction dans ce code
Pour une forme supplémentaire à placer dans la forme va être compliqué à faire
Faut y réfléchir
Bonjour, et merci, il ne "reste plus qu'à" peaufiner les détails
Ci-joint, l'Excel avec JUSTE une mise à jour de la liste de machines
J'aurais une dernière demande (j'espère !
Lors de la saisie dans la feuille "liste" du nom de la machine dans la colonne "Nom machine"
Je voudrais, à défaut d'avoir une liste déroulante qui serait bien trop grande.
Une "aide à la saisie automatique." (Le problème c'est que l'ont ne connait pas par cœur le nom complet des machines.)
Par exemple, lorsque l'on a déjà dans une colonne un texte ou un chiffre, et que l'on commençait à écrire la même chose dans l'une des lignes en dessous, il me propose de réécrire la même chose.
Peut-être en rajoutant des lignes avec le noms des machines dans "Liste" et en les cachant par la suite ? (Dans ce cas, il faudrait changer la sélection dans le code du macro)
Ce qui me pose problème avec la solution plus haute, c'est qu'il ne propose de réécrire la même chose, que si UN élément y ressemble.
j'aimerais que dès que j'écris "T" Il me propose toutes les machines commencent par "T", si je continue et écrit "TR", il me propose toutes les machines commencent par "TR".
J’espère que c'est clair !
Merci.
PS : Oui je crois avoir compris le problème sur la création de carré (je crois
Super, merci, j'ai même appris une nouvelle fonction.
J'ai une toute dernière demande (si si, je le jure).
Pourrait-on créer 2 coeff dans "liste", l'un pour la longueur, et l'autre pour la largeur au lieu d'un seul pour les 2 axes ?
Merci !
Edit du post : Finalement j'ai rien dit, c'est pas fini
Rebonjour
J'aimerai savoir si la chose suivante est possible :
En bas du tableau, il a différentes cases pour différentes catégories :
"Machines affectés" , "Prochaine Arrivée de Machine", "Attente Expéditions" et "Montage mécanique en cours" ( le N° commande SAP n'est pas important)
Je voudrais, après sélection de un ou plusieurs carrés, précédemment créés avec le bouton "création", pouvoir, en cliquant sur les carrés de couleur des catégories (en créant de nouveaux boutons par exemple), changer le fond du carré avec la couleur correspondante sur laquelle j'aurais cliqué.
En bref, je sélectionne un carré, je clique sur l'un des boutons correspondants à l'une des catégories (le bouton placé, bien evidemment juste à coté de sa désignation), et le carré prend en couleur de fond (et en couleur de cadre) celle de la catégorie sélectionnée.
Ci-joint la dernière version du tableau !
Merci !