Problème Bouton de commande

Bonjour,

J'ai un souci avec un fichier que je suis en train de faire, je vais aller a l'essentiel car il a beaucoup de code.

C'est un fichier pour recensé des productions, il y a une liste d'OF, les employés double clique sur une ligne bleue et ca transfert automatiquement les données importantes dans la feuille "OF en Cours", ils remplissent la quantité par palette et ils n'ont qu'à appuyer sur "Déclaration Palette" ce qui va automatiquement imprimer une fiche palette (j'ai enlevé le code d'impression je crois pour l'instant).

C'est la qu'apparait mon 1er bug, le transfert de la référence, de la quantité et du n° palette se fait dans le code de la feuille "OFencours" :

If Target.Row >= 4 And Cells(Target.Row, 2) <> "" And Cells(Target.Row, 3) <> "" And Cells(Target.Row, 4) <> "" Then

Sheets("Fiche Palette").Range("B22:H27").Value = Cells(Target.Row, 2).Value

Sheets("Fiche Palette").Range("C30:H38").Value = Cells(Target.Row, 3).Value

Sheets("Fiche Palette").Range("D41:E50").Value = Cells(Target.Row, 4).Value

End If

Seulement le numéro de palette s'arrête a 7 sur la feuille "Fiche Palette" malgré qu'on incrémente d'autres palettes.

Mon 2ème problème est dans le Module 2 qui assure la fonction du bouton "Fin de Production", il fonctionne de 2facons :

_ La quantité produite est supérieur à la quantité totale, il récupère donc la ligne avec le même N°OF dans la feuille "ListedesOF", il transfert la quantité produite dans la colonne "quantité fabriquée" et la ligne se colorie en rouge.

_ Ce qui change dans le 2ème fonctionnement est que si la quantité produite est inférieur à la quantité totale, la ligne sera colorié en bleu.

Le problème est que les lignes ne se colorient pas et la quantité n'est pas transférée, je ne comprends pas pourquoi.

Merci d'avance de l'aide que vous me fournirez.

21test.xlsm (51.80 Ko)

J'ai résolu le problème du N° de palette, il ne reste plus que la 2ème procédure (Module 2) qui ne se fait pas.

Bonjour,

Content de savoir que tu as soldé ton premier problème.

Pour le deuxième, je re formalise pour être sur d'avoir tout compris.

  • On clique sur Fin de Production
  • on récupère la ligne avec le même N°OF dans la feuille "ListedesOF"
  • On transfére la quantité produite dans la colonne "quantité fabriquée"
  • Si la quantité produite est supérieure à la quantité totale => ligne rouge (sur feuille "ListedesOF")
  • Si la quantité produite est inférieure => ligne bleu (sur feuille "ListedesOF")
  • Si la quantité est égale on ne change aps la couleur de la ligne? Ou on colorie d'une autre couleur? Si oui laquelle?

Est ce que j'ai bien compris?

Yann

C'est tout à fais ca.

Si la quantité est égale elle se colorie en rouge également.

Ensuite il y a juste un ClearContents pour nettoyer les tableaux de la feuille "OFEnCours"

Ok!

Je regarde ce que je peux faire! Je reviens d'ici quelques minutes!

Voilà! Regarde ce que ça donne, et dit moi si c'est bon pour toi!

Edit : Euuh, j'ai peut etre fait une bétise au niveau de la recopie du tableau! Teste ça sur une copie, je vais tester de mon coté!

Edit2 : En effet, un problème de recopie, je debug et je reviens vers toi!

Sub Fin_de_Prod()

Dim tabOF As Variant
Dim tabProdEnCours As Variant
Dim i As Long, j As Long
Dim nbOF As Long
Dim valeurEstinf As Boolean

'On cherche a definir la taille du tableau des OF, on cherche donc la derniere ligne non vide de la colonne B
nbOF = ThisWorkbook.Sheets("Liste des OF").Range("B65536").End(xlUp).Row

'On récupère les valeurs du tableau des OF
tabOF = ThisWorkbook.Sheets("Liste des OF").Range("B13:G" & nbOF).Value

'On récupère les valeurs du tableau de prod en cours
tabProdEnCours = ThisWorkbook.Sheets("OF en cours").Range("H7:H10").Value

'On place J à 0; j jouera le role de capteur pour prendre en compte le cas ou le Numéro OF n'est pas trouvé
j = 0

'On parcourt la totalité du tableau OF
For i = 1 To nbOF
    'Si le numéro du tableau OF est égal au numéro OF du tableau de prod en cours
    If tabOF(i, 1) = tabProdEnCours(1, 1) Then
        'on sauvegarde le numéro de ligne
        j = i + 12
        'on copie la valeur de la quantitée fabriquée
        tabOF(i, 5) = tabProdEnCours(4, 1)
        'On défini le statut de la valeur précédente par rapport à la quantité (inférieure, ou sup / égale)
        If tabProdEnCours(4, 1) < tabOF(i, 4) Then valeurEstinf = True Else valeurEstinf = False

        Exit For
    End If

Next i

'on désactive la mise a jour de l'affichage
Application.ScreenUpdating = False

If j = 0 Then
    'j = 0, on n'a pas trouvé le numéro OF, message d'erreur
    MsgBox "Numéro OF non trouvé", vbCritical, "Erreur de saisie"
ElseIf valeurEstinf = True Then

    'On colle le tableau OF mis à jour
    ThisWorkbook.Sheets("Liste des OF").Range("B13:G" & nbOF).Value = tabOF
    'on colore la ligne en bleu
    ThisWorkbook.Sheets("Liste des OF").Range("B" & j & ":G" & j).Interior.Color = RGB(0, 176, 240)
    ' on cleane le tableau de prod en cours
   ThisWorkbook.Sheets("OF en cours").Range("H7:H10").clearcontents

ElseIf valeurEstinf = False Then
    'On colle le tableau OF mis à jour
    ThisWorkbook.Sheets("Liste des OF").Range("B13:G" & nbOF).Value = tabOF
    'on colore la ligne en rouge
    ThisWorkbook.Sheets("Liste des OF").Range("B" & j & ":G" & j).Interior.Color = RGB(255, 0, 0)
    ' on cleane le tableau de prod en cours
   ThisWorkbook.Sheets("OF en cours").Range("H7:H10").clearcontents
End If

'On réactive la mise a jour de l'affichage
Application.ScreenUpdating = True

End Sub

Yann

C'est parfait ! Ca marche niquel

Je te remercie beaucoup Yann ! Je vais étudier ton code voir d'où venait mon problème.

Passe une bonne journée !

Content de savoir que c'est bon de ton coté!

Petite piste, il te fallait utiliser une boucle pour parcourir toutes les lignes! Le code est entièrement commenté, tu pourra le modifier à ta guise!

Bonne journée à toi aussi!

Yann

Rechercher des sujets similaires à "probleme bouton commande"