Par quoi remplacer listobject

Bonjour

Lorsque cette procédure(fournie par Theze le 14/04) est lancée, j'ai ce message "Erreur de compilation - Type défini par l'utilisateur non défini"

En retapant ces instructions en minuscules, je me suis aperçu que "listobject" ne se modifie pas pour devenir "ListObject".

L'aide F1 m'indique "mot clé introuvable", j'en conclus que ma version d'Excel (2003) ne prend pas en compte ce terme.

Peut-on le remplacer pour obtenir un résultat ?

Merci

Private Sub UserForm_Activate()

Region.RowSource = Tbl.DataBodyRange.Address

Bonjour

Sur Excel 2002 cela n'existait pas...

Les listes sont apparues sur 2003...

Il aurait été plus simple de rester sur le fil en question car là on ne sait de quel code tu parles...

..qu'entends tu par "de quel code tu parles.."?

RE

Le code que tu affiches n'est pas tout seul : de quel fil de discussion, donnant le contexte, vient-il

Bonjour,

Les tableaux Excel (ListObjects) apparaissent avec Excel 2007, tu ne peux donc en utiliser ni y faire référence sur une version antérieure.

Par quoi le remplacer ? Un tableau constitué par une plage ordinaire, nommée (de façon dynamique ou non selon le cas, et nommée entièrement ou partiellement selon utilisation).

Ton fichier permettra de voir quelles solutions sont les mieux adaptées.

Cordialement.

Re

Les tableaux Excel (ListObjects) apparaissent avec Excel 2007

non 2003 , même si les propriétés étaient nettement plus limitées https://msdn.microsoft.com/fr-fr/library/office/aa174247(v=office.11).aspx

..voilà la totalité .... c'est une solution qui m'avait été proposée à ma demande pouvoir inscrire une donnée absente dans une combo..mais qui coince pour un problème de version...

merci pour votre patience...

Private Sub UserForm_Activate()

Re

Il serait bien d'utiliser la balise code . Merci...

Toujours pas de lien vers le fil d'origine...

Re,

Il y a certes une filiation entre les Listes sous 2003 et les Tableaux Excel à partir de 2007, mais les modifications sont telles que si tu dois travailler sur une version antérieure à 2007 il convient de substituer un autre dispositif au tableau concerné...

Le fichier est nécessaire pour travailler en connaissance de cause !

Cordialement.

....désolé de ce contretemps...

20theze2.zip (14.49 Ko)

Une proposition à étudier.

Cdlt.

11theze2.zip (19.88 Ko)
Option Explicit

Dim ws As Worksheet
Dim Plage As Range

Private Sub UserForm_Activate()
    Set ws = ActiveWorkbook.Worksheets("Feuil1")
    Set Plage = ws.Range("_Région")
    cboRegion.RowSource = Plage.Address
End Sub

Private Sub CommandButton1_Click()
    ws.Cells(3).Value = cboRegion.Text
End Sub

Private Sub cboRegion_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim cel As Range, lig As Long
    Set cel = Plage.Find(cboRegion.Text, , xlValues, xlWhole)
    If Not cel Is Nothing Then Exit Sub
    With ws
        lig = .Cells(Rows.Count, 1).End(xlUp).Row + 1
        .Cells(lig, 1).Value = cboRegion.Text
        .Cells(1).Sort key1:=.Cells(2, 1), order1:=xlAscending, Header:=xlYes
    End With
    cboRegion.RowSource = ws.Range("_Région").Address
End Sub

Bonjour,

Salut Jean-Eric ! Heureux de te croiser en ce 1er mai !

jpmalb : la solution de Jean-Eric devrait répondre à tes attentes !

Bonne journée à tous.

Re,

Bonjour MFerrand,

Et moi, très content de te revoir parmi nous.

Cdlt.

Bonjour

peux être plus simple pour toi

tester sur 2002 & 2010

A toi de voir

A+

Maurice

4theze2.zip (14.87 Ko)

...merci, Jean-Eric, de me proposer une solution..

...mais lorsque je lance la procédure en pas à pas détaillé, j'ai le message d'erreur suivant à la ligne - 'set plage=ws.Range("_Région")' : "Erreur d'exécution 1004" -erreur définie par l'application ou par l'objet -

Ce terme "_Région" fait référence à quoi ?

...et pourquoi le tiret de soulignement devant ce mot ?

Re,

Pourquoi donc du pas à pas détaillé ? Tu avais une erreur ?

NB- Tu peux supprimer la mention "ws." devant Range, le nom de la plage est dans le classeur...

Cordialement.

..pas à pas détaillé... 1) pour voir la progression de la procédure .. je débute...

2) il y a effectivement une erreur...

Tu dis que tu as une erreur dans le pas à pas détaillé. Est-ce que l'erreur se produit en exécution normale ?

...bon , en "tâtonnant", ......peut-être pas de façon très académique mais ça marche....je suis arrivé à ce que je voulais....... et ça retrie la liste dès qu'un nouvel article est rajouté ..

Merci pour votre aide

10sanslistobject.zip (13.79 Ko)

Bonjour

Tu as oublié de regarder le nom défini par Jean-Eric. Quand on n'a pas de tableau (ListObject) on utilise les bonnes vieilles méthodes : plage nommé fixe ou dynamique (dynamique ici car tu allonges ta liste).

Toujours penser au gestionnaire de noms...

Rechercher des sujets similaires à "quoi remplacer listobject"