Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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
 

aziz

XLDnaute Occasionnel
Re : Mon userform ne renvoie pas les info

Bonjour, laetitia90
et merci beaucoup pour ton coup de main
par contre excuse moi mon ignorance, je souhaiterai comprendre ?
Tu as virer mon code et créer un nouveau ?
merci
 

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
 

aziz

XLDnaute Occasionnel
Re : Mon userform ne renvoie pas les info

Merci Beaucoup pour tes explications.
par contre je souhaite classer du plus grand en haut de ma feuille et descendre vers le plus petit.
je dois inverser un signe ?
 

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
 

Discussions similaires

Réponses
17
Affichages
1 K
Réponses
4
Affichages
382
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…