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

Recherche dans première colonne d'un tableau structuré

Galaktus

XLDnaute Nouveau
Bonsoir le forum,

Quelqu'un connait la syntaxe à utiliser pour rechercher uniquement dans la première colonne d'un tableau structuré ?

Je m'explique, je travaille sur un fichier ou j'alimente une combobox avec le code suivant :

Userform.Combobox.List = Application.Transpose(Sheets("Feuil1").Range("A:A NomDuTableau"))

Je recherche dans "NomDuTableau" qui couvre une plage A à D et en fait si je n'ai qu'une seule ligne dans ce tableau (plus la ligne des en têtes) le code ne fonctionne pas, excel me renvoi l'erreur suivante "Impossible de définir la propriété list. Index de table de propriétés non valide"

Je précise qu'il me faut uniquement le contenu de la colonne A

Merci à tout ceux qui voudront m'aider

Bonne soirée à vous
 

Staple1600

XLDnaute Barbatruc
Bonsoir

Fonctionne chez moi
NB: Adapter le nom du ListObject
VB:
Private Sub UserForm_Initialize()
Me.ComboBox1.List = Application.Transpose(ActiveSheet.ListObjects("Tableau1").ListColumns(1).DataBodyRange)
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Bah, moi j'ai testé avec un tableau avec plusieurs lignes
Pour moi, un tableau avec une seule ligne, c'est un tableau vide
La ligne 1 correspondant aux entêtes.

Dans ce cas il suffit d'ajouter une gestion d'erreur, non ?
 

Staple1600

XLDnaute Barbatruc
Re

C'était pas très compliqué, non ?
VB:
Private Sub UserForm_Initialize()
If ActiveSheet.ListObjects("Tableau1").DataBodyRange.Rows.Count = 1 Then
Me.ComboBox1.AddItem ActiveSheet.ListObjects("Tableau1").DataBodyRange(1, 1)
Else
Me.ComboBox1.List = Application.Transpose(ActiveSheet.ListObjects("Tableau1").ListColumns(1).DataBodyRange)
End If
End Sub
 

Galaktus

XLDnaute Nouveau
Je vais poster le fichier c'est plus simple,

Alors pour comprendre ca se passe dans l'onglet "Liste référence diamant", tu lance la macro avec le bouton "Go" présent sur la feuille

Sur cette feuille il y a une trentaine de tableaux distinct (je recherche le tableau voulu à l'aide d'une variable)
Tu verras que j'ai plusieurs ligne sur le tableau "A1" mais ca ne fonctionne pas non plus

D'avance je m'excuse si dans le module concerné c'est encore un peu le fouilli, c'est en cours de développement et pas encore finaliser :/
 

Pièces jointes

  • Gestion meules - diamants H1 - H2 - H3 - Copie.xlsm
    181.1 KB · Affichages: 22

Staple1600

XLDnaute Barbatruc
Re

Il suffit de préciser le nom de la feuille dans le code
Si la feuille s'appelle toto, alors on écrira:
VB:
Private Sub UserForm_Initialize()
'NB: Penser à  adapter le nom de la feuille et le nom du tableau devant remplir le ComboBox
If Sheets("toto").ListObjects("Tableau1").DataBodyRange.Rows.Count = 1 Then
Me.ComboBox1.AddItem Sheets("toto").ListObjects("Tableau1").DataBodyRange(1, 1)
Else
Me.ComboBox1.List = Application.Transpose(Sheets("toto").ListObjects("Tableau1").ListColumns(1).DataBodyRange)
End If
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Bah Excel t'a déjà dit où était l'erreur, non ?
Userform.Combobox.List = Application.Transpose(Sheets("Feuil1").Range("A:A NomDuTableau"))
le code ne fonctionne pas, excel me renvoi l'erreur suivante "Impossible de définir la propriété list. Index de table de propriétés non valide"
C'est donc que ta syntaxe n'était pas valide.

La mienne l'est
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…