Bonjour le forum,
Voilà j'ai 3 colonnes (A,B et D) avec environ 1500 lignes, le voudrai remplir une listview qui est sur une form avec ces données.

Ce code ne me remplit que la 1ère colonne
Je vous présente mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
Dim nbfonction As Integer, i As Integer
 
nbfonction = Sheets("Qualifs").Range("F1").Value
 
ListView4.ColumnHeaders.Clear
ListView4.ListItems.Clear
 
'Alimentation des titres de colonne :
ListView4.ColumnHeaders.Add , , "Code diplôme", 80, lvwColumnLeft
ListView4.ColumnHeaders.Add , , "Domaine", 60, lvwColumnCenter
ListView4.ColumnHeaders.Add , , "Filière", 60, lvwColumnCenter
ListView4.ColumnHeaders.Add , , "Libellé diplôme", 160, lvwColumnCenter
 
ListView4.SortOrder = lvwAscending
ListView4.Sorted = True
ListView4.SortKey = 0
 
Dim txtA As String, txtB As String, txtC As String, txtD As String
 
For i = 2 To nbfonction + 1
    txtA = Sheets("Qualifs").Range("A" & i).Value
    ListView4.ListItems.Add i - 1, , CStr(txtA) 'COLONNE 1
 
    txtB = Sheets("Qualifs").Range("B" & i).Value
    ListView4.ListItems(i - 1).SubItems(1) = CStr(txtB) 'COLONNE 2
 
    txtC = Sheets("Qualifs").Range("C" & i).Value
    ListView4.ListItems(i - 1).SubItems(3) = CStr(txtC) 'COLONNE 3
    ListView4.Refresh
Next i
Ce code par contre fonctionne mais est incroyablement long (car il effectue une boucle par colonne) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
Dim nbfonction As Integer, i As Integer
nbfonction = Sheets("Qualifs").Range("F1").Value
 
ListView4.ColumnHeaders.Clear
ListView4.ListItems.Clear
 
'Alimentation des titres de colonne :
ListView4.ColumnHeaders.Add , , "Code diplôme", 80, lvwColumnLeft
ListView4.ColumnHeaders.Add , , "Domaine", 60, lvwColumnCenter
ListView4.ColumnHeaders.Add , , "Filière", 60, lvwColumnCenter
ListView4.ColumnHeaders.Add , , "Libellé diplôme", 160, lvwColumnCenter
 
ListView4.SortOrder = lvwAscending
ListView4.Sorted = True
ListView4.SortKey = 0
 
Dim txtA As String, txtB As String, txtC As String, txtD As String
 
For i = 2 To nbfonction + 1
    txtA = Sheets("Qualifs").Range("A" & i).Value
    ListView4.ListItems.Add i - 1, , CStr(txtA)
    ListView4.Refresh
Next i
 
For i = 2 To nbfonction + 1
    txtB = Sheets("Qualifs").Range("B" & i).Value
    ListView4.ListItems(i - 1).SubItems(1) = CStr(txtB)
    ListView4.Refresh
Next i
 
For i = 2 To nbfonction + 1
    txtC = Sheets("Qualifs").Range("C" & i).Value
    ListView4.ListItems(i - 1).SubItems(3) = CStr(txtC)
    ListView4.Refresh
Next i
Alors pourquoi l'un fonctionne et pas l'autre ?
Merci de m'éclairer.