selection avec range et tableaux structurés

rafi93

XLDnaute Occasionnel
bonjour
petit nouveau à VBA j'ai un souci avec les range

j'ai un tableau structuré dans Feuil1, avec comme noms de colonnes colA, colB, ...
je ne comprends pas pourquoi le 2eme select plante
comment faut il écrire pour selectionner la colonne colB du tableau ?

Sub test2()

Worksheets("Feuil1").Range("tableau").Select
Worksheets("Feuil1").Range("tableau[colB]").Select

End Sub

merci !
 

Staple1600

XLDnaute Barbatruc
Re : selection avec range et tableaux structurés

Bonjour à tous

rafi93
Juste une question: pourquoi veux-tu sélectionner ?
Car il est rarement utile de le faire en VBA.
(et il est même souvent ici (et ailleurs) conseillé d'éviter les Select et Activate)
 

rafi93

XLDnaute Occasionnel
Re : selection avec range et tableaux structurés

c'est bien ce que j'ai écrit, mais impossible de comprendre pourquoi ça ne marche pas dans mon cas
voir le code "test2()" dans fichier ci joint

merci !
 

Pièces jointes

  • test vba.xlsm
    18.3 KB · Affichages: 59
  • test vba.xlsm
    18.3 KB · Affichages: 45
  • test vba.xlsm
    18.3 KB · Affichages: 45

rafi93

XLDnaute Occasionnel
Re : selection avec range et tableaux structurés

en fait, je cherchais à lire/ecrire dans une colonne du tableau
comme je n'arrivais pas à adresser la zone, j'ai simplifié mon probleme en cherchant juste à le selectionner...
 

Staple1600

XLDnaute Barbatruc
Re : selection avec range et tableaux structurés

Re


Utilises les possibilités offertes par ListObject
(ci-dessous quelques exemples d'utilisation et on n'utilise pas de Selection)
Code:
Sub b()
With Sheets("Feuil1").ListObjects("Tableau1")
    MsgBox .DataBodyRange.Columns(2).Address
    MsgBox .DataBodyRange.Columns(2).Range("A1").Address
    MsgBox .DataBodyRange.Columns(2).Range("A3").Address
End With
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : selection avec range et tableaux structurés

Re

Il suffit d'essayer pour le savoir ;)
ou ne pas oublier ce que t'avais déjà suggéré Reguiero à minuit vingt cinq. ;)
Code:
Sub c()
MsgBox Range("Tableau1[colC]").Address
End Sub
 
Dernière édition:

rafi93

XLDnaute Occasionnel
Re : selection avec range et tableaux structurés

voici ce que j'obtiens, toujours le même probleme
je ne comprends pas pourquoi

precision : j'ai joué Sub(C) càd

Sub c()
MsgBox Range("Tableau[colC]").Address
MsgBox Worksheets("Feuil1").Range("Tableau[colC]").Address

End Sub

aussi bien la 1ere que la 2eme ligne plante idem
 

Pièces jointes

  • ScreenShot001.jpg
    ScreenShot001.jpg
    64 KB · Affichages: 95
  • ScreenShot001.jpg
    ScreenShot001.jpg
    64 KB · Affichages: 77
  • ScreenShot001.jpg
    ScreenShot001.jpg
    64 KB · Affichages: 78
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : selection avec range et tableaux structurés

Re


Dans ton fichier exemple testvba.xlsm, c'est Tableau1 et non pas tableau !
(comme le montraient mes précédents exemples)

Testes ceci pour t'en convaincre
Code:
Sub d()
MsgBox Sheets("Feuil1").ListObjects.Count
x = Sheets("Feuil1").ListObjects.Count
MsgBox Sheets("Feuil1").ListObjects(x).Name
End Sub
 
Dernière édition:

rafi93

XLDnaute Occasionnel
Re : selection avec range et tableaux structurés

en fait je viens de comprendre le pb

j'ai donné "manuellement" le nom "Tableau" à la plage qui inclut la ligne d'en tête (colA, etc), et que j'adresse dans mon code; ce qui me génère l'erreur

mais j'ai aussi par ailleurs selectionné la même plage puis "inserer>tableau" qui m'a créé automatiquement le nom "Tableau1", mais qui correspond à la plage sans les lignes d'en-tête.

j'apprends donc que le code VB travaille sur la plage sans les en-tête, et que je faisais une erreur en donnant manuellement le nom "Tableau" à l'ensemble de la plage.
 

Regueiro

XLDnaute Impliqué
Re : selection avec range et tableaux structurés

Bonsoir à Tous, rafi93

Ta référence "Tableau" = Plage Nommée

Tableau1 = Une collection Listobjects
Si tu veux sélectionner tableau1 depuis n'importe ou dans ton classeur
Il est nécessaire de préciser la feuille contenant l'objet.

Ce lien n'existe plus

A+
 

rafi93

XLDnaute Occasionnel
Re : selection avec range et tableaux structurés

merci pour ce lien, que je mets en Favoris !

une question : quand j'adresse un tableau (au sens Inserer>Tableau), je dois calculer son offset par rapport à la 1ere ligne de la feuille, avant de pouvoir lire ou écrire dans une cellule.

D = [Tableau[ColB]].Row - 1
For Each C In [Tableau1[ColB]]
Range("Tableau[ColB]").Cells(C.Row - D, 1).Value = "toto"

ce qui est assez lourd

comment faire pour que l'adresse de la cellule soit simplement relative, peu importe où se trouve le tableau ?
j'ai l'impression que Listobjects le permet, mais je n'en suis pas sur
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 869
dernier inscrit
radyreth