Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

fonction personalisé en VBA avec formule CTXT

gonz19

XLDnaute Occasionnel
bonjour a tous,

Je viens solliciter votre aide .
J'ai créer une fonction personnalisée : =soustotalspe("A";"C")
La colonne C est la colonne dont je veux la somme, la colonne A est la colonne qui comporte les titres;
la fonction fait la somme de l'emplacement de la cellule ou ce trouve la fonction jusqu'à la première valeur de la colonne A.


Code:
Public Function soustotalspe(reference As Variant, colonne As Variant)
Dim AD, R1 As Double, ADB As Variant

Application.Volatile
soustotalspe = ""
AD = Application.ThisCell.Row

soustotalspe = 0
R1 = Range(reference & AD).End(xlUp).Row
i = 0

For i = R1 + 1 To AD - 1
soustotalspe = soustotalspe + Cells(i, colonne).Value
Next i

End Function

Je voudrais ajouter un détail à ma fonction personnalisée. Je souhaiterais que le résultat sois sous forme de texte (non pris en charge dans une formule somme).
Cela reviendrai a écrire la formule =CTXT(soustotalspe("A";"C")) qui fonctionne
Je trouve dommage d'écrire quelque chose de si long en ayant créer une fonction personnalisé.

J'ai bien essayé de rajouter un .fixed dans la fonction mais je n'arrive pas a l'intégrer.

merci de votre aide
 

Pièces jointes

  • Capture.PNG
    8.2 KB · Affichages: 57
  • Capture.PNG
    8.2 KB · Affichages: 60

Bebere

XLDnaute Barbatruc
Re : fonction personalisé en VBA avec formule CTXT

bonjour Gonz,Lone-wolf
bienvenue
déclarer la fonction as string
 

CPk

XLDnaute Impliqué
Re : fonction personalisé en VBA avec formule CTXT

Bonjour à toutes et à tous.
Gonz19, avez-vous essayé d'indiquer une valeur de retour string pour la fonction ? je ne suis pas sur de son résultat mais c'est à experimenté

Public Function soustotalspe(reference As Variant, colonne As Variant) as string
 
Dernière modification par un modérateur:

Dranreb

XLDnaute Barbatruc
Re : fonction personalisé en VBA avec formule CTXT

Bonjour.
Pourquoi ne rajouteriez vous pas tout simplement As String derrière votre instruction Function ?

Edit: Désolé, ça m'est venu d'un coup en songeant à pleins d'autres détails qui ne me semblaient pas optimums dans cette fonction, et j'ai envoyé aussitôt sans vérifier si quelqu'un avait eu la même idée.
 
Dernière édition:

gonz19

XLDnaute Occasionnel
Re : fonction personalisé en VBA avec formule CTXT

effectivement la solution marche parfaitement. tant de recherche et de prise de tête pour un As String.
merci a vous de votre aide si rapide
 

Dranreb

XLDnaute Barbatruc
Re : fonction personalisé en VBA avec formule CTXT

Et puis ça marcherait pas de faire :
VB:
SousTotalSpe = WorksheetFunction.Sum(Range(Cells(R1 + 1, colonne), Cells(AD - 1, colonne)))
histoire de réduire le nombre d'accès aux cellules ?

Bonjour Lone-wolf.
 

Dranreb

XLDnaute Barbatruc
Re : fonction personalisé en VBA avec formule CTXT

As Variant fonctionne aussi.
Ah non ! En toute bonne logique ça renverra du Variant/Double et non du Variant/String comme bizarrement exigé !
Maintenant il se peut qu'Excel convertisse en nombre de toute façon. Et dans ce cas, oui, c'est mieux.
 
Dernière édition:

Discussions similaires

  • Résolu(e)
Microsoft 365 Formule
Réponses
3
Affichages
235
  • Résolu(e)
Microsoft 365 Formule
Réponses
3
Affichages
301
Réponses
20
Affichages
659
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…