listview problème! Besoin de vos lumières

  • Initiateur de la discussion Initiateur de la discussion Guest
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

G

Guest

Guest
Bonjour,

j'ai une erreur d'execution35600 sur un listview
ci dessous mon code

Private Sub UserForm_Initialize()

Dim rg As Range
Dim n As Integer, i As Integer

Set rg = [D7]
n = 4

With Me.ListView1
For i = 1 To n
.ColumnHeaders.Add , , rg.Offset(0, i - 1)
Next i

Set rg = [D7]

Do Until IsEmpty(rg)
.ListItems.Add , , rg
For i = 1 To n
.ListItems(rg.Row - 3).ListSubItems.Add , , rg.Offset(0, i)
Next i

Set rg = rg.Offset(1, 0)
Loop

.FullRowSelect = True
.MultiSelect = True
.View = lvwReport

End With


End Sub


Private Sub CommandButton1_Click()
Dim i As Integer
Dim rg As Range

With UserForm1.ListView1
For i = 1 To .ListItems.Count
If .ListItems(i).Selected = True Then
Set rg = Range("D65536").End(xlUp).Offset(1, 0)

rg = .ListItems(i)
rg.Offset(0, 1) = .ListItems(i).ListSubItems(2)
rg.Offset(0, 2) = .ListItems(i).ListSubItems(3)

End If

Next i

End With
End Sub

Avez vous une idée sur mon problème?

Merci Beaucoup
 
Re : listview problème! Besoin de vos lumières

Staple1600

Merci pour ta réponse, mais c'est pas mieux.

J'ai regardé un peut dans les Forums, j'ai l'impression que le problème provient de

rg = .ListItems(i)
rg.Offset(0, 1) = .ListItems(i).ListSubItems(2)
rg.Offset(0, 2) = .ListItems(i).ListSubItems(3)

qu'en penses tu?
 
Re : listview problème! Besoin de vos lumières

Re

ps d'idée , mais une suggestion
Ctipaplusbokomca1?
PS: Ah! j'oubliais le sempiternel refrain bla bla bla la charte bla bla, c'est mieux avec une PJ bla bla bla, on peut faire des tests si on a un fichier exemple bla bla bla.

Code:
Private Sub UserForm_Initialize()
Dim rg As Range
Dim n As Integer, i As Integer
Set rg = [D7]  
n = 4   
With Me.ListView1 
        For i = 1 To n
            .ColumnHeaders.Add , , rg.Offset(0, i - 1)
        Next i 
Set rg = [D7]   
    Do Until IsEmpty(rg)
        .ListItems.Add , , rg 
            For i = 1 To n
             .ListItems(rg.Row - 3).ListSubItems.Add , , rg.Offset(0, i)
            Next i
Set rg = rg.Offset(1, 0)   
        Loop
.FullRowSelect = True   
        .MultiSelect = True 
        .View = lvwReport      
End With
End Sub
Code:
Private Sub CommandButton1_Click() 
Dim i As Integer
Dim rg As Range
With UserForm1.ListView1 
For i = 1 To .ListItems.Count 
If .ListItems(i).Selected = True Then
Set rg = Range("D65536").End(xlUp).Offset(1, 0) 
rg = .ListItems(i)
rg.Offset(0, 1) = .ListItems(i).ListSubItems(2)
rg.Offset(0, 2) = .ListItems(i).ListSubItems(3)
End If
Next i
End With
End Sub
 
Dernière édition:
Re : listview problème! Besoin de vos lumières

Bonsoir,

Erreur identifié sur cette ligne de code.

Code:
.ListItems(rg.Row - 3).ListSubItems.Add , , rg.Offset(0, i)

ci joint, le fichier excel.

J'ai 3 colonne séparée, que je veux mettre dans une listview sans les rapprocher

Merci de votre aide
 

Pièces jointes

Re : listview problème! Besoin de vos lumières

bonjour Shakelife,Staple
Code:
Private Sub UserForm_Initialize()
Dim rg As Range
Dim n As Integer, i As Integer
Set rg = [D7]
'n = 4
With Me.ListView1
'        For i = 1 To n
            .ColumnHeaders.Add , , rg
            .ColumnHeaders.Add , , rg.Offset(0, 3)
            .ColumnHeaders.Add , , rg.Offset(0, 5)
'        Next i
Set rg = [D7]
    Do Until IsEmpty(rg)
        .ListItems.Add , , rg
'            For i = 1 To n
             .ListItems(.ListItems.Count).ListSubItems.Add , , rg
             .ListItems(.ListItems.Count).ListSubItems.Add , , rg.Offset(0, 3)
             .ListItems(.ListItems.Count).ListSubItems.Add , , rg.Offset(0, 5)
'            Next i
Set rg = rg.Offset(1, 0)
        Loop
.FullRowSelect = True
        .MultiSelect = True
        .View = lvwReport
End With
End Sub
à bientôt
 
Re : listview problème! Besoin de vos lumières

Bonjour

Il est préférable de mettre un With au niveau du add dans un list view
ca évite d'utiliser le Count qui représente toujours le dernier élément de la liste et non le dernier élément ajouté.
.ListItems(.ListItems.Count) devient facultatif



Code:
Do Until IsEmpty(rg)
        with .ListItems.Add (, , rg)
'            For i = 1 To n
             .ListSubItems.Add , , rg
             .ListSubItems.Add , , rg.Offset(0, 3)
             .ListSubItems.Add , , rg.Offset(0, 5)
'            Next i
         end with
Set rg = rg.Offset(1, 0)
        Loop

Il faut aussi tenir compte que le Add ne se fait pas nécessairement à la fin.
Le premier paramètre étant le paramètre d'indexation.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
910
Réponses
4
Affichages
521
Réponses
15
Affichages
784
Retour