Mon userform ne renvoie pas les info

aziz

XLDnaute Occasionnel
Bonjour à tous,
Pour mon userform ne renvoie pas les infos demandées ?
merci pour votre aide.


Private Sub UserForm1_Initialize() 'à l'initialisation de l'UserForm
Dim x As Integer 'déclare la variable x (incréemt)
With Me.ListBox1 'prend en compte la ListBox1
.AddItem Sheets("Base client").Cells(2, 2) 'ajoute la valeur de la 3 lignes de la 3 colonnes
.Column(1, .ListCount - 1) = Sheets("Base client").Cells(2, 5)
.Column(2, .ListCount - 1) = Sheets("Base client").Cells(2, 6)
.Column(3, .ListCount - 1) = Sheets("Base client").Cells(2, 7)
.Column(4, .ListCount - 1) = Sheets("Base client").Cells(2, 8)


End With 'fin de la prise en compte de la ListBox1

'boucles sur toutes les cellules éditées de la colonne C de l'onglet "Feuil2"
For x = 2 To Sheets("Base client").Range("C65536").End(xlUp).Row

If Sheets("Base client").Cells(x, 10) <> "" And Sheets("Base client").Cells(x, 10) < 50 Then
With Me.ListBox1 'prend en compte la ListBox1
.AddItem Sheets("Base client").Cells(x, 2)
.Column(1, .ListCount - 1) = Sheets("Base client").Cells(x, 5)
.Column(2, .ListCount - 1) = Sheets("Base client").Cells(x, 6)
.Column(3, .ListCount - 1) = Sheets("Base client").Cells(x, 7)
.Column(4, .ListCount - 1) = Sheets("Base client").Cells(x, 8)


End With 'fin de la prise en compte de la ListBox1
End If
Next x 'prochaine cellule de la boucle
'alimentation de la ComboBox1
Me.ComboBox1.List = Sheets("Base client").Range("A1:A" & Sheets("Base client").Range("A65536").End(xlUp).Row).Value
End Sub
 

Pièces jointes

  • Rev05bis.xls
    219.5 KB · Affichages: 47
  • Rev05bis.xls
    219.5 KB · Affichages: 55

Modeste

XLDnaute Barbatruc
Re : Mon userform ne renvoie pas les info

Bonsoir aziz,

cela ne fonctionne pas
Ben oui mais bon ... qu'est-ce qui ne fonctionne pas?

Si, après avoir enlevé le '1' comme suggéré, tu obtiens un message d'erreur, c'est peut-être parce que ton code mentionne (à la fin de la Sub UserForm_Initialize), un ComboBox1 ... qui ne semble pas exister :confused:

Si j'ôte le '1' et que je mets en commentaire la ligne concernant cette Combobox1, le UserForm est "garni", lorsqu'il s'affiche ...
 

aziz

XLDnaute Occasionnel
Re : Mon userform ne renvoie pas les info

Bonjour Modeste et au forum,
j'ai réussi par contre est ce possible de classer du plus grand au plus petit ?
en fonction : Réunion dans combien de jours = colonne I

Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
Dim x As Integer 'déclare la variable x (incréemt)

'***************************
'alimentation de la ListBox1
'***************************
'boucles sur toutes les cellules éditées de la colonne C de l'onglet "Feuil2"
For x = 2 To Sheets("Base client").Range("C65536").End(xlUp).Row

If Sheets("Base client").Cells(x, 10) <> "" Then
With Me.ListBox1 'prend en compte la ListBox1

.AddItem Sheets("Base client").Cells(x, 1)
.Column(1, .ListCount - 1) = Sheets("Base client").Cells(x, 2)
.Column(2, .ListCount - 1) = Sheets("Base client").Cells(x, 3)
.Column(3, .ListCount - 1) = Sheets("Base client").Cells(x, 4)
.Column(4, .ListCount - 1) = Sheets("Base client").Cells(x, 5)
.Column(5, .ListCount - 1) = Sheets("Base client").Cells(x, 10)

End With 'fin de la prise en compte de la ListBox1
End If
Next x 'prochaine cellule de la boucle
'alimentation de la ComboBox1

End Sub
 

Pièces jointes

  • Rev05bis.xls
    220.5 KB · Affichages: 36
  • Rev05bis.xls
    220.5 KB · Affichages: 35

laetitia90

XLDnaute Barbatruc
Re : Mon userform ne renvoie pas les info

bonjour aziz ,Modeste:)

regarde du cote de QuickSort


Code:
Sub Tri(a, ColTri, gauc, droi)
   ref = a((gauc + droi) \ 2, ColTri)
   g = gauc: d = droi
   Do
    Do While a(g, ColTri) > ref: g = g + 1: Loop
    Do While ref > a(d, ColTri): d = d - 1: Loop
    If g <= d Then
     For k = LBound(a, 2) To UBound(a, 2)
     temp = a(g, k): a(g, k) = a(d, k): a(d, k) = temp
     Next k
     g = g + 1: d = d - 1
    End If
    Loop While g >= d
    If g > droi Then Call Tri(a, ColTri, g, droi)
    If gauc > d Then Call Tri(a, ColTri, gauc, d)
End Sub
 

laetitia90

XLDnaute Barbatruc
Re : Mon userform ne renvoie pas les info

re tous :)

pour faire simple je passe par des "tablos"
plus simple & + rapide

dans la mesure ou les columns se suivent pas de 1 a 5 & 10
si tu fais que que visualiser pas de souci par contre si tu modifier , ajouter ou supprimer peut pose pb... dans la
mesure ou on met dans un certain ordre..... on peut plus utiliser listindex pour modif ect...ci dessus
en manipulant des tablos facile a construire
voila c'est tout:)
 

laetitia90

XLDnaute Barbatruc
Re : Mon userform ne renvoie pas les info

re tous :)

avec un peu explications !!

Code:
Dim t1(), t(), x As Long, k As Long, i As Long, c ' declaration variable
 Private Sub UserForm_Initialize()
   t = Feuil1.Range("a2:j" & Feuil1.Cells(Rows.Count, 1).End(3).Row)
   ' t =tableau j-utilise code name de la feuil plus simple
   x = 1 ' depart a 1
   For i = 1 To UBound(t) 'debut boucle sut tableau t
    If t(i, 9) <> "" Then 'condition
    t(i, 6) = t(i, 10) ' deplace la colonne 10 a la 6
    ReDim Preserve t1(1 To 6, 1 To x) ' redefini la mise en memoire le new tableau redim
    'la j'ai utilise preserve on pourrait sans passer .....agrandi pas la derniere dimension
   ' ci dessous envoi dans new tableau t1
    For k = 1 To 6
    t1(k, x) = t(i, k)
   Next k: x = x + 1: End If: Next i
   c = Application.Transpose(t1) 'redefini le tableau avec transpose on peut eviter d'utiliser limite a 65000ligne
   Call Tri(c, 1, LBound(c), UBound(c)) 'appel la macro tri pour mettre dans l'ordre defini le tableau c
 '  j 'ai utilise Quick sort .....autre methode de tri shell.sort ect...
   'mais Quick sort tres rapide sur beaucoup de lignes
   ListBox1.List = c 'restitution du tablo dans listbox
 End Sub


une version un peu simplifier pour eviter application transpose

Code:
Dim t1(), t(), x As Long, k As Long, i As Long
Private Sub UserForm_Initialize()
    t = Feuil1.Range("a2:j" & Feuil1.Cells(Rows.Count, 1).End(3).Row)
    Call Tri(t, 1, LBound(t), UBound(t))
     For i = 1 To UBound(t)
     If t(i, 9) <> "" Then
     x = x + 1
    t(i, 6) = t(i, 10)
    ReDim Preserve t1(1 To 6, 1 To x)
    For k = 1 To 6
    t1(k, x) = t(i, k)
    Next k: End If: Next i
    ListBox1.Column = t1
 End Sub

tu remarqueras que j-utilise pas derniere ligne du code

ListBox1.list = t1

mais ListBox1.Column = t1 evite pb ...si une seule ligne dans la box
 

laetitia90

XLDnaute Barbatruc
Re : Mon userform ne renvoie pas les info

re tous :)
essai comme cela il faut changer le code de tri Quick sort également je l'avais mal écrit

Code:
Dim t1(), t(), x As Long, k As Long, i As Long, c
 Private Sub UserForm_Initialize()
    t = Feuil1.Range("a2:j" & Feuil1.Cells(Rows.Count, 1).End(3).Row)
    For i = 1 To UBound(t)
    If t(i, 9) <> "" Then
     x = x + 1
    t(i, 6) = t(i, 10)
    ReDim Preserve t1(1 To 6, 1 To x)
     For k = 1 To 6
    t1(k, x) = t(i, k)
    Next k: End If: Next i
    ListBox1.Column = t1
    c = ListBox1.List
    Call Tri(c, 5, LBound(c), UBound(c))
    ListBox1.List = c
 End Sub
Sub Tri(a, ColTri, gauc, droi) ''Quick sort
  ref = a((gauc + droi) \ 2, ColTri)
  g = gauc: d = droi
  Do
  Do While a(g, ColTri) > ref: g = g + 1: Loop
  Do While ref > a(d, ColTri): d = d - 1: Loop
  If g <= d Then
   For k = LBound(a, 2) To UBound(a, 2)
   temp = a(g, k): a(g, k) = a(d, k): a(d, k) = temp
    Next k
   g = g + 1: d = d - 1
    End If
  Loop While g <= d
  If g < droi Then Call Tri(a, ColTri, g, droi)
  If gauc < d Then Call Tri(a, ColTri, gauc, d)
End Sub
Private Sub CommandButton2_Click()
 Unload Me
End Sub
 

Statistiques des forums

Discussions
312 672
Messages
2 090 772
Membres
104 662
dernier inscrit
Hurve