Tableau structuré userform insertion d'une formule

Bonjour le forum,

Je rempli un tableau structuré à l'aide d'un UserForm. Ceci fonctionne correctement.

J'aimerais maintenant calculer le solde pour chaque ligne introduite et pour chaque nouvelle ligne. J'ai inséré la formule suivante dans la colonne <solde>

F5 =SOMME($E$5:[@payé])-SOMME($D$5:[@dû])

mais lorsque j'introduis la première ligne via l'UserForm, j'obtiens un résultat inattendu. En effet, elle se place dans la ligne d'en dessous de la ligne où se trouve la formule, en <B6>, au lieu de la ligne <B5>.

De plus, la formule n'est pas diffusée dans les lignes suivantes.

En pièce jointe un extrait de mon projet. Où est le problème? Pourriez-vous m'aider? Merci d'avance.

16003a-test.xlsm (24.93 Ko)

Jorge

Bonjour,

Vous semblez avoir un bon niveau en VBA c'est pourquoi je vais simplement vous expliquer le problème. Si vous voulez je pourrais vous renvoyer votre code mais je pense que vous pouvez le corriger tout seul.

C'est normal que la ligne s'insère en-dessous :

Vous utilisez ListRows.Add, et vous mettez vos valeurs dans cette nouvelle ligne. Pour remplir la 1e ligne, deja existante mais vide, il faut faire un petit test :

If ListRows.Count < 2 Then : on remplit la ligne actuelle

Else : on ajoute une ligne (ListRows.Add) et on reprend votre code.

Pour gérer ces deux cas on pourrait créer une petite variable Range qui va s'appeler "maLigne" et qui selon le cas, va prendre la valeur de la première ligne du tableau, ou de la ligne insérée.

Ensuite pour la formule, vérifiez bien que la formule est activée pour toute la colonne. Dans le fichier que vous avez joint ce n'étais pas le cas. En la re-validant, elle s'est étendue sur la 2e ligne. Et l'ajout d'une nouvelle ligne étend bien la formule.

Alternativement vous pouvez forcer la copie de la formule sur tout la colonne avec Range.FillDown method (Excel) | Microsoft Learn.

Bonjour,

Merci pour votre rapide réponse. Je vais m'atteler à la tâche.

Je reviendrais vers vous si nécessaire.

Bonne après-midi.

Bonjour,

Tout d'abord, dans votre feuille DataBase, vous saisissez votre formule en F5 et ensuite vous supprimez toutes les lignes de votre tableau. Votre formule sera néanmoins conservée.

Ensuite vous modifiez votre procédure ainsi

Private Sub WriteRecord()
    Dim Arr(4), Lrow As ListRow, ID&  '* Arr(4) = nombre de colonnes du TS

    ID = Application.Max(TS.ListColumns(1).Range) + 1
    Set Lrow = TS.ListRows.Add

    Arr(0) = ID             '* iD, numéro identifiant
    Arr(1) = tb1            '* libellé
    Arr(2) = Val(tb2)       '* montant dû
    Arr(3) = Val(tb3)       '* montant payé

    Lrow.Range.Resize(, 4).Value = Arr

ci-joint votre fichier modifié :

24003b-test.xlsm (29.42 Ko)

Vous semblez avoir un bon niveau en VBA c'est pourquoi je vais simplement vous expliquer le problème. Si vous voulez je pourrais vous renvoyer votre code mais je pense que vous pouvez le corriger tout seul.

Saboh12617 : Merci pour votre appréciation mais en réalité je ne suis qu'un bricoleur en VBA. J'ai essayé plusieurs choses à partir de vos commentaires mais rien n'y fait.

thev : J'ai suivi les indications et apporté les modifications suggérées ... et ça marche!

Un grand merci à vous deux et bonne soirée.

Rechercher des sujets similaires à "tableau structure userform insertion formule"