Je me lance dans les tableaux structurés

  • Initiateur de la discussion Initiateur de la discussion Pounet95
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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 !!!
 
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:
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
 
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
 
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:
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.
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour