Operations sur plages discontinues

Signaler
Messages postés
1
Date d'inscription
mercredi 17 septembre 2008
Statut
Membre
Dernière intervention
17 septembre 2008
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour,

J'ai un fichier des colonnes avec plein de chiffre dont certains sont positifs, d'autres négatifs. Je souhaite faire l'addition des chiffres négatifs appartenant à une plage discontinue (genre A1:G5,H64) que j'aurais moi même désigné via un argument placé dans une fonction personnalisée.

Pb : Lorsque que je met Maplage en argument et que je selectionne une plage discontinue à l'aide la toucher ctrl ma fonction me renvoie l'erreur #valeurs ! J'ai bien chercher à utiliser la propriété areas mais ca ne marche pas. Je dois me tromper dans la synthaxe. Donc qlq un serait utiliser cette propriété et me donner un exemple de son utilisation pour ce que j'ai a faire ? Toute autre solution utilisant une fonction personnalisée et non une procedure, permetant l'opération sur plage multiples, est la bienvenue.

MERCI !

là où j'en suis (non satisfaisant car mes plages change d'un fichier à l'autres)

Function SommeSiInf() As Variant
Dim Sum As Variant
Dim maplage As Range
Dim cell As Range
Set maplage = Range("A1:A2,B1:B2")
Sum = 0
For Each cell In maplage
If cell.Value < 0 Then
Sum = Sum + cell.Value
End If
Next cell
SommeSiInf = Sum
End Function

<!-- / message -->



Bastien

1 réponse

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut
J'ai essayé ta fonction + modif et tout fonctionne en ayant mis le texte "A1:A2,B1:B2" dans la celule A5:
En tant qu'argument, "maPlage" n'est qu'une chaîne

Sub Test()
    Dim Resultat As Single
    Dim sTemp As String
   
    sTemp = Feuil1.Range("A5")
    Resultat = SommeSiInf(sTemp)
    MsgBox Resultat
End Sub



Function SommeSiInf(maPlage As String) As Variant
    Dim Sum As Variant
'    Dim maPlage As Range
    Dim cell As Range
   
'    Set maPlage = Range("A1:A2,B1:B2")
    Sum = 0
    For Each cell In Range(maPlage)
        If cell.Value < 0 Then
            Sum = Sum + cell.Value
        End If
    Next cell
    SommeSiInf = Sum
End Function


Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés





<hr />

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)