Affichage résultat dans une textbox

Bonjour à tous,

Je cherche à afficher des données égale ou inférieur à 0 de ma feuille récap_couvertures dans une ListeBox en fonction d'une date choisie dans un userform.

Cependant mon code bloque à l'étape n=application.CountA... .

Private Sub CommandButton1_Click()

   Dim lign As Long, ligne As Long, x As Long, col As Integer
   Dim ArrayList()
     Set sh = Sheets("Récap couvertures")
          lign = sh.Cells(Rows.Count, 1).End(xlUp).Row
                MsgBox lign 'test

     n = Application.CountA(sh.Range(Cells(3, LaColonne), Cells(lign, 
     LaColonne)))

     ReDim Preserve ArrayList(1 To 4, 1 To n) 'pour agrandir un tableau 
     dynamique, seule la dernière dimension peut être redimensionnée.
      x = 1
For col = 1 To 3
 For ligne = 1 To lign
  If sh.Cells(ligne + 3, LaColonne) <> 0 Then  'Si la valeur sur la dernière colonne du tableau est différente de 0
    ArrayList(col, x) = sh.Cells(ligne + 3, col)
    ArrayList(4, x) = sh.Cells(ligne + 3, LaColonne)
    x = x + 1
  End If
 Next
 x = 1
Next
With Affichinfo.ListBox1
   .ColumnCount = 4
   .ColumnWidths = "60;80;80;80"
   .List = Application.Transpose(ArrayList)
End With
End Sub

Pouvez-vous m'aider svp, car la mon cerveau ne vois plus rien ?

21classeur2.xla (48.50 Ko)

Je vous joins également le fichier excel.

Bonjour,

Quelle est la valeur de "LaColonne" ?

Cdlt

Si dessous le code que j'ai ajouter.

Cela ne fonctionne pas pour le moment :( .

Sub CommandButton1_Click()
Dim lign As Long, ligne As Long, x As Long, col As Integer, Target As Range, Cancel As Boolean
Dim ArrayList()
Set sh = Sheets("Récap couvertures")
lign = sh.Cells(Rows.Count, 1).End(xlUp).Row
MsgBox lign 'Test des lignes trouvées

Cancel = True
LastB2 = Cells(1, Columns.Count).End(xlToLeft).Column
Set isect = Application.Intersect(Target, Range(Cells(1, 4).Address, Cells(1, LastB2).Address))
If Not isect Is Nothing Then
    LaColonne = Target.Column
    Consult_UserForm
End If

n = Application.CountA(sh.Range(Cells(1, LaColonne), Cells(lign, LaColonne)))
ReDim Preserve ArrayList(1 To 4, 1 To n) 'pour agrandir un tableau dynamique, seule la dernière dimension peut être redimensionnée.
x = 1
For col = 1 To 3
 For ligne = 1 To lign
  If sh.Cells(ligne + 3, LaColonne) <> 0 Then  'Si la valeur sur la dernière colonne du tableau est différente de 0
    ArrayList(col, x) = sh.Cells(ligne + 3, col)
    ArrayList(4, x) = sh.Cells(ligne + 3, LaColonne)
    x = x + 1
  End If
 Next
 x = 1
Next
With Affichinfo.ListBox1
   .ColumnCount = 4
   .ColumnWidths = "60;80;80;80"
   .List = Application.Transpose(ArrayList)
End With
End Sub
Cela ne fonctionne pas pour le moment :( .

D'accord, mais cela bloque t-il toujours sur la même ligne?

Cela bloque à la ligne Consult_UserForm .

Bonjour

Cela bloque à la ligne Consult_UserForm

Consult_UserForm est une macro, où est cette macro?

Bonjour Gige91

Merci de vous conformer à la charte de ce forum et de joindre des fichiers exploitables SVP

Votre macro complémentaire travaille avec un autre fichier semble t'il, merci de le joindre également
cela évitera de nous faire perdre du temps inutilement

A+

Bonjour,

Effectivement ma demande n'est pas claire et compréhensible en l'état.

Je souhaites afficher la liste des produits en rupture de stock dans une box list quand on sélectionne le mois et qu'on puisse l'imprimer par la suite.

Je vous joins un fichier.

Cordialement,

17classeur2.xltm (23.18 Ko)

Bonjour,

Essayez ceci:

Private Sub CommandButton1_Click()
    Dim lign As Long, ligne As Long, x As Long, col As Long, DerCol As Long, LaColonne As Long
    Dim ArrayList()
    Set sh = Sheets("Récap couvertures")
    lign = sh.Cells(Rows.Count, 1).End(xlUp).Row
    Date_Select = CDbl(ComboBox1.Value)
    DerCol = sh.Range("XFD1").End(xlToLeft).Column
    LaColonne = Application.Match(Date_Select, sh.Range(sh.Cells(1, 1), sh.Cells(1, DerCol)), 0)
    n = Application.CountA(Range(sh.Cells(3, LaColonne), sh.Cells(lign, LaColonne)))

    ReDim Preserve ArrayList(1 To 4, 1 To n) 'pour agrandir un tableau  dynamique, seule la dernière dimension peut être redimensionnée.
    x = 1
    For col = 1 To 3
        For ligne = 1 To lign
            If sh.Cells(ligne + 3, LaColonne) <> 0 Then  'Si la valeur sur la dernière colonne du tableau est différente de 0
                ArrayList(col, x) = sh.Cells(ligne + 3, col)
                ArrayList(4, x) = sh.Cells(ligne + 3, LaColonne)
                x = x + 1
            End If
        Next
        x = 1
    Next
    With Me.ListBox1
       .ColumnCount = 4
       .ColumnWidths = "60;80;80;80"
       .List = Application.Transpose(ArrayList)
    End With
    ComboBox1.Value = CDate(ComboBox1.Value)
End Sub

Cdlt

Bonjour,

Merci pour le retour. Effectivement j'arrive à afficher les résultats.

Cependant, il m'affiche les références qu'à partir de la ligne 4. Est-ce possible de faire apparaitre les articles à partir de la première référence présente dans la feuille récap couvertures ?

J'ai une autre question, est-il possible de faire apparaitre sur cette liste que les articles étant à 0 ou en négatif ?

Bonjour,

Voilà:

Private Sub CommandButton1_Click()
    Dim lign As Long, ligne As Long, x As Long, col As Long, DerCol As Long, LaColonne As Long
    Dim ArrayList()
    Set sh = Sheets("Récap couvertures")
    lign = sh.Cells(Rows.Count, 1).End(xlUp).Row
    Date_Select = CDbl(ComboBox1.Value)
    DerCol = sh.Range("XFD1").End(xlToLeft).Column
    LaColonne = Application.Match(Date_Select, sh.Range(sh.Cells(1, 1), sh.Cells(1, DerCol)), 0)
    n = Application.CountA(Range(sh.Cells(3, LaColonne), sh.Cells(lign, LaColonne)))

    ReDim Preserve ArrayList(1 To 4, 1 To n) 'pour agrandir un tableau  dynamique, seule la dernière dimension peut être redimensionnée.
    x = 1
    For col = 1 To 3
        For ligne = 2 To lign
            If sh.Cells(ligne, LaColonne) <= 0 Then  'Si la valeur <= 0
                ArrayList(col, x) = sh.Cells(ligne, col)
                ArrayList(4, x) = sh.Cells(ligne, LaColonne)
                x = x + 1
            End If
        Next
        x = 1
    Next
    With Me.ListBox1
       .ColumnCount = 4
       .ColumnWidths = "60;80;80;80"
       .List = Application.Transpose(ArrayList)
    End With
    ComboBox1.Value = CDate(ComboBox1.Value)
End Sub

Cdlt

Parfait, ça marche.

Un grand merci à toi !!!

Rechercher des sujets similaires à "affichage resultat textbox"