Bonjour à tous,
Tout d'abord je tiens à préciser que l'on va sûrement me conseiller de faire cela sous Excel et non VBA mais je n'ai pas le choix, c'est un projet d'études VBA obligatoirement.
Mon problème:
Je suis sur un userform qui remplit une base de données vendeurs sur ma feuille excel (code unique, nom, prénom, date de naissance etc...) chacun sur une ligne. La colonne G doit correspondre au pourcentage du nombre de transactions réalisées par le vendeur. Ces transactions sont résumées sur une autre feuille où figure évidemment le code du vendeur je me suis donc dit que je pouvais passer par une fonction personnalisée via un CountIf comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Function proportionDesVentes(sellerID As Variant, transacList As Range) As Double Application.Volatile Dim nombreapparition As Integer, totaltrans As Integer nombreapparition = Application.WorksheetFunction.CountIf(transacList, sellerID) totaltrans = Sheets("Liste des transactions").Cells(Rows.Count, 4).End(xlUp).Row - 1 proportionDesVentes = (nombreapparition) * 100 / (totaltrans) End Function
Ma fonction fonctionne parfaitement quand je l'utilise directement sur Excel comme une fonction basique. Néanmoins je souhaiterai que en validant mon userform la fonction s'applique automatiquement dans la cellule G pour la ligne que je crée ET que la formule apparaisse (pas juste le résultat). J'ai essayé ceci mais en vain après des heures à passer par des variables ou non je n'y arrive pas surtout que si je fais afficher une Msgbox avec contenu cela m'affiche bien le code unique mais pourquoi la fonction ne s'y applique pas?
Je vous remercie de m'apporter des éclairages!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 With Sheets ("Liste des vendeurs") 'récupère le code unique du vendeur qui est en colonne A et sur la ligne créée par l'userform contenu = Cells(Derlignevendeur + 1, 1).Value 'calcule le pourcentage du nombre total de ventes qu'il ou elle a réalisé .Cells(Derlignevendeur + 1, 7).FormulaLocal = "=proportionDesVentes(contenu ;'Liste des transactions'!D:D)" End With
Partager