XL 2010 execution lente

kaid

XLDnaute Occasionnel
Bonjour; et merci pour votre réponse
*j'ai un autre problème : j'ai commencer a saisir mes données je suis arriver a 900 lignes. et quand je l'ouvre il bug et parfois la userform ne s'affiche c'est très très lent !!!!.
et quand elle met du temps a s'ouvrir l'ajout et la modification d'un enregistrement prend du temps aussi a partir de la userform toujours.
 

Lone-wolf

XLDnaute Barbatruc
Re kaid

VB:
Dim Tablo
    With ListBoxLocataire
        .ColumnCount = 16
        .ColumnWidths = "130 ;80 ;200 ;100 ;80 ;80 ;100 ;0;0;0;0;0;0;0;0;0 "
        Tablo = Range("A1:P" & Range("a" & Rows.Count).End(3).Row)
        .ColumnCount = UBound(Tablo, 2)
        .List = Tablo
        For i = 1 To Range("a" & Rows.Count).End(3).Row - 1
            .List(i, 15) = i + 1
        Next
    End With

J'aimerais que tu m'explique pourquoi tu à 2 fois .ColumnCount???:rolleyes:. Ensuite si tu utilise Tablo comme ici

Tablo = Range("A1:O" & Range("a" & Rows.Count).End(3).Row)
La dernière colonne est O et non P

.ColumnCount = UBound(Tablo, 2)
.List = Tabl0

La Variable est Tablo(), et .ColumnCount = UBound(Tablo, 2) est à supprimer, vu que tu a déjà .ColumnCount = 16. Modifie aussi [A65000] par Range("a" & Rows.Count). À quoi ça te sert d'aller jusqu'à 65000, quand tu as à peine 1000 lignes remplies?? o_O

.List = Tablo
For i = 1 To Range("a" & Rows.Count).End(3).Row - 1
.List(i, 15) = i + 1
Next
C'est quoi ces lignes?? o_O . Voici un exemple de comment on rempli une ListBox

VB:
Private Sub UserForm_Initialize()
Dim i As Long, j As Long
 
    ListBox1.ColumnCount = 7
    ListBox1.ColumnWidths = "50;80;50;60;50;70;50"  

    For i = 1 To 20
        'Ajoute une ligne et insère une donnée dans la colonne de gauche
        ListBox1.AddItem "Ligne" & i
     
        'Ajoute des données dans les colonnes de droite
        For j = 1 To 7
        ListBox1.List(ListBox1.ListCount - 1, j) = i & j
        Next j
     
    Next i
End Sub
 
Dernière édition:

JCGL

XLDnaute Barbatruc
Bonjour à tous,

Lone-Wolf écrit :
Modifie aussi [A65000] par Range("a" & Rows.Count). À quoi ça te sert d'aller jusqu'à 65000, quand tu as à peine 1000 lignes remplies??

Rows.count ne compte pas les lignes renseignées... mais toutes les lignes disponibles soit 1 048 576 pour notre ami

A+ à tous
 

kaid

XLDnaute Occasionnel
Dim i As Byte, j As Byte
Dim Tablo
With ListBoxLocataire
.ColumnCount = 16
.ColumnWidths = "130 ;80 ;200 ;100 ;80 ;80 ;100 ;0;0;0;0;0;0;0;0;0 "
Tablo = Range("A1:p" & Range("a" & Rows.Count).End(3).Row)
For i = 1 To 20

ListBoxLocataire.AddItem "Ligne" & i



For j = 1 To 7
ListBoxLocataire.List(ListBoxLocataire.ListCount - 1, j) = i & j
Next j

Next i
End With
 

Lone-wolf

XLDnaute Barbatruc
Re Jean Claude

Et moi qui était persuadé du contraire. :oops: Mais quoi qui l'en soit, il parait qu'il faut mettre Rows.Count au lieu de 65000.

@kaid

VB:
Private Sub UserForm_Initialize()
    Dim i As Long, j As Long, derlig As Long
    Dim ws As Worksheet
   
    Set ws = Sheets("BD")
    derlig = ws.Cells(Rows.Count, 1).End(xlUp).Row

    On Error Resume Next
    With ListBoxLocataire
        .ColumnCount = 15
        .ColumnWidths = "130;80;200;100;80;80;100;0;0;0;0;0;0;0;0"
       
        For i =2 To derlig
        .AddItem ws.Cells(i, 1)
       
        For j = 1 To 15
        .List(ListBoxLocataire.ListCount - 1, j) = ws.Cells(i, j)
        Next j
        Next
    End With
 

Lone-wolf

XLDnaute Barbatruc
Re kaid

Ton fichier en retour. J'ai supprimé les appels des combos(Init_Combos). Il faudra supprimer la macro, mettre dans une feuille ou directement dans le formulaire les textes pour toutes les combos. Supprimer Option compare texte, par-ce que si tu as deux ou trois textes, c'est inutile et ne vois pas l'utilité de faire une macro pour si peu. Faire par exemple

With RechercheC1
.AddItem xxxx
.AddItem yyyy
.AddItem zzzz
End With

Oubien

With ws
derlig = .Range("a" & Rows.Count).End(xlUp).Row

For i = 2 To derlig
RechercheC1.AddItem .Range("a" & i)
Next i
End With

Je ne pense pas que ce soit trop penible.
 

Pièces jointes

  • FG-2.xlsm
    207.2 KB · Affichages: 43
Dernière édition:

kaid

XLDnaute Occasionnel
j'ai supprimer la macro (InitCombo).
et j'ai mis dans toutes les combo:
With ws
derlig = .Range("a" & Rows.Count).End(xlUp).Row

For i = 2 To derlig
RechercheC1.AddItem .Range("a" & i)
Next i
End With
est ce que je dois appeler la procedure "call rechercher".
 

kaid

XLDnaute Occasionnel
j'ai supprimer la macro ( init_combo) et "option compart texte" aussi.
et j'ai mis dans toutes les combo :
With ws
derlig = .Range("a" & Rows.Count).End(xlUp).Row

For i = 2 To derlig
RechercheC1.AddItem .Range("a" & i)
Next i
End With
est ce que je dois appeler la procedure "call rechercher" ?
 

Discussions similaires

Réponses
15
Affichages
476
Réponses
10
Affichages
209

Statistiques des forums

Discussions
312 082
Messages
2 085 171
Membres
102 805
dernier inscrit
emes