XL 2010 Modifier ou Ajouter ligne ListOject

cathodique

XLDnaute Barbatruc
Bonjour,

Je voudrai ajouter ou modifier des lignes d'un tableau structuré via un formulaire.
J'utilise ce bout de code qui plante sur la ligne indiquée dans le code
VB:
With Range("TbCoordonnee")
      With .ListObject
         If BtValider.Caption = "MODIFIER" And TxtNoLig <> "" Then
            Set Lig = TxtNoLig 'plante ici'
         Else
            Set Lig = .ListRows.Add
         End If
         ''
         .ListColumns("Id_Person").DataBodyRange(Lig.index) = Txt_IdPerson
         'etc...
      End With
   End With

Je n'arrive pas à trouver la bonne syntaxe pour utiliser la même variable pour cibler la bonne ligne.

En vous remerciant.
 
Solution
Bonjour,

Messieurs, je vous remercie.
En lisant vos réponses, surtout celle de @mapomme , j'ai la certitude que j'ai très mal exposé mon problème.
Bien souvent, c'est ce genre de réponse qui me fait regretter de m'être précipité d'ouvrir une discussion.

@Phil69970 , je n'ai pas encore ouvert ton fichier. Je le consulterai après avoir fini de vous répondre. Je suis ouvert à toute proposition. Merci.

@Dranreb : Je te l'avais promis de faire un effort pour essayer de comprendre et utiliser tes modules de services. Je n'ai pas encore un bon niveau d'où l'indigence plussoyée des éléments fournis à mon premier post.
Mon cher @Dranreb , je te réitère ma promesse de me mettre à tes modules de service.

Voici ma...

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @cathodique ;),

Quelle indigence quant aux éléments fournis !!! :eek:
  • Aucune mention de l’erreur (ni l'intitulé ni le numéro) qui se produit
  • Quelles sont les types de variables TxtNoLig et Lig ?
  • Que représente la variable Lig et la variable TxtNoLig ?
  • Que contient la variable TxtNoLig ?
  • Si vous utilisez Set alors Lig et TxtNoLig doivent être des objets
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Mais bon sang utilisez donc mon objet CommboBoxLiées: il aplanit toutes les problèmes et apporte des mises au point hyper-rapides. Lorsqu'une ligne existe il communique son numéro de ListRow à l'UserForm via l'évènement BingoUn. Son évènement Change se produit d'abord et indique combien de lignes correspondent. Vous pouvez y mettre à 0 une variable que j'appelle généralement LCou.
C'est le même bouton qui sert à modifier ou ajouter une ligne selon que LCou > 0 ou non.
La collection ListRows est reprise par l'objet en tant que propriété Lignes.
Donc ça donne toujours à peu près les même code :
Code:
CAs.ValeursVers TVL
If LCou = 0 then
   CLs.ValeursVers TVL
   CLs.Lignes.Add.Range.Value = TVL
   CLs.Actualiser
Else
   CLS.Lignes(LCou).Range.Value = TVL
   End If
 

cathodique

XLDnaute Barbatruc
Bonjour,

Messieurs, je vous remercie.
En lisant vos réponses, surtout celle de @mapomme , j'ai la certitude que j'ai très mal exposé mon problème.
Bien souvent, c'est ce genre de réponse qui me fait regretter de m'être précipité d'ouvrir une discussion.

@Phil69970 , je n'ai pas encore ouvert ton fichier. Je le consulterai après avoir fini de vous répondre. Je suis ouvert à toute proposition. Merci.

@Dranreb : Je te l'avais promis de faire un effort pour essayer de comprendre et utiliser tes modules de services. Je n'ai pas encore un bon niveau d'où l'indigence plussoyée des éléments fournis à mon premier post.
Mon cher @Dranreb , je te réitère ma promesse de me mettre à tes modules de service.

Voici ma solution
VB:
Dim Lig as Listrows

With Range("TbCoordonnee")
      With .ListObject
         If BtValider.Caption = "MODIFIER" And TxtNoLig <> "" Then
            Set Lig = .ListRows(Val(TxtNoLig)) 'ne plante plus'
         Else
            Set Lig = .ListRows.Add
         End If
         ''
         .ListColumns("Id_Person").DataBodyRange(Lig.index) = Txt_IdPerson
         'etc...
      End With
   End With

Encore merci.

Bonne fin d'après-midi.
 

Discussions similaires

Statistiques des forums

Discussions
315 094
Messages
2 116 150
Membres
112 670
dernier inscrit
Flow87