Creation fichier ecxel pour pilotage industriel

bonjours a tous

déjà je tiens a remercier par avance toute les personne qui prendrons le temps de me lire et de m apporter leur connaissance et savoir
je vous présente mon projets

je souhaite crée un programme ecxel qui me permettrais de suivre le pilotage d une petite entreprise je sais qu il y a des programme tous fait sur le net ou autre mais je souhaite faire un truc gratuitement
dans mon programme j aimerais y inclure les options suivante:

page d accueil avec des indicateurs (suivi production sur un dizaine de machines style compteur de puissance)

d avoir un suivi sur l évolution des commandes (avance/retard)

un suivi de traçabilité

une base de donnée

un ordre de lancement (production sur machine )

un contrôle de matière brut a utiliser suivant la commande avec plusieurs critère

une gestion de stock de c est matière brut

un inventaire de produit fini en stock

j oublie certainement plusieurs truc que je souhaiterais ajouter par la suite pour le départ j ai commencer sur une vba avec un type de formulaire dont je bloque sur la formule complète j ai crée une liste déroulante avec plusieurs étape de la fabrication quand je saisie mes "commande" j aimerais que tout les champs renseigner s enregistre dans la feuille suivi commande ensuite pour valider les étapes fabrication etc j aimerais que dans se même formulaire saisir uniquement deux champs style reference et numéro de bf ainsi les autre champs se remplisse automatiquement ensuite une fois valider que sa me renseigne les champs dans la feuille correspondante a la liste déroulante afin de valider l opération

je vous joint mon fichier en cours

merci a vous d avoir pris le temps de me lire j espère

12classeur1.xlsm (95.66 Ko)

juste que mes explication ne sont pas trop confuse

Bonjour Odin,

Telle quelle, ta demande d'aide est très (trop) large : il s'agit d'un véritable projet qui nécessitera un investissement en temps important qui me semble difficile à consentir pour des contributeurs empathiques mais bénévoles...

Un conseil : plutôt que d'exposer ton projet de façon globale, postes sur ce forum des demandes d'aide abordant un point précis sur lequel tu bloques.

bonjour GVIALLES

j en suis conscient que mon projet est larges après je ne demande pas que l on me le fasse j ai exposer mon projet afin que l on me dise si c est possible de tout faire en forme de classeur ecxel ainsi que d avoir des idées extérieur

après je déposerais régulièrement des avancement de mon projet afin de partager avec vous

un petit coup de mains sur ma formule VBA svp j aimerais que quand je selectionne autre que commande dans ma liste deroulante que j entre uniquement la ref ainsi que le num de bf et que les autre champs se remplisse automatiquement svp

Private Sub txtref_AfterUpdate()

Dim commandeWS As Worksheet

Dim refRow As Variant

' Référence à la feuille "suivi de commande"

Set commandeWS = ThisWorkbook.Sheets("suivi de commande")

' Recherche de la référence dans les colonnes C et D de la feuille "suivi de commande"

Dim refColumn As Range

Set refColumn = Union(commandeWS.Columns("C"), commandeWS.Columns("D"))

refRow = Application.Match(Me.txtref.Value, refColumn, 0)

' Si la référence est trouvée, remplissez les autres champs

If Not IsError(refRow) Then

' Remplir le champ "client"

Me.txtclient.Value = commandeWS.Cells(refRow, "A").Value

Me.txtnumcde.Value = commandeWS.Cells(refRow, "E").Value

Me.txtdesig.Value = commandeWS.Cells(refRow, "F").Value

Me.txtquantite.Value = commandeWS.Cells(refRow, "G").Value

' Ajoutez d'autres champs à remplir automatiquement ici

Else

MsgBox "Référence inconnue.", vbExclamation

End If

End Sub

Private Sub CommandButton1_Click()

' Validation des données et enregistrement dans la feuille correspondante

Dim ws As Worksheet

Dim LastRow As Long

' Déterminer la feuille cible en fonction du choix dans la liste déroulante

Select Case Me.boxaction.Value

Case "Commande"

Set ws = ThisWorkbook.Sheets("suivi commande")

Case "fabrication"

Set ws = ThisWorkbook.Sheets("suivi commande fabrication")

Case "affutage"

Set ws = ThisWorkbook.Sheets("suivi commande affutage")

Case "rectif"

Set ws = ThisWorkbook.Sheets("suivi rectif ")

Case "coupe"

Set ws = ThisWorkbook.Sheets("suivi coupe")

Case "conventionnel"

Set ws = ThisWorkbook.Sheets("suivi conventionnel")

Case "Expedition"

Set ws = ThisWorkbook.Sheets("suivi expedition")

Case "Contrôle"

Set ws = ThisWorkbook.Sheets("suivi controle")

End Select

' Trouver la première ligne vide dans la colonne A de la feuille cible

LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1

' Placer les données sur la feuille correspondante

With ws.Cells(LastRow, 1).Resize(1, 7)

.Value = Array(Me.txtdate.Value, Me.txtref.Value, Me.txtclient.Value, _

Me.txtnumbf.Value, Me.txtnumcde.Value, Me.txtdesig.Value, _

Me.txtquantite.Value)

End With

' Afficher un message de validation des données

MsgBox "Données validées avec succès !", vbInformation

' Réinitialiser les champs de texte (sauf txtdate)

Me.txtref.Value = ""

Me.txtclient.Value = ""

Me.txtnumbf.Value = ""

Me.txtnumcde.Value = ""

Me.txtdesig.Value = ""

Me.txtquantite.Value = ""

End Sub

Private Sub Worksheet_Activate()

' Remplit la TextBox avec la date actuelle lors de l'ouverture de la feuille

Me.txtdate.Value = Date

End Sub

re,

pourquoi utilisez-vous pas des tableaux structurés, cela est plus facile à maintenir ? La colonne A est maintenant part du tableau

5classeur1-42.xlsm (91.45 Ko)
Private Sub CommandButton1_Click()
     ' Validation des données et enregistrement dans la feuille correspondante
     Dim Tbl   As ListObject

     ' Déterminer la feuille cible en fonction du choix dans la liste déroulante
     Select Case Me.boxaction.Value
          Case "Commande": Set Tbl = ThisWorkbook.Sheets("suivi commande").Range("TBL_Suivi_Commande").ListObject
          Case "fabrication": Set ws = ThisWorkbook.Sheets("suivi commande fabrication") 'la même chose pour les autres
          Case "affutage": Set ws = ThisWorkbook.Sheets("suivi commande affutage")
          Case "rectif": Set ws = ThisWorkbook.Sheets("suivi rectif ")
          Case "coupe": Set ws = ThisWorkbook.Sheets("suivi coupe")
          Case "conventionnel": Set ws = ThisWorkbook.Sheets("suivi conventionnel")
     End Select

     ' Placer les données sur la feuille correspondante
     Tbl.ListRows.Add.Range.Resize(1, 7).Value = Array(Me.txtdate.Value, Me.txtref.Value, Me.txtclient.Value, _
                                                       Me.txtnumbf.Value, Me.txtnumcde.Value, Me.txtdesig.Value, Me.txtquantite.Value)

     ' Afficher un message de validation des données
     MsgBox "Données validées avec succès !", vbInformation

     ' Réinitialiser les champs de texte (sauf txtdate)
     Me.txtref.Value = ""
     Me.txtclient.Value = ""
     Me.txtnumbf.Value = ""
     Me.txtnumcde.Value = ""
     Me.txtdesig.Value = ""
     Me.txtquantite.Value = ""
End Sub

comment faire svp

Bonjour Odin,

Ici, une introduction aux tableaux structurés : https://excellons.org/tuto-tableaux-structures-une-introduction/

re, pour le reste

au lieu de .ListColumns("Client").DataBodyRange(refRow, 1).Value, on peut aussi utiliser ..DataBodyRange.cells( 1,"B").Value, par exemple (ou autres formats)

Private Sub txtref_LostFocus()
     Dim refRow As Variant

     ' Recherche de la référence dans les colonnes C et D de la feuille "suivi de commande"

     With ThisWorkbook.Sheets("suivi commande").Range("TBL_Suivi_Commande").ListObject
          refRow = Application.Match(Me.txtref.Value, .ListColumns("reference").DataBodyRange, 0)

          ' Si la référence est trouvée, remplissez les autres champs
          If Not IsError(refRow) Then
               ' Remplir le champ "client"
               Me.txtclient.Value = .ListColumns("Client").DataBodyRange(refRow, 1).Value
               Me.txtnumcde.Value = .ListColumns("num de commande").DataBodyRange(refRow, 1).Value
               Me.txtdesig.Value = .ListColumns("designation").DataBodyRange(refRow, 1).Value
               Me.txtquantite.Value = .ListColumns("quantité").DataBodyRange(refRow, 1).Value
               ' Ajoutez d'autres champs à remplir automatiquement ici
          Else
               MsgBox "Référence inconnue.", vbExclamation
          End If
     End With
End Sub
17classeur1-42.xlsm (136.53 Ko)

merci a vous pour vos réponse

en faite ce que je cherche a faire via ma vba est l operation suivante

j ai crée une liste déroulante qui correspond a des feuilles dans mon classeur (suivi commande, suivi fabrication , suivi expédition etc)

mon objectif est que lorsque que je sélectionne commande dans ma liste déroulante je remplisse tout les champs de mon formulaire âpres validation des données ceci sont enregistrer dans le suivi commande

mais j aimerais que lorsque je choisi un autre choix dans la liste déroulante que je puisse renseigner uniquement la reference et le numéro de commande et que les autre champs soit saisie automatiquement en allant chercher la ligne de commande qui correspond ceci aura pour but de valider l opération et ainsi faire avancer le processus de fabrication

j ai pas mal modifier mon fichier si vous voulez jeter un coups d œil la feuil1 devrait être ma future page d accueil

3pilotage.xlsm (192.25 Ko)

re,

un début

10pilotage.xlsm (195.14 Ko)

bon ben la un grand merci mais c est enervant je me casse la tete avec une vba a rallonge depuis une semaine et toi tu me sort deux ligne tout est regler

un GRAND GRAND merci a toi

re,

merci, merci.

Il y a une chose qu'il faut savoir, j'ai déplacé les macros du module de "feuil1" vers un module ordinaire, parce que comme çà, on peut utiliser un tableau comme ceci

range("Nom du Tableau").listobject et si vous voulez, vous pouvez déplacer ce tableau d'une feuille à une autre, no problem ! Mais dans le module d'une feuille, il faut toujours ajouter la feuille, donc sheets("nom de la feuille").range("nom du tableau").listobject.

Puis les numéros (index) des 6 premières colonnes sont déclarés "Public" au début du module1, donc vous pouvez les utilisez partout dans tous les modules ordinaires et modules d'une feuille. Si plus tard, vous insérez une colonne dans tous vos tableaux, vous n'avez qu'à modifier ce numéro.

d accord tu a repondu a mes questions que je me poser j aime bien comprendre les chose et non faire du copier coller

encors merci du bon boulot

si parts exemple j ai le champs designiation qui est plus ou moins la description de l outil est t il possible qu au moment du remplissage du formulair je recupere l info dans la base de donnees

re,

pour ces hexagons, j'ai commencé à leur donner une macro commune "Hexagon" et dépendant de l'hexagon, on fait quelque chose différent.

Concernant votre autre question, oui, on peut faire des recherches dans ce tableau. Par exemple client "444" et référence "444"

3pilotage.xlsm (197.19 Ko)

j ai essayer le formulaire le 444 qui renvoie a la designation est le client

dans mon cas j aurai besoin que la désignation est un liens uniquement avec la reference il faudrais qu il vienne chercher la désignation

1classeur1.xlsm (213.23 Ko)

dans la bas de donner

pour ce qui est des forme je l ai est attribuer a mes feuilles afin d aller les ouvrer directement pour un accès plus rapide je t envoie mon dossier

je boss dur (avec mes connaissance limité )

re,

avec maintenant un lien dans la cellule "designiation"

Je ne sais pas ce qu'il se passe quand vous triez le tableau des données ou si vous y supprimez des lignes, peut-être un double-clicque sera plus fiable.

3classeur1-43.xlsm (224.75 Ko)

re,

maintenant avec un double-clic event dans "thisworkbook".

8classeur1-43.xlsm (224.75 Ko)

Désolés à tous mais j ai actuellement quelque souci de connection internet (vive la fibre ) merci encors à vous

Pas de panique je travaille toujours sur mon projet j ai encors la chance d avoir accès à mon téléphone pour suivre vos conseil

Rechercher des sujets similaires à "creation fichier ecxel pilotage industriel"