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.
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!
Voilà!
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 SubYann
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!
Bonne journée à toi aussi!
Yann