Amélioration d’un outil de suivi production(1e erreur 13 incompatibilité)

Bonjour tout le monde.

Je vous sollicite aujourd’hui pour m’aider à faire une VBA pour la création d’un outil de suivi de prod, sachant que je ne suis pas spécialiste VBA mais je comprends comment ça marche et je sais comment j’adapte vos idées à mes besoins et que mon responsable de stage m’a permis de solliciter l’aide des spécialistes.

Voilà mon problème :

Le contexte:

1 Quand je valide la dernière phase de fabrication d’une pièce le N pièce sera N+1. Par exemple si vous mettez OK sur la colonne G8, le N pièce P1 sera 12 au lieu de 11 (cela est déjà fait).

2 La deuxième chose c’est quand une modification du contenu de mon tableau soit effectuée sur une des feuilles 1, 2 ou 4 je vais avoir le même changement sur les autres feuils (1,2 ou 4) donc je vais avoir des tableaux identiques tout le temps et cela doit être. (cela est déjà fait).

3 Sur la feuille 5 je veux avoir un historique de N pièce fabriqués sur lequel je trouve le nom du model et de la pièce et le N de pièce. NOTE IMPORTANTE: il faut savoir que des fois je mets les N pièce manuellement, je veux avoir dans l’historique tous les N pièce qui serons mis sur le tableau soit manuellement ou bien automatiquement à l’aide de mon code vba. (j’ai pas trouvé une solution pour cela).

Ce qui est déjà réalisé :

1 et 2 sont déjà faites mais il y’a un bug vous pouvez le visualiser avec un essai. Vous trouverez les explications du code en commentaire ( il y a une macro générale en plus d’un code dans chaque feuil).

Ce qui reste à faire

Création de la macro pour faire l’historique.

Correction du code pour éliminer l’erreur 13 (erreur d’incompatibilité).

Merci d’avance pour votre aide.

Cordialement.

Bonjour,

suite aux premiers tests, une petite erreur ?

2 La deuxième chose c’est quand une modification du contenu de mon tableau soit effectuée sur une des feuilles 1, 2 ou 4 je vais avoir le même changement sur les autres feuils (1,2 ou 4) donc je vais avoir des tableaux identiques tout le temps et cela doit être. (cela est déjà fait).

En effet, si vous mettez "OK" en G8 sur la feuille 1, alors en feuille 2 et 4 il y a bien incrémentation du N pièce, mais il n'y a pas l'initialisation de la cellule, et cette dernière reste à "OK" sur les feuilles 2 et 4.

@ bientôt

LouReeD

M. LouReed Bonjour,

Oui et ça me cause un ptit peu problème mais bon si y a pas de solution c'est pas grave je corrige avec FALSE au lieu de TRUE.

Le grand problème est de pouvoir faire une macro pour archivé les nom de model et pièce et N de piece dans une feuil de suivi ou d'historique de pièce fabriqué. (c'est primordial dans mon projet mais j'arrive pas à mettre en place une méthode efficace pour le faire).

Si vous regardez sur la feuil 5 vous allez comprendre comment je veux faire la chose mais le traduire en VBA me causera problème

Il vous faut effacer les codes des trois feuilles surveillées, et mettre celui-ci :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Application.EnableEvents = False
    Dim i As Integer
    If Target.Count > 1 Then Exit Sub
    If Sh.Index < 4 Then
        If Not Intersect(Target, Sh.Range("G8")) Is Nothing Then
            If UCase(Target.Value) = "OK" Then
                For i = 1 To 3
                    Sheets(i).Range("E4").Value = Sheets(i).Range("E4").Value + 1
                    Sheets(i).Range("G4:G8").Value = ""
                Next i
            End If
        End If
        If Not Intersect(Target, Sh.Range("G13")) Is Nothing Then
            If UCase(Target.Value) = "OK" Then
                For i = 1 To 3
                    Sheets(i).Range("E9").Value = Sheets(i).Range("E9").Value + 1
                    Sheets(i).Range("G9:G13").Value = ""
                Next i
            End If
        End If
        If Not Intersect(Target, Sh.Range("G17")) Is Nothing Then
            If UCase(Target.Value) = "OK" Then
                For i = 1 To 3
                    Sheets(i).Range("E14").Value = Sheets(i).Range("E14").Value + 1
                    Sheets(i).Range("G14:G17").Value = ""
                Next i
            End If
        End If
        If Not Intersect(Target, Sh.Range("G21")) Is Nothing Then
            If UCase(Target.Value) = "OK" Then
                For i = 1 To 3
                    Sheets(i).Range("E18").Value = Sheets(i).Range("E18").Value + 1
                    Sheets(i).Range("G18:G21").Value = ""
                Next i
            End If
        End If
    End If
    Application.EnableEvents = True
End Sub

sur "la feuille" ThisWorkBook : c'est une surveillance événementielle sur le classeur entier !

On vérifie que le changement a lieu sur une des trois premières feuilles (Index <4) et on lance le code de mise à jour des N pièces.

Comme cela on évite vos différents "renvois", vous pouvez également supprimer les codes qui se trouvent dans les modules...

@ bientôt

LouReeD

Pour le reste il me manque un peu de temps...

@ bientôt

LouReeD

je me suis pas trempé de vous faire signe j'ai confiance à vos capacités. pour la partie 3 j'ai une solution donc si vous avez pas le temps j me contente de ce que vous m'avez donnez .

UN GRAND MONSIEUR RESPECT.

Bonjour,

merci de vos remerciements !

Ceci dit si vous avez déjà programmé un code pour le N°3, n'hésitez à fournir le fichier et éventuellement je peux regarder s'il y a des "améliorations" à écrire, un peu comme le code ci dessus...

@ bientôt

LouReeD

Bonjour,

Bien sur je vais diffuser le fichier avec les explications ( en tout cas ce n'est pas moi qu'il a fait pour etre honete moi je sais juste modifier et adapter selon mon besoin mais traduire mon raisonnement en VBA je ne peux pas parce que je ne maitrise pas la syntaxe de ce langage).

Je le diffuserai ce soir

Bonne journée

La communauté attend avec impatience !

@ (très) bientôt alors...

LouReeD

Bonsoir LouReed, Bonsoir Forum,

Je suis désolé pour le retard, voilà comme promis le fichier avec la résolution complète du problème, en fait c'est presque le même raisonnement de M LouReed mais avec quelques modification pour avoir le besoin N3.

J'espère que cela aidera d'autre personnes ^_^ .

Courage à tout le monde et BON WEEK-END.

30tion.xlsm (25.04 Ko)

Bonsoir,

merci pour le partage

Ceci dit je vous partage ceci :

24tion-loureed.xlsm (24.08 Ko)

Je suis resté sur l'idée d'un seul code sous "ThisWorkBook"

@ bientôt

LouReeD

J'adopte

Merci pour vos efforts

Merci @ vous !

Et encore, il doit y avoir "moyen" de le raccourcir encore, car il y a tout de même beaucoup de répétition, de similitude d'une boucle à l'autre...

@ bientôt

LouReeD

emm vu que mes pièces n'ont pas le meme nombre de phase de fabrication donc (un pièce qui contient 6 lignes l'autre 4 ...) je pense qu'on ne pourra pas faire mieux que ça. mon vrais tableau contient environ 2000 lignes donc j'ai du boulot

Je pense bien que vous avez raison !

@ bientôt alors...

LouReeD

Je vous tiens au courant de la suite des événements

@bientôt

Rechercher des sujets similaires à "amelioration outil suivi production erreur incompatibilite"