userform gestion de stock

dn35

XLDnaute Occasionnel
Bonjour,

Le titre n'est peut être pas évocateur mais je pense que ce fil servira tout au long de la construction de mon fichier : je suis en effet en train de construire un fichier de gestion de stocks de légumes stockés dans des silos.
Je pars d'un UF qui représente l'état des silos (pour l'instant celui-ci n'est pas initialisé). Un bouton permet au gars posté à la réception d'entrer en stock les livraisons du jour.
C'est sur cet UF que j'ai bossé cet après midi et qui me pose problème. En effet, lorsque je souhaite afficher mon UF (nommé UFreception) avec F5 pour visualiser le travail, j'ai un message d'erreur qui m'indique "erreur d'exécution '13' incompatibilité de type" :confused::confused:

J'ai tenté de reprendre chaque ligne de mon code mais je n'ai pas trouvé ce qui coince :mad:
Si vous pouviez jeter un oeil et me filer un petit coup de main ...

Ce lien pour visualiser le fichier en version 2007 (ici en version 93-2007)

Merci d'avance et bonne soirée.
 

dn35

XLDnaute Occasionnel
Re : userform gestion de stock

Re-bonjour le forum,

Toujours sur la finalisation de mon fichier de gestion des stocks, j'ai un nouveau problème :
En effet je n'ai pas encore pris en compte les silos contenant des produits "BIO" et les silos "NON CONFORME" qui doivent être différenciés des autres. Pour cela j'ai tenté les modification suivantes :

Code:
[COLOR="Blue"]Private Sub[/COLOR] OK_Click()
[COLOR="blue"]Dim[/COLOR] Col [COLOR="blue"]As[/COLOR] Integer
[COLOR="blue"]Dim[/COLOR] I [COLOR="blue"]As [/COLOR]Integer

  [COLOR="Green"]'
  ' On travaille dans cette feuille
  '[/COLOR][COLOR="blue"]  With [/COLOR]Sheets("Gestion des silos")
  
    [COLOR="blue"]If[/COLOR] CBsilo.ListIndex = -1 [COLOR="blue"]Then Exit Sub              [/COLOR][COLOR="green"]' Pas de sélection dans la combobox silo[/COLOR]    
    Col = CBsilo.ListIndex + 2                          [COLOR="green"]' Calcul de la colonne dans la feuille[/COLOR]
   
    [COLOR="blue"]If[/COLOR] .Cells(2, Col) = "" [COLOR="blue"]Then[/COLOR]                         [COLOR="green"]' Si le silo est vide[/COLOR]
      .Cells(2, Col).Value = Txtdate.Value              [COLOR="green"]' Stocke les renseignements saisis[/COLOR]      .Cells(3, Col).Value = Txtlot.Value
      .Cells(4, Col).Value = Txtfournisseur.Value
      .Cells(5, Col).Value = CBreference.Value
      .Cells(6, Col).Value = Txtreference.Value
      .Cells(7, Col).Value = Txtbon.Value
      .Cells(8, Col).Value = Txtpoids.Value
      [COLOR="blue"]If[/COLOR] CheckBox1 = [COLOR="blue"]True[/COLOR] [COLOR="blue"]Then [/COLOR]                         [COLOR="green"]' ici modif suite ajout checkbox[/COLOR]      .Cells(10, Col).Value = "BIO"
      [COLOR="blue"]Else[/COLOR]
      .Cells(10, Col).Value = ""
      [COLOR="blue"]End If[/COLOR]
      [COLOR="blue"]If[/COLOR] CheckBox2 = [COLOR="blue"]True Then[/COLOR]
      .Cells(11, Col).Value = "NON CONFORME"
     [COLOR="blue"] Else[/COLOR]
      .Cells(11, Col).Value = ""
    [COLOR="blue"]  End If[/COLOR]
      
     [COLOR="green"] '
      ' Remplit la listBox du silo
      '[/COLOR]      [COLOR="blue"]With [/COLOR]UFsilo.Controls("LBSilo" & UFreception.CBsilo.ListIndex + 1)
        .Clear
        For I = 2 To 11
          .AddItem (Sheets("Gestion des silos").Cells(I, Col))
        Next I
        .BackColor = RGB(120, 135, 198) [COLOR="green"]' ici reste également à appliquer la codification couleur en fonction BIO et NON CONFORME[/COLOR]        
      [COLOR="blue"]End With[/COLOR]
    [COLOR="green"]  '
      ' Efface le formulaire de saisie
      '[/COLOR]      CBsilo.Value = ""
...

Ici le seul problème c'est que je ne sais pas trop comment prendre en compte les crotères BIO et NON CONFORME (ce dernier prenant le pas sur le premier si les deux sont vrais) pour appliquer la couleur à la listbox.

Ensuite justement dans l'initialisation de l'UFsilo j'ai très maladroitement tenté les modifs suivantes :

Code:
[COLOR="Blue"]With [/COLOR]Sheets("Gestion des silos")
  For I = 1 To 31
    Lg = .Cells(65536, I + 1).End(xlUp).Row
    Controls("LBSilo" & I).List = .Range(.Cells(2, I + 1), .Cells(Lg, I + 1)).Value
    [COLOR="blue"]If[/COLOR] .Cells(2, I + 1) = "" [COLOR="blue"]Then[/COLOR]
      Controls("LBSilo" & I).BackColor = RGB(255, 255, 255)     ' Blanc
    [COLOR="blue"]ElseIf[/COLOR] UCase(.Cells(9, I + 1)) = "OUI" [COLOR="blue"]Then[/COLOR]
      Controls("LBSilo" & I).BackColor = RGB(128, 128, 128)     ' gris
    [COLOR="blue"]ElseIf[/COLOR] IsDate(.Cells(2, I + 1)) [COLOR="blue"]Then[/COLOR]
      Controls("LBSilo" & I).BackColor = RGB(120, 135, 198)     ' bleu
    [COLOR="Red"]Elself .Cells(10, I + 1) = "BIO" Then                     [/COLOR][COLOR="Green"]' ne fonctionne pas : "erreur de compilation"[/COLOR]  
 [COLOR="green"]' Controls("LBsilo" & I).BackColor = RGB(0, 176, 80)        ' Vert[/COLOR]  
[COLOR="red"] Elself .cells(11, I + 1) = "NON CONFORME" Then [/COLOR]            [COLOR="green"] ' Ne fonctionne pas : "erreur de compilation"
   '  Controls("LBsilo" & I).BackColor = RGB(255, 0, 0)         'rouge[/COLOR]    
[COLOR="Blue"]End If[/COLOR] 
 [COLOR="blue"]Next[/COLOR] I

[COLOR="blue"]End With[/COLOR]

Ici (c'était fatal) cela ne fonctionne pas du tout. Je joint le fichier tel qu'il existe aujourd'hui en espérant que vous aurez encore la patience (et pour cela saluons celle de banzai64) de vous pencher sur ce problème.
Merci d'avance

DN35
 

Banzai64

XLDnaute Accro
Re : userform gestion de stock

Bonjour

Un début de réponse


Code:
    Elself .Cells(10, I + 1) = "BIO" Then                     ' ne fonctionne pas : "erreur de compilation"  
 ' Controls("LBsilo" & I).BackColor = RGB(0, 176, 80)        ' Vert  
 Elself .cells(11, I + 1) = "NON CONFORME" Then              ' Ne fonctionne pas : "erreur de compilation"
   '  Controls("LBsilo" & I).BackColor = RGB(255, 0, 0)         'rouge

Eslslf est mal orthographié il faut EsleIf

à la place du l il faut un I masjuscule

Pour le reste wait and see
 

dn35

XLDnaute Occasionnel
Re : userform gestion de stock

Re banzai,

Et merci ! A première vue cela correspond exactement à ce que je souhaitais ! :eek::eek:
Bon sang les possibilités d'Excel et vos connaissances m'étonnerons toujours!!!

Je lance la mise en route dès le début de la semaine prochaine pour épreuve de terrain.

Bonne soirée et encore merci

Dn35
 

dn35

XLDnaute Occasionnel
Re : userform gestion de stock

Bonjour à tous,

Je reviens vers vous car depuis la mise en route (qui s'est merveilleusement bien passée) le fichier fonctionne à merveille mais a également soulevé des demandes supplémentaires. En gros (histoire de vous éviter de relire tous les messages du post je rappelle ici le principe) ce fichier permet de gérer les stocks de silos contenant des légumes en attente de traitement par notre outil de production. Les opérateurs viennent indiquer par un clic sur le silo que ce dernier a été consommé, le silo change alors de couleur.

Le souhait de mes gars est d'ajouter une étape supplémentaire. C'est à dire qu'ils voudraient dans un premier temps pouvoir indiquer qu'il est en cours (il passerait alors en jaune par exemple) puis qu'il est complètement consommé (et passerait alors en gris)

J'ai fait quelques essais infructueux ces derniers jours, à chaque fois je n'ai réussi qu'à planter complètement le fichier.:(:(:(
Si vous pouviez jeter un coup d'oeil et si vous avez des idées, je suis preneuse, de mon côté si je réussi à avancer, je mettrai à jour la version du fichier lié à ce post.

A toutes et à tous de très bonnes fêtes de fin d'année ...
Dn35
 

dn35

XLDnaute Occasionnel
Re : userform gestion de stock

Salut Banzai,

Et encore une fois un grand merci. A première vue c'est exactement ça (perso je ne connait pas du tout les modules de classe). il ne me reste plus qu'à balayer le reste du code et à mettre en place le bébé.

Je me répète mais encore merci.

Bonnes fêtes à toi aussi
 

dn35

XLDnaute Occasionnel
Re : userform gestion de stock

Bonjour à tous,

Toujours avec mon fichier, qui fonctionne exactement comme je le souhaitais ... à un détail prêt (évidemment, dans le cas contraire je ne serait pas sur ce fil :rolleyes:)
Mon problème vient de la dernière modification effectuée. Lorsque l'on vient cliquer sur le silo pour le consommer il arrive que la notification "EN COURS" permettant la coloration en jaune vienne "écraser" la ligne où s'affiche le poids. Mais il s'agit seulement d'un problème d'affichage car lorsque l'on fait disparaitre l'UF puis le fait réapparaitre, toutes les informations apparaissent normalement. Je ne vois pas du tout d'où peut venir le problème.

Banzai, si tu repasse une fois encore par là ... j'abuse je sais mais tu as carrément construit le bébé. Sinon si quelqu'un avait une idée où une piste ...

En vous remerciant d'acance, je dépose le fichier actuel là. Les mots de passe pour la consommation (permet de retourner au classeur ATTENTION le bouton "annuler" enregistre et ferme le classeur) est "encad"

Bonne journée à toutes et à tous et surtout une bonne et heureuse année 2011
Dn
 

Banzai64

XLDnaute Accro
Re : userform gestion de stock

Bonjour

mea culpa
Une ligne au mauvais endroit
Dans le module de classe "Classe1"

VB:
Private Sub Silos_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim Pos As Integer
Dim Msg As String

  Silos.ListIndex = -1
  Msg = "voulez-vous "
  Pos = Val(Mid(Me.Silos.Name, 7, 50)) + 1
  With Sheets("Gestion des silos")
    If IsDate(.Cells(2, Pos)) Then             ' Si il y a une date
      If .Cells(9, Pos) = "EN COURS" Then   ' Vérif si le silo est "EN COURS"
        If Right(Silos.Tag, 1) = "b" Then      ' Donc on va passer à Consommé
          Msg = "voulez-vous consommer devant le silo " & Val(Me.Silos.Tag) & " ?"
        ElseIf Left(Silos.Tag, 1) = "C" Then
          Msg = "voulez-vous consommer dans la cour (emplacement " & Right(Me.Silos.Tag, 1) & ") ?"
        Else
          Msg = "voulez-vous consommer le silo " & Me.Silos.Tag & " ?"
        End If
        If MsgBox(Msg, vbYesNo) = vbYes Then
          Application.EnableEvents = False
          .Cells(9, Pos) = "OUI"
          '
          ' Ligne à rajouter
          '
          Silos.RemoveItem (Silos.ListCount - 1)
          '
          '
          '
          Silos.AddItem "OUI"
          Silos.BackColor = RGB(128, 128, 128)
          Application.EnableEvents = True
        End If
      ElseIf .Cells(9, Pos) <> "OUI" Then   ' <> OUI veut dire pas encore consommé
        If Right(Silos.Tag, 1) = "b" Then
          Msg = "voulez-vous commencer à consommer devant le silo " & Val(Me.Silos.Tag) & " ?"
        ElseIf Left(Silos.Tag, 1) = "C" Then
          Msg = "voulez-vous commencer à consommer dans la cour (emplacement " & Right(Me.Silos.Tag, 1) & ") ?"
        Else
          Msg = "voulez-vous commencer à consommer le silo " & Me.Silos.Tag & " ?"
        End If
        If MsgBox(Msg, vbYesNo) = vbYes Then
          Application.EnableEvents = False
          .Cells(9, Pos) = "EN COURS"
          '
          ' Ligne à effacer
          '
          'Silos.RemoveItem (Silos.ListCount - 1)
          '
          '
          '
          Silos.AddItem "EN COURS"
          Silos.BackColor = RGB(255, 255, 0)
          Application.EnableEvents = True
        End If
      End If
    End If
  End With
End Sub

Bonne nuit
 

dn35

XLDnaute Occasionnel
Re : userform gestion de stock

Salut Banzai

Mea culpa ? Mais tu es tout pardonné (franchement je serais bien gonflée de faire autrement)
Merci pour la modif. Je crois que je vois pourquoi cela conçait (enfin je pense avoir pigé ...)
J'ai mis en ligne la modif et l'ai testé plusieurs fois. Nickel !!!

Un grand grand merci à toi !
Bonne journée

Dn
 

Discussions similaires

Statistiques des forums

Discussions
312 219
Messages
2 086 369
Membres
103 197
dernier inscrit
sandrine.lacaussade@orang