Formulaire de commande Base de données

Bonjour a vous

J'ai besoin d'aide pour realiser un formualire de bon de commande un peu complexe (a mon gout)

Je travaille dans l'immobilier et j'ai 65 affaires (en cours, a venir ou terminée). J'en rajoute a peu pres 10 par an.

J'aimerais que lorsque je passe une commande, a celle ci soit attribué un numero unique (commencant toujours par le numero d'affaire, type 3.18- et finissant pas un chiffre a 3 unités). Les chiffres doivent se suivre et jamais sauter (on passe pas de 1 a 7).

Je vous joins un fichier qui vous permettra (je l'espere) de mieux comprendre.

Merci de votre aide.

Bonsoir

Je te conseille de commencer par structurer des feuilles, tes tables et enfin tes données.

  • Tes feuilles, car Feuil1, Feuil2 ne veulent pas dire grand chose, il serait plus simple et plus compréhensible pour nous qui souhaitons t'aider de ne pas passer trop de temps pour comprendre ton besoin et pour te répondre.
  • Tes tables, car généralement elles sont constituées en ligne 1 d'une entête brève style "Code Client", "Nom", "Adresse"... et à partir de la ligne 2 des données sans lignes vides.
  • Tes données, car il me semble que les codes clients sont des nombres avec une virgule comme séparateur de décimales alors que les numéros de commande sont des nombres séparé avec le point comme séparateur de décimale puis séparé du numéro de commande par un tiret.

Abstraction de ce que je viens de te dire, d'après ce que je comprends il y a une incrémentation du numéro de commande par client. Si c'est le cas, il me semble souhaitable de stocker à chaque validation de commande son numéro dans la table clients pour le client (l'affaire) concerné. Ainsi pour une nouvelle commande pour le client 1,17, par exemple, il suffit de lire sa fiche, récupérer son nom et son adresse si besoin ainsi que son dernier numéro de commande auquel on ajoute 1 pour la nouvelle commande. En principe, dans la codification de client, article... on utilise plutôt une codification (alfa, numérique ou alphanumérique) mais toujours de longueur fixe sans décimale. Ceci dit, je respecte ton choix.

Quand on valide la commande on vient à nouveau stocker le numéro de commande dans sa fiche et on met le portefeuille de commande à jour.

Concernant la feuille "Feuil1" que je pense être un portefeuille de commande, même si cela ressemble plus à un résumé. Il ne me semble pas concevable, ni nécessaire, de stocker les commandes d'un même client les une derrière les autres car cela fait des lignes de codes pour ne rien apporter de plus. Soit on fait par la suite des tris du portefeuille, soit on utilise un TCD. De plus les clients qui n'ont pas encore de commande n'ont pas besoin d'être dans cette feuille.

Pour finir, je te conseille d'enregistrer la commande toujours après la dernière commande reçue, donc sur la première ligne vide de "Feuil1" sans te préoccuper d'un quelconque ordre.

En conclusion, je veux bien te faire un bout de code pour réponde à ta question mais sans me prendre la tête à faire des boucles pour placer parfaitement une nouvelle commande entre la dernière commande du client Trucmuche et avant du client Dupont, car cela ne me rapporte que du temps perdu pour un résultat qui ne me satisfera pas.

Ceci dit, j'en fais un peu trop, tu souhaite simplement que l'on t'aide pour l'incrémentation des numéros de commandes ?

A+

Benead

Bonjour

Merci pour ta reponse tres explicite. Je vais inserer mes reponses en couleur dans ton texte.

Bonsoir

Je te conseille de commencer par structurer des feuilles, tes tables et enfin tes données.

- Tes feuilles, car Feuil1, Feuil2 ne veulent pas dire grand chose, il serait plus simple et plus compréhensible pour nous qui souhaitons t'aider de ne pas passer trop de temps pour comprendre ton besoin et pour te répondre.

Il me semblait avoir ete clair dans mes annotations (mais si tu n'as pas compris, c'est que ca ne devrait pas etre le cas). La Feuill1, c'est un resumé des commandes, la feuill2 est une base de données qui permet lorsqu'on saisi un numero client sur le bon de commande apparaisse son nom dans la case du dessous toujours sur la feuiille de commande)

- Tes tables, car généralement elles sont constituées en ligne 1 d'une entête brève style "Code Client", "Nom", "Adresse"... et à partir de la ligne 2 des données sans lignes vides.

C'est le cas non ?

- Tes données, car il me semble que les codes clients sont des nombres avec une virgule comme séparateur de décimales alors que les numéros de commande sont des nombres séparé avec le point comme séparateur de décimale puis séparé du numéro de commande par un tiret.

En fait le numero de client est constitué de 2 chiffres separés par un point (le premier de 1 a 3 correspond a de la promotion, ou de la construction, ou de la gestion locative, et le deuxieme correspond au numero de l'affaire. 1.11 correspont a la 11eme affaire de promotion) Ensuite on met un tiret pour mettre le numero de commande (un chiffre a 3 unités)

Abstraction de ce que je viens de te dire, d'après ce que je comprends il y a une incrémentation du numéro de commande par client OUI. Si c'est le cas, il me semble souhaitable de stocker à chaque validation de commande son numéro dans la table clients pour le client (l'affaire) concerné. Ainsi pour une nouvelle commande pour le client 1,17, par exemple, il suffit de lire sa fiche, récupérer son nom et son adresse si besoin ainsi que son dernier numéro de commande auquel on ajoute 1 pour la nouvelle commande.Le probleme c'est que tout le monde n'a pas acces a cette partie du serveur ou sont stockés ces données. Le but est de mettre ce formulaire vierge que chacun pioche pour le remplir, et c'est moi qui apres les classes sur le serveur. En principe, dans la codification de client, article... on utilise plutôt une codification (alfa, numérique ou alphanumérique) mais toujours de longueur fixe sans décimale. Ceci dit, je respecte ton choix. Ce n'est pas mon choix, mais celui de ma direction

Quand on valide la commande on vient à nouveau stocker le numéro de commande dans sa fiche et on met le portefeuille de commande à jour.

Concernant la feuille "Feuil1" que je pense être un portefeuille de commande, même si cela ressemble plus à un résumé. Il ne me semble pas concevable, ni nécessaire, de stocker les commandes d'un même client les une derrière les autres car cela fait des lignes de codes pour ne rien apporter de plus. Soit on fait par la suite des tris du portefeuille, soit on utilise un TCD. De plus les clients qui n'ont pas encore de commande n'ont pas besoin d'être dans cette feuille.

Pour finir, je te conseille d'enregistrer la commande toujours après la dernière commande reçue, donc sur la première ligne vide de "Feuil1" sans te préoccuper d'un quelconque ordre.

En conclusion, je veux bien te faire un bout de code pour réponde à ta question mais sans me prendre la tête à faire des boucles pour placer parfaitement une nouvelle commande entre la dernière commande du client Trucmuche et avant du client Dupont, car cela ne me rapporte que du temps perdu pour un résultat qui ne me satisfera pas.

Ceci dit, j'en fais un peu trop, tu souhaite simplement que l'on t'aide pour l'incrémentation des numéros de commandes ?

Je pense que tu as tout a fait cerné ce que je veux, mais avec tes explications je comprend que mon souhait est difficilement realisable. Le plus simple serait pas de faire un lien entre ACCESS et EXCEL pour gerer ca ?

Bonsoir,

Je vais préciser ma réponse : si Feuil1 est un résumé des commandes et Feuil2 les clients, pourquoi ne pas les nommées ainsi ? Ce serait tellement plus simple pour celui qui prend du temps pour t'aider.

Concernant les tables, non ce n'est pas le cas, dans les deux feuilles (1 et 2) les premières lignes sont des lignes vides. Si je te dis cela, ce n'est pas forcément anecdotique, c'est que si on veut faire un petit programme pour rechercher les clients ou des commandes, c'est tellement plus simple quand les entêtes sont en ligne 1 et qu'il n'y a aucune ligne de données vide, cela dans un but de simplification de code mais également de l'optimisation de son exécution.

Autre point que je n'avais pas vu, la feuille "Facture" c'est une facture ou un bon de commande ?

Concernant les codes clients, si tu les sépares par des points, pourquoi la majorité des codes ont des virgules comme séparateurs ? De plus certains ont un code avec plusieurs 9 en décimales, c'est le cas de la ligne 31 de la feuil2 : 1,35999999999999. Pour faire des recherches de code client, c'est mort. Il est préférable de passer la colonne du code client en format texte, ce sera plus simple pour les recherches et les erreurs seront tout de suite visibles.

Tu dis que les personnes qui font les bons de commandes n'ont pas accès à ce répertoire. Cela veut dire qu'elles créent des commandes ou factures sans que celles ci aient un numéro ? C'est donc toi qui fait cette numérotation au retour des commandes/factures ?

Quand tu parles de formulaire vierge, le contenu de ce classeur est le bon de commande/facture et de la table clients ? Tu n'envoies pas le résumé de commande quand même ? Sinon je ne comprend plus rien...

Si on fait deux bons de commande/factures pour un même client, il y a un ou deux classeurs ?

Toutes les personnes ont accès a la même partie du serveur ? Si oui pourquoi ne pas tout mettre à cet endroit ? Question de sécurité ?

A la fin, tu parles d'Access, pourquoi ? Toutes les personnes ont Access ? Si tu fais une base Access, tu devras la mettre sur la partie du serveur qui est accessible à tous. Cela pourrait être intéressant effectivement, mais il ne me semble pas aussi simple de créer un bon de commande ou facture avec Access qu'avec Excel à moins de bien maitriser cet outil, par exemple ton problème d'incrémentation de commande est plus compliqué (mais pas impossible) à mettre en place avec Access qu'avec Excel.

A+

Benead

Bonsoir

Je remet mes reponses en gras

Bonsoir,

Je vais préciser ma réponse : si Feuil1 est un résumé des commandes et Feuil2 les clients, pourquoi ne pas les nommées ainsi ? Ce serait tellement plus simple pour celui qui prend du temps pour t'aider. Ok, je prend note et m'en excuse

Concernant les tables, non ce n'est pas le cas, dans les deux feuilles (1 et 2) les premières lignes sont des lignes vides. Ok vu. En fait c'est purement esthetique Si je te dis cela, ce n'est pas forcément anecdotique, c'est que si on veut faire un petit programme pour rechercher les clients ou des commandes, c'est tellement plus simple quand les entêtes sont en ligne 1 et qu'il n'y a aucune ligne de données vide, cela dans un but de simplification de code mais également de l'optimisation de son exécution.

Autre point que je n'avais pas vu, la feuille "Facture" c'est une facture ou un bon de commande ?C'est une commande. Mauvais intitulé. Excuse moi, je suis vraiment mauvais ...

Concernant les codes clients, si tu les sépares par des points, pourquoi la majorité des codes ont des virgules comme séparateurs ? De plus certains ont un code avec plusieurs 9 en décimales, c'est le cas de la ligne 31 de la feuil2 : 1,35999999999999. Pour faire des recherches de code client, c'est mort. Il est préférable de passer la colonne du code client en format texte, ce sera plus simple pour les recherches et les erreurs seront tout de suite visibles. Je ne comprend pas, j'ai simplement ecris 1.10 et 1.11, je les ai selectionnés puis etirés pour continuer la numerotation. C'est une erreur d'excel qui a mal compris ma demande. Les numero d'affaire sont toujours separés par des points, c'est comme ca que l'on les nommes dans la societé.

Tu dis que les personnes qui font les bons de commandes n'ont pas accès à ce répertoire. Cela veut dire qu'elles créent des commandes ou factures sans que celles ci aient un numéro ? C'est donc toi qui fait cette numérotation au retour des commandes/factures ?

En fait, il y a le formulaire vide sur un repertoire commun. La personne l'ouvre, passe sa commande et l'enregistre sous un autre nom dans ce meme repertoire. Ensuite je viens faire le menage. C'est compliqué, mais malheureusement c'est la procedure.

Quand tu parles de formulaire vierge, le contenu de ce classeur est le bon de commande/facture et de la table clients ? Tu n'envoies pas le résumé de commande quand même ? Sinon je ne comprend plus rien...

Non, je n'envoie pas le resumé. N'est imprimé que la premiere page

Si on fait deux bons de commande/factures pour un même client, il y a un ou deux classeurs ? Je ne m'occupe pas de la facturation, c'est la compta qui gere

Toutes les personnes ont accès a la même partie du serveur ? Si oui pourquoi ne pas tout mettre à cet endroit ? Question de sécurité ? Il est sur la partie commune, mais pas les enregistrement (oui peut etre la securité ...)

A la fin, tu parles d'Access, pourquoi ? Toutes les personnes ont Access ? Si tu fais une base Access, tu devras la mettre sur la partie du serveur qui est accessible à tous. Cela pourrait être intéressant effectivement, mais il ne me semble pas aussi simple de créer un bon de commande ou facture avec Access qu'avec Excel à moins de bien maitriser cet outil, par exemple ton problème d'incrémentation de commande est plus compliqué (mais pas impossible) à mettre en place avec Access qu'avec Excel.

Ok, donc on laisse tomber Access

Merci

A+

Benead

Bon, apres analyse, j'arrive a la conclusion suivante:

Je vais faire 2 fichiers separés. Un pour passer ma commande, et l'autre qui sera un resumé des commandes.

Lors de la saisie du numero de commande sur le fichier "commande", il y aura un lien dans cette case qui ira verifier dans le tableau "resumé" si le numero n'a pas deja ete attribué. Est ce plus simple comme ca ?

Alors par contre, il faut que le format de la cellule dans laquelle je vais saisir mon numero de commande soit sous le format x.xx-xxx.

C'est gerable ?

Bonsoir,

Je n'arrive pas à comprendre votre mode de fonctionnement. Pour moi, cela ne peut pas fonctionner :

Si, par exemple, une personne fait le même jour deux bons de commande à partir du même formulaire pour le même client, et que cette personne saisie deux fois la même référence de commande, elle aura deux fois le même numéro, car elle aura utilisée le même modèle... Non ?

Sinon, il y a peut être une solution à condition que toutes les personnes peuvent avoir accès à un même dossier partagé sur le serveur. Idéalement ce partage ne leur sera pas disponible via une lettre disque réseau (R:\...). cela te permettra de stocker le compteur de commandes par client dans un fichier ini et éventuellement un autre fichier (log, ou csv...) pour tracer les résumés de commandes....

A partir ou ton modèle est éclaté en une multitude de fichiers xls, se pourrait être une bonne alternative.

A+

Benead

Bonsoir,

Je n'arrive pas à comprendre votre mode de fonctionnement. Pour moi, cela ne peut pas fonctionner :

Si, par exemple, une personne fait le même jour deux bons de commande à partir du même formulaire pour le même client, et que cette personne saisie deux fois la même référence de commande, elle aura deux fois le même numéro, car elle aura utilisée le même modèle... Non ? Non, justement c'est là le but de la manoeuvre. Il faut qu'a chaque commande sur telle ou telle affaire, apparaisse un nouveau numero de commande. Si le lundi je passe une commande sur le dossier 1.12, je dois voir apparaitre par exemple en numero de commande 1.12-100. Je passe ma commande, et enregistre une copie sur le serveur dans le dossier de l'affaire 1.12. Si l'apres midi je dois repasser une commande, je reprend mon fichier appellé "commande". Je tape comme affaire 1.12, là apparait comme numero de commande 1.12-101, et du coup meme procedure qu'avant, j'enregistre une copie sous le repertoire de l'affaire 1.12.

Sinon, il y a peut être une solution à condition que toutes les personnes peuvent avoir accès à un même dossier partagé sur le serveur C'est le cas pour le fichier "commande" qui doit etre le formulaire de base, mais il faut ne jamais pouvoir l'ecraser. Je m'explique: si je prend ce formulaire, passe ma commande, je ne dois pas pouvoir l'enregistrer en gardant le nom de fichier initial (a savoir "bon de commande", mais je dois obligatoirement l'enregistrer dans un autre repertoire.. Idéalement ce partage ne leur sera pas disponible via une lettre disque réseau (R:\...). cela te permettra de stocker le compteur de commandes par client dans un fichier ini et éventuellement un autre fichier (log, ou csv...) pour tracer les résumés de commandes.... Là ca devient compliqué pour moi

A partir ou ton modèle est éclaté en une multitude de fichiers xls, se pourrait être une bonne alternative. On peux le gerer comme ca

Bonsoir,

Concernant le modèle de commande, pour ne plus avoir de problème d'écrasement, il faut l'enregistrer en tant que modèle, cad xlt ou xltx en fonction des versions.

Cela te dis te tenter l'enregistrement de commande dans un fichier ini ? C'est pas très compliqué, je te ferais le programme avec quelques explications sur le fonctionnement et tu l'adapteras en fonction de ton besoin. Par contre je ne prend pas en charge le résumé tel qu'il existe aujourd'hui, je te mets à jour un fichier csv que tu pourras synthétisé via une connexion query ou TCD.

Ok ?

Je re-précise bien, tous les utilisateurs doivent avoir accès à une partie identique du serveur, pas d'envoi du modèle par mail ou copié dans plusieurs dossiers...

Si tu es d'accord je te ferai cela, au plus tard, pour lundi.

A+

Benead

Merci, et oui je suis preneur.

Le fichier sera mis sur une partie commune du serveur.

Bonsoir,

Comme convenu, j'ai fait un petit programme associé à un bouton et un userform qui lit un fichier texte pour récupérer le dernier numéro de commande d'un client, puis mets à jour le bond de commande avec le code client, son nom et le numéro de la commande. Par mesure de sécurité, ce n'est que lorsque l'on sauvegarde la première fois le fichier que l'on inscrit le nouveau numéro de commande. En effet si l'utilisateur ouvre un nouveau document, met à jour les données clients puis ferme le fichier sans le sauvegarder, il ne faut pas incrémenter le compteur.

Je n'ai pas protéger les cellules client et commande, mais l'utilisateur ne doit surtout pas les modifier.

Le classeur que j'ai créé est un modèle, cela oblige l'utilisateur à le sauvegarder sous un autre nom.

Pour modifier le modèle à partir de l'explorateur Windows, il faut faire un clic droit "Ouvrir", sinon "Nouveau" créé obligatoirement un nouveau document.

Dans le module "ModGestionCde", il y a 3 paramètres à modifier selon ton environnement. Concernant l'extension du fichier texte, tu peux mettre ce que tu veux, par exemple .ncc pour Numéro de Commande Clients. Il faut juste que l'extension ne soit pas prise par une autre application. Sinon tu peux utiliser l'extension habituelle .txt. Au niveau de la sécurité, j'ai pour habitude d'en créer une, les utilisateurs ne cherchant pas à rechercher l'application qui ouvre les fichiers de types inconnu.

Je te conseille de mettre le fichier texte à un autre endroit du serveur par mesure de sécurité. Si par mégarde il est supprimé, tous les compteurs se réinitialisent.

Tu regardes et me dis ce que tu en penses.

A+

Benead

Merci pour ta reponse !!!

Je resume. Je l'ai enregistré dans le d: sur mon pc. Je passe une commande en 1.20 et la sauvegarde sur le e: de mon pc. Je rouvre le fichier modele, refait une commande sur le 1.20, mais il me redonne le numero 001. D'ou vient l'erreur ? C'est moi qui ai oublié quelque chiose ?

Tu me parle d'un fichier texte, ou est il en fait ?

En tous cas, merci pour ton boult, ca m'ote une belle epine du pied.

Pour ce qui est du resumé, il faudra juste que tu me dise comme je peux mettre mes commandes a la suite des autres (peux importe l'ordre, je les classerais par la suite)

Bonjour,

Il faut paramétrer l'emplacement du fichier texte de cette façon :

Ouvrir la fenêtre VBE (Alt+F11)

Ouvrir le module ModGestionCdes et modifier de répertoire, le numéro de fichier et l'extension du fichier texte. Attention si tu l'enregistres au format .ini, c'est un fichier protégé par Windows, il est souhaitable qu'au moins pour les tests, tu les mette en .txt. Voir le fichier joint.

Concernant le modèle, il faut impérativement que tu le mettes dans les modèles de chaque ordinateur, si ce n'est pas possible, il faut soit que tu le protèges en écriture sous Excel, soit que tu le protèges sous Windows, en mettant lecture seule dans les propriétés, soit que l'on oblige l'utilisateur à l'enregistrer sous un autre nom, d'ailleurs si tu as une règle d'enregistrement des commandes on peut faire cela. Pour faire tes tests, tu peut le renommer en xls

A+

Benead

commandes

Merci pour ta reponse (en fait je galere pas mal en VBA, donc merci pour tes details).

J'ai donc fait ALT F11, j'ai modifié le repertoire et le format (TXT). Ce fichier txt est "inclus" dans mon fichier excel ? J'ai fait comme tu m'as dit, et il n'incremante pas les numeros


A partir du moment ou j'enregistre, il me supprime le bouton "choix commande et client", je pense que c'est normal ? Mais il n'incremante pas ...

Bonsoir,

Non en fait dans le bout de code ci-dessous :

Public Const Ext As String = ".ini"
Public Const Fichier As String = "Commandes"
Public Const RepertoireIni As String = "D:\Test\"

J'ai indiqué :

en répertoire "D:\Test\

en fichier "Commandes"

en extension ".ini

le fichier texte se créé automatiquement dans le répertoire "Test". Le chemin complet du fichier est donc "D:\Test\Commandes.ini"

Si le chemin du répertoire n'existe pas, le fichier texte ne peut pas se créer et le numéro de commande sera toujours "001"

Quand tu sauvegarde le fichier, par sécurité, je supprime le bouton, car sinon tu peux ré-ouvrir le fichier et ré-incrémenter le numéro de commande ce qui n'est pas normal. Mais on peut désactiver cette suppression.

Essaie avec un répertoire simple comme le mien, tu mes le classeur dans un répertoire simple (d:\commandes\" sans oublié de mettre un \ à la fin du chemin, sinon cela ne fonctionnera pas.

A+

Benead

Merci, je teste ca jeudi au bureau (je suis actuellement en deplacement).

HOURRAAAAAA ca marche !!! Effectivement, j'ai suivi tous tes conseils, et ca a marché nikel. J'avais en fait pas créer le repertoire. Encore un immense merci a toi pour ta solution ( et pour ta patience ...).

Il ne me reste plus qu'a paufiner tout ca, et a faire un autre fichier exel qui me resumera mes commandes (tu es sur que tu veux pas m'aider ? )

Bonsoir,

Si, bien sûr, mais avant tout, mets le modèle de commande en place, vérifies que tout fonctionne selon ton besoin et valide le fonctionnement auprès d'un ou plusieurs utilisateurs. En ensuite, on verra qui (toi sans doute), quand et comment on peut automatiser l'enregistrement des commandes dans le résumé

A+

Benead

Ok, je reviens vers toi debut de semaine prochaine (ca te laissera le temps de te reposer )

Salut Benead

Apres quelques jours de test, il y a juste 1 point a modifier (pas mal non ?) Il faudrait que je puisse verouilles les cellules I8 I9 et J9. Ce sont les cellules ou l'on met normalement les numeros. Commes ils sont donnés automatiquement, ca ne sert a rien de les laisser deverouillées, au contraire ca a tendance a induire en erreur. Lorsque je les verouille, la commande ne fonctionne plus.

Sinon on me demande un recap des commandes (comme sur la feuille 2 du fichier). Feuille qui peut etre mise dans un aurte fichier, qui sera consultée uniquement par 2 personnes (fichier dont on restreindra l'acces par un mot de passe). Est ce que tu peux m'aider la dessus ?

Merci a toi

Rechercher des sujets similaires à "formulaire commande base donnees"