VBA, création d'un nouveau tableau

Résolu/Fermé
Maksime568 Messages postés 144 Date d'inscription mardi 15 avril 2014 Statut Membre Dernière intervention 28 novembre 2022 - 15 oct. 2014 à 06:52
Maksime568 Messages postés 144 Date d'inscription mardi 15 avril 2014 Statut Membre Dernière intervention 28 novembre 2022 - 21 oct. 2014 à 13:42
Bonjour,

Je souhaite traiter des données en imprimant des fiches que des personnes viennent traiter manuellement derrière.

Mais chaque jour je doit créer de nouvelles fiches en ne changeant que quelques données et en agrandissant ou réduisant la série de données.

Voir le lien: http://cjoint.com/data/0JpgTGAPtfr.htm

Dans ce tableau les lignes 1 à 9 sont fixes et ne changent jamais.
les colonnes A, B et C sont les colonnes à valeurs modifiables.

la colonne A commence toujours par 1 mais peut varier, un jour 20 l'autre 40.
La colonne B est toujours dans le même ordre: emp1, emp2, emp3, emp4, emp1, emp2 ....
la colonne C est toujours incrémentée de 1 mais sa valeur change à chaque fiche.

la cellule D1 doit contenir une valeur que j'indique qui correspond à une date au format YYWWD.

Je souhaiterais avoir la possibilité de faire un bouton "nouvelle fiche" ouvrant une boite de dialogue me demandant:
- N° FIP (la case D1)
- Nombre de pièces (si 160 pièces cela me fera 80 "moulées" dans la colonne A)
- N° de la première pièce (afin de connaitre mon numéro de départ de la colonne C qui sera à incrémenter d'autant de pièces inscrites précédemment)

Je souhaiterais également, si possible, que la mise en forme du tableau (entourage des cellule) augmente ou rétrécise selon la taille de l'échantillon, afin de ne pas imprimer des cellules vides.

Suis-je clair dans ma demande?

Merci par avance

Maxime

A voir également:

2 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
15 oct. 2014 à 11:35
Bonjour,

à tester : https://www.cjoint.com/c/DJplM5YlUpA
Cliquer sur 'Créer'

eric
1
Maksime568 Messages postés 144 Date d'inscription mardi 15 avril 2014 Statut Membre Dernière intervention 28 novembre 2022
15 oct. 2014 à 12:00
Bonjour Eriiic et merci,

le principe est correct mais je trouve une erreur.
le copier/coller fonctionne bien mais il y a un petit bug sur la dernière ligne.
la ligne 13 est mal copiée et il manque la valeur de la colonne B.

Ton code VBA est trop complexe pour moi je n'ai pas réussi à trouver l'origine du problème.

Hormis ce défaut c'est parfait et exactement ce que je recherche.

Autre question, si jamais quelqu'un ordonne une nouvelle série mais sauvegarde la feuille, je vais avoir un problème lors de la création d'une nouvelle série non?
est-ce possible de bloquer ça?

Autre point, est-ce possible de me décrire dans les pages de code la correspondance des codes?
J'en comprend certains mais pas tous, et je vais avoir besoin de retranscrire cette programmation à un autre classeur légèrement différent en nombre de données.
Ça me permettrait de le refaire moi-même sans devoir les reposter ici car au total j'ai une dizaine de classeur dans le genre.

Merci beaucoup
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
15 oct. 2014 à 12:36
Rien de grave, juste un test à ajouter pour le nettoyage de la feuille. Je l'ai mis en dernière minute sans vraiment tester.
Ajouter ce qui est en gras :
If derlig > 14 Then Rows("14:" & derlig).Delete

je vais avoir un problème lors de la création d'une nouvelle série non?
Revient en expliquant quand tu auras un cas précis.
Tu peux aussi enregistrer ta feuille en modèle (*xltm), ta feuille originale sera toujours préservée.

Te décrire le code...
Là il n'y a que des fonctions basiques qui parlent d'elles-même.
Utilise déjà F1 (l'aide), et fait en pas à pas avec F8 pour voir les actions faites au fur et à mesure si un passage t'échappe.
Sinon pose une question précise.
eric
0
Maksime568 Messages postés 144 Date d'inscription mardi 15 avril 2014 Statut Membre Dernière intervention 28 novembre 2022
15 oct. 2014 à 18:37
Ça fonctionne, autre petite chose,
si j'entre 8 pièces il y a création de 16 nouvelles lignes.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 15/10/2014 à 19:02
oui, c'est ce que tu as demandé :
- Nombre de pièces (si 160 pièces cela me fera 80 "moulées" dans la colonne A)
Donc 8 pièces = 4 moulées = 4*4 lignes...

Si tu veux autre chose (comme tu ne dis pas ce que tu veux...) joue là dessus :
derlig = Application.RoundUp(CLng(TbxNb) / 2, 0) * 4 + 9
eric
0
Maksime568 Messages postés 144 Date d'inscription mardi 15 avril 2014 Statut Membre Dernière intervention 28 novembre 2022
16 oct. 2014 à 08:05
Houlà, il y a bien erreur mais de ma part.
1 moulée = 4 pièces donc 160 pièces = 40 moulées.
Je te prie de m'excuser

Pour ce qui est de la question sur un problème lié à la création d'un nouvelle série.
Pas de problème, j'avais déjà travailler sur un fichier excel avec création de nouvelle cellules comme toi mais ta fonction de nettoyage est parfaite alors que celle que j'avais utilisée auparavant n'était pas aussi bien faite.
Merci
0
Maksime568 Messages postés 144 Date d'inscription mardi 15 avril 2014 Statut Membre Dernière intervention 28 novembre 2022
16 oct. 2014 à 08:21
J'ai réussi à modifier pour faire en sorte que 1 moulée = 4 pièces.

Merci beaucoup Eric vraiment ça m'aide énormément.
Je vais essayer de le retranscrire sur mes autres classeurs excel.
0