Trouver la valeur d'une variable

Bonjour tout le monde,

Je reviens vers vous car je n'arrive pas à regler un problème de boucle!!

Dans le fichier joint, lorsqu'on clic sur le bouton SORTIE, une listbox s'affiche et devrait afficher les sorties de materiel qui ont été faite. Pour le moment, cela m'affiche uniquement le contenu de la sortie 1 (colonne H à L) .

J'aimerai que lorsque je clic sur le bouton SORTIE, dans ma listbox , se retrouvent toutes les informations de Sorties de toutes la ligne. jusqu'a la dernière valeur non vide de la ligne.

  • Information de sorties 1 sur ligne 1 de listbox ( Colonne H à L)
  • Information de sorties 2 sur ligne 2 de listbox ( Colonne M à Q)

et ainsi de suite.

J'espere avoir été clair.

Pouvez vous m'aider s'il vous plait?

Merci d'avance.

PS: je précise que ce fichier est une version tres simplifié du fichier original.

Bonjour,

Tu testes ici :

Sheets("Stock").Range("B:B,C:C,E:E,F:F")

Pourquoi ces colonnes ? a priori le label ne se trouvée qu'en colonne B:B

Par ailleurs, tu ne prends que ces valeurs :

        Me.ListBox1.List(i, 0) = C.Offset(, -C.Column + 8).Value
        Me.ListBox1.List(i, 1) = C.Offset(, -C.Column + 9).Value
        Me.ListBox1.List(i, 2) = C.Offset(, -C.Column + 10).Value
        Me.ListBox1.List(i, 3) = C.Offset(, -C.Column + 11).Value
        Me.ListBox1.List(i, 4) = C.Offset(, -C.Column + 12).Value

Donc uniquement celles du premier carré de données sur la gauche

Ou bien tu les mets les uns sous les autres, ou bien tu vas aussi chercher les autres plages de données

Bonjour Steelson,

Oui en effet, c'est un oubli de ma part, j'ai oublié de modifié la recherche. Le bon code est donc:

Sheets("Stock").Range("B:B")

La, il n'y a pas de souci.

Pour les valeurs de listbox, je ne sais pas comment faire, la seul methode que je connais et que j'ai trouvé, c'est celle ci.

Je suis obligé de remplir les lignes à l'horizontal car j'ai 20000 lignes dans mon fichier original.

Il faudrait donc faire une recherche en boucle sur toutes la ligne et par tranche de 5 (Step5 je crois).

Mais comment!

C'est ca la question.

Qu'Est-ce qui empêche de mettre tout à la file ? Excel 2003 admet plus de 65.000 lignes.

Ce serait plus simple...

J'ai plus de 20000 symboles (articles) donc lignes. Si pour chaque symbole je mets en dessous 10 a 15 sorties je vais très vite me retrouver a plus de 65000 lignes.

Adapte le code comme suit :

Private Sub UserForm_activate()
Application.ScreenUpdating = False

Me.ListBox1.Clear

    Set C = Sheets("Stock").Range("B:B").Find(Me.Label_Symbole, LookIn:=xlValues, LookAt:=xlPart)
    If Not C Is Nothing Then
      premier = C.Address
      i = 0
      If C.Offset(, -C.Column + 8).Value = "" Then
      Else
      Do

        For j = 0 To 3
        Me.ListBox1.AddItem
        Me.ListBox1.List(i, 0) = C.Offset(, -C.Column + 8 + 5 * j).Value
        Me.ListBox1.List(i, 1) = C.Offset(, -C.Column + 9 + 5 * j).Value
        Me.ListBox1.List(i, 2) = C.Offset(, -C.Column + 10 + 5 * j).Value
        Me.ListBox1.List(i, 3) = C.Offset(, -C.Column + 11 + 5 * j).Value
        Me.ListBox1.List(i, 4) = C.Offset(, -C.Column + 12 + 5 * j).Value
        i = i + 1
        Next j

        Set C = Sheets("Stock").Range("B:B").FindNext(C)

      Loop While Not C Is Nothing And C.Address <> premier
      End If
      Else:
      MsgBox ("Pas encore de stock")
    End If

    Application.ScreenUpdating = True

End Sub

Merci beaucoup steelson,

C'est ce que je voulais!! La seule chose qui n'allait pas, c'est que si tu rajoutes une sortie (ex: Sortie 5), elle ne s'affiche pas dans la listbox.

J'ai donc un peu modifier le code qui fonctionne:

Private Sub UserForm_activate()
Application.ScreenUpdating = False
Dim DernCol As Integer
DernCol = Cells(7, Cells.Columns.Count).End(xlToLeft).Column
Me.ListBox1.Clear

    Set C = Sheets("Stock").Range("B:B").Find(Me.Label_Symbole, LookIn:=xlValues, LookAt:=xlPart)
    If Not C Is Nothing Then
      premier = C.Address
      i = 0
      If C.Offset(, -C.Column + 8).Value = "" Then
      Else
      Do

        For j = 0 To DernCol
        Me.ListBox1.AddItem
        Me.ListBox1.List(i, 0) = C.Offset(, -C.Column + 8 + 5 * j).Value
        Me.ListBox1.List(i, 1) = C.Offset(, -C.Column + 9 + 5 * j).Value
        Me.ListBox1.List(i, 2) = C.Offset(, -C.Column + 10 + 5 * j).Value
        Me.ListBox1.List(i, 3) = C.Offset(, -C.Column + 11 + 5 * j).Value
        Me.ListBox1.List(i, 4) = C.Offset(, -C.Column + 12 + 5 * j).Value
        i = i + 1
        Next j

        Set C = Sheets("Stock").Range("B:B").FindNext(C)

      Loop While Not C Is Nothing And C.Address <> premier
      End If
      Else:
      MsgBox ("Pas encore de stock")
    End If

    Application.ScreenUpdating = True

End Sub

J'ai juste encore un problème, si une sortie n'est pas complété, j'ai une ligne vide dans la listbox.

Exemple:

la sortie 1 et 2 est complété, la sortie 3 n'est pas complété et la sortie 4 est complété. Dans la listbox, j'ai donc une ligne vide!

Est il possible de sauter une "Sortie" si elle est pas complété.

Je sais pas si je suis trés calir.

En tout cas, je te remercie deja pour ce que tu as fait.

Proposition, pas testée :

remplace

i = i + 1

Par un test

 if C.Offset(, -C.Column + 8 + 5 * j).Value <> "" then i = i + 1

Ce qui évite d'incrémenter la ligne si c'est vide

Merci beaucoup Steelson,

c'est exactement ce qu'il me fallait!!

Je classe en résolu.

Bonne continuation à toi.

bye

Rechercher des sujets similaires à "trouver valeur variable"