Bonjour,

J'ai un petit problème de syntaxe.

Dans un userform je charge un range pour créer ma colonne de titre d'un listview.

Cela fonctionne quand je déclenche le userform depuis la feuille concernée
mais pas lorsque je l'appelle depuis une autre feuille
J'ai aussi essayé de désigner la ligne de titre du tableau, mais cela ne fonctionne pas non plus.
Je soupçonna que ma variable tblDB devrait etre plus proprement déclarée, mais j'ai essayé plusieurs type et ça ne fonctionne carrément plus.
de plus l'erreur est de type 1004 donc il de reconnait pas le range que je veux charger dans tblDB.

Alors que si j'utilise la selection range en dur cela fonctionne, mais comme le nombre de colonne peux varier, cela ne me convient pas.

MErci pour vos conseils
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
37
38
39
40
Me.ListView1.ListItems.Clear
With ListView1
        'Définit le nombre de colonnes et Entêtes
        With .ColumnHeaders
            'Supprime les anciens entêtes
            .Clear
            'Ajoute 2 colonnes en spécifiant le nom de l'entête
            'et la largeur des colonnes
            .Add , , "Titre ", 100
            .Add , , "Texte", 500
        End With
.Gridlines = True

Dim tblBD

With ThisWorkbook.Sheets("FNC")

' ne marche pas
'tblBD = ActiveSheet.ListObjects("Tableau1").HeaderRowRange '<== j'avais omis d'enlever Activesheet depuiis ca marche  (corrigé après avoir posté)
' ne marche pas
'tblBD = .Cells(Cells(1, 1), Cells(1, Colo))  'Colo = variable '<==nb de colonnes la syntaxe c'est .Range.(cells (a,b),cells(c,d)) mais ça ne fonctionne pas quand  c'est appelé depuis une autre feuille (corrigé après avoir posté)
' Fonctionne
 tblBD = .Range("A1:BE1")
 
End With
 
 Dim ligne
    ligne = 0
       For i = 1 To UBound(tblBD, 2)
         ligne = ligne + 1
        .ListItems.Add , , tblBD(1, i)
        .ListItems(ligne).ListSubItems.Add , , ThisWorkbook.Sheets("FNC").Cells(Maligne, i)   'tblBD(2, i)
        If .ListItems(ligne).Text = "N°_Avis" Then
        .ListItems(ligne).ListSubItems(1).ForeColor = vbRed
        End If
      Next i
   
End With
    ListView1.View = lvwReport
Merci
Denis