Modification d'une ligne précise de tableau ListObject

Sylvie_40

XLDnaute Nouveau
Bonjour à tous,

Je débute en VBA et je n’en maîtrise donc pas toutes les subtilités.
Voilà mon problème (du jour) : je dois automatiser la gestion d’un questionnaire de satisfaction utilisateurs.
Pour cela, j’ai créé un questionnaire dans une feuille [Questionnaire] d’un fichier Excel pour saisir les réponses des utilisateurs, et je consolide les résultats dans une autre feuille [Resultats] du même fichier. Les réponses sont stockées dans un tableau [T_Result]
J’ai réussi à alimenter mon tableau via le questionnaire avec ce code :

Sub Enregistrement()
Dim LR As ListRow

Worksheets("Resultats").Activate
Worksheets("Resultats").Range("A4").Select

With Sheets("Resultats").ListObjects("T_Result")

Set LR = Selection.ListObject.ListRows.Add(alwaysinsert:=True)
LR.Range.Cells(1, 1) = Range("Q_COLMAT").Value
LR.Range.Cells(1, 2) = Range("Q_COLNOM").Value
LR.Range.Cells(1, 3) = Range("Q_COLPNM").Value


End With
End Sub

(En réalité, mon questionnaire comporte 214 questions, les champs de la feuille Questionnaire sont tous nommés et préfixés par Q_).

Je voudrais maintenant pouvoir afficher certains questionnaires déjà enregistrés à partir de la ligne correspondante du tableau de résultats. J’ai réussi, mais en mettant par VBA des formules dans les champs du Questionnaire (du genre Recherchev dans T_Result), mais pas par VBA.

Et je voudrais surtout pouvoir modifier ces enregistrements dans mon tableau (affichage du résultat choisi dans la feuille Questionnaire, modification de certains champs, puis enregistrement de la ligne modifiée à sa place dans le tableau de résultats).
Ce que j’ai tenté (récupération, toujours via des formules de la « bonne ligne » du tableau, et paramètre alwaysinsert à False) ne fonctionne pas.
Le code ci-dessous provoque l’ajout d’une nouvelle ligne vide dans le tableau T_Result, et l’ajout de mes valeurs modifiées plus bas, en dehors du tableau.

Sub Mise_a_jour()
Dim LR As ListRow
Dim I As Integer

Worksheets("Resultats").Activate
Worksheets("Resultats").Range("A3").Select
Range("Q_NumLig").FormulaLocal = "=EQUIV(Q_COLMAT;T_Result[R_COLMAT];0)"
I = Range("Q_NumLig").Value
MsgBox (I)

With Sheets("Resultats").ListObjects("T_Result")
Set LR = Selection.ListObject.ListRows.Update(alwaysinsert:=False)
LR.Range.Cells(I, 1) = Range("Q_COLMAT").Value

Set LR = Selection.ListObject.ListRows.Add(alwaysinsert:=False)
LR.Range.Cells(I, 1) = Range("Q_COLMAT").Value
LR.Range.Cells(I, 2) = Range("Q_COLNOM").Value
LR.Range.Cells(I, 3) = Range("Q_COLPNM").Value

End With
End Sub

Quelqu’un aurait-il une idée ?
D’avance merci
Sylvie
 

Discussions similaires

Réponses
1
Affichages
233
Réponses
4
Affichages
413

Membres actuellement en ligne

Statistiques des forums

Discussions
314 499
Messages
2 110 249
Membres
110 711
dernier inscrit
chmessi