Je me lance dans les tableaux structurés

Pounet95

XLDnaute Occasionnel
Bonjour,
A la lecture de nombreux fils sur le forum, je découvre les tableaux structurés.
J'essaie donc d'adapter le code VBA qui me permet à partir de contrôles sur un USF de mettre à jour un tableau.
J'utilise le code joint, mais je trouve que l'utilisation de Cells(lig,1) par exemple n'est pas cohérente avec "l'esprit" du tableau structuré.
Y a-t-il une syntaxe plus appropriée pour le transfert des données USF vers la ligne ajoutée au tableau.

PS : j'ai téléchargé les tutos de P. Fauconnier mais n'ai pas trouvé mon bonheur pour cette adressage de cellules.
Il parle d'un opus 3 mais où est-il ?
Merci de me dire

VB:
Sub Test()
    'Enregistrer
    With Sheets("Feuil1").ListObjects("Tableau1")
        .ListRows.Add
        lig = .ListRows.Count + 1

        Cells(lig, 2) = ComboBox.Value
        Cells(lig, 1) = Label1.Caption
        Tri_Tableau1
    End With
End Sub
 

Pounet95

XLDnaute Occasionnel
Re bonjour,
Mille excuses pour le dérangement jmfmarques. C'est un des effets du confinement ?
Curieux que tu n'aies jamais lu ou vu ses travaux pourtant nombreux sur Excel entre autres !
Par principe, quand j'utilise les outils créés par des tiers, j'essaie de les nommer ou a minima dire merci.

Sinon merci Chris
Je pensais que l'adressage était plus facile. Là ça me paraît plus compliqué puisqu'il faut mettre tout un laïus devant le Cells !!!
 

job75

XLDnaute Barbatruc
Bonjour Pounet95, jmfmarque, chris,

Ceci est bien simple :
VB:
Sub Test()
With Sheets("Feuil1").ListObjects("Tableau1")
    .ListRows.Add
    .Range.Cells(.ListRows.Count + 1, 1).Resize(, 2) = Array(Label1, ComboBox1)
End With
End Sub
A+
 
Dernière édition:

chris

XLDnaute Barbatruc
RE
Sinon merci Chris
Je pensais que l'adressage était plus facile. Là ça me paraît plus compliqué puisqu'il faut mettre tout un laïus devant le Cells !!!
Le but n'était pas forcément de faire simple mais de rendre le code plus lisible en indiquant le nom des colonnes
Par ailleurs Z = y.Range.Row - .Range.Row + 1
trouve automatiquement la bonne ligne contrairement à
lig = .ListRows.Count + 1 (ton code)
ou
.Range.Cells(.ListRows.Count, 1).Resize(, 2) (proposé par job75)
qui ne marchent que si le tableau commence en ligne 1

Enfin pour le With cette syntaxe est plus courte
With [Tableau1].ListObject
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, Pounet95, jmfmarques, job75, chris

Normalement ceci peut suffire*
VB:
Sub Test()
Sheets("Feuil1").ListObjects("Tableau1").ListRows.Add.Range = Array(Label1, ComboBox1)
End Sub
*: si le tableau ne contient que deux colonnes.
PS: voir le fil d'Ananas94 ou j'ai eu l'occasion de tâter du ListObject
 

job75

XLDnaute Barbatruc
Re, salut JM,
qui ne marchent que si le tableau commence en ligne 1
Le code que j'ai donné fonctionne quelle que soit la position du tableau.

Quant au code du post #8 de JM il y a problème si le tableau a plus de 2 colonnes, il faut le compléter :
VB:
Sheets("Feuil1").ListObjects("Tableau1").ListRows.Add.Range.Resize(, 2) = Array(Label1, ComboBox1)
A+
 
Dernière édition:

Pounet95

XLDnaute Occasionnel
Bonsoir,
J'espère que je n'ai pas semé la zizanie ?
Pour vous rassurer ( et éventuellement vous réconcilier :)) , j'ai fait avec vos codes et ça fonctionne pile poils.
J'ai poussé le vice jusqu'à déplacer le tableau en insérant des lignes au dessus et des colonnes à droite. No problem !!!!
J'en ai profité pour comprendre pourquoi mon code initial ne marchait que si le tableau commençait en ligne 1.
Merci de me permettre de me coucher moins bête dans quelques heures.
 

Staple1600

XLDnaute Barbatruc
Re, salut JM,
Le code que j'ai donné fonctionne quelle que soit la position du tableau.
Quant au code du post #8 de JM il y a problème si le tableau a plus de 2 colonnes, il faut le compléter :
VB:
Sheets("Feuil1").ListObjects("Tableau1").ListRows.Add.Range.Resize(, 2) = Array(Label1, ComboBox1)
A+
* dans le message #8 (au dessus du PS) précisait les conditions où il n'y aura pas de problème ;)
•>Job75
Merci pour le complément.
 

Discussions similaires

Statistiques des forums

Discussions
312 099
Messages
2 085 269
Membres
102 845
dernier inscrit
Baticle.geo