Sommation d'une colonne entre plusieurs devises

Bonjour à tous,

Dans le fichier suivant (extrait, car très volumineux) j'essaye de faire la sommation de la colonne C, entre d'une part les montants en € et ceux en FRF. La formule que j'utilise reconnait bien, sans problème, le format de la cellule mais, ensuite la sommation se fait sur la totalité des montants qui figure dans la dite colonne !!!

Je pourrais contourner le problème en créant des colonnes supplémentaire en matérialisant le format de la cellule et ensuite faire une recherchev et le tour serait joué... mais dans la mesure du possible je souhaite un solution directe (le fichier est déjà assez volumineux comme cela !).

Merci à vous tous et très bonne journée dominicale.

Phil.

20classeur1.xlsx (10.62 Ko)

Bonjour,

Une fonction VBA :

Function Somme_devise(Plage As Range, Dev As String)
  Dim C As Range
  If Dev = "€" Then Dev = "$"
  If UCase(Dev) = "FRF" Then Dev = "FRF]"
  For Each C In Plage
    If Right(C.NumberFormat, Len(Dev)) = Dev Then
      Somme_devise = Somme_devise + C.Value
    End If
  Next C
End Function

Par exemple :

=Somme_devise(C2:C15;"frf")

La fonction doit être modifiée pour d'autres devises.

Daniel

Bonjour,

un peu le même principe sauf que la devise est récupérée dans le texte de la cellule et non dans le format.
Accepte donc toutes les devises sans compléter le code

Function sommeDev(pl As Range, devise As String)
    Dim c As Range, dev
    For Each c In pl
        dev = Split(c.Text, " "): dev = dev(UBound(dev))
        sommeDev = IIf(dev = devise, sommeDev + c.Value, sommeDev)
    Next c
End Function

Ex syntaxe : =sommeDev(C2:C15;"FRF")
eric

11classeur1.xlsm (15.80 Ko)

Bonjour à tous !

Une approche "formule" (en croisant les doigts quant à la disponibilité sous Excel 2021) :

Bonjour à tous,

Une proposition : (avec filtre())

17classeur1.xlsx (10.51 Ko)

Je ne connais pas du tout VBA et je pense que je vais m'abstenir dans l'immédiat, je remercie Daniel et Eric d'avoir proposé une solution au problème. Merci aussi à DjiDji59430, pour l'idée de filtre, mais qui n'est pas en adéquation avec la totalité de mon fichier.

Reste l'approche de JFL, qui à ma préférence. Merci pour ta proposition, mais malheureusement, le résultat affiché est le suivant #NOM?, signifiant que ta formule contient une fonction qui n'est pas prise en charge par OffIce 2021 Pro +... ton pressentiment était juste !! Si tu as une autre approche (formule), je suis preneur et t'en remercie à l'avance.

Très bonne fin de journée à vous tous.

Phil.

Bonjour à tous de nouveau !

Je vous livre une version 2, basée sur la proposition de DjiDji59430 que j'ai intégrée dans une fonction LET.

Bien évidemment, adieu unicité et dynamisme de la version 1 !

J'espère que les modifications mineures apportées vous donneront la souplesse d'utilisation voulue.

Cette formule nécessite deux éléments :
1/ t_V = plage des valeurs à sommer (référence absolue) (t_V pour table Valeurs
2/ t_D = cellule contenant le format devise à sommer (t_D pour table Devise)

Il ne faut pas avoir peur de VBA.
Tu as le code à copier-coller dans un module standard (Insertion / Module)
Ensuite la fonction s'utilise comme une fonction native d'excel.
eric

bonjour

petite contribution sans filtre

=SOMMEPROD((CELLULE("format";INDIRECT(ADRESSE(LIGNE(C2:C15);3)))="P2")*(C2:C15))

cordialement

Re

. Merci aussi à DjiDji59430, pour l'idée de filtre, mais qui n'est pas en adéquation avec la totalité de mon fichier

Et pourquoi ? ton exemple ne serait-il pas exhaustif ??

Bonjour à tous,

La proposition de tulipe-4 est pile poil ce que je recherchais !!! En plus, elle fonctionne admirablement bien, je l'en remercie vivement.

Encore tous mes remerciements à tous ceux qui sont intervenus sur ce dossier... et promis Eric, je me pencherai sur VBA, dans un avenir plus ou moins proche !

Bien à vous.

Phil.

Bonjour,

pour s'en faire une idée il faudrait la curiosité et télécharger le fichier non ?

Rechercher des sujets similaires à "sommation colonne entre devises"