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 !!!
Sub Test()
With Sheets("Feuil1").ListObjects("Tableau1")
.ListRows.Add
.Range.Cells(.ListRows.Count + 1, 1).Resize(, 2) = Array(Label1, ComboBox1)
End With
End Sub
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
With [Tableau1].ListObject
.ListRows.Add
.ListColumns("Titre Colonne").Range.Cells(.ListRows.Count + 1, 1).Resize(, 2) =
Array(Label1, ComboBox1)
End With
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 :