Somme des différences

  • Initiateur de la discussion Christophe V.
  • Date de début
C

Christophe V.

Guest
Bonsoâr à tous !
Comme vous l'avez sans doute remarqué, dans XL la fonction "somme des différences" n'existe pas. On a seulement "somme des différences au carré" (SOMME.XMY2). Comment la créer ? G bien essayé les lignes de commandes ci dessous :

Function SommeDif(a, b)
SommeDif = Application.WorksheetFunction.Sum(a - b)
End Function

Mais la #VALEUR! est toujours affichée. Est ce que quelqu'un a une idée ?

Ca fait 10 jours que je sêche...

Merci les copains (et les copines!)
 
R

Roland

Guest
Bonsoir Christophe V.

si j'ai bien compris cela doit faire l'affaire

Function somme_dif(a As Range, b As Range) As Long
Dim r As Range
Dim x(10) As Long
Dim i As Integer
i = 0
i = 0
For Each r In a
x(i) = r
i = i + 1
Next r
i = 0
For Each r In b
somme_dif = somme_dif + x(i) - r
i = i + 1
Next r
End Function


A toi d'adapter le type des variables

A+ Roland
 
R

Roland

Guest
Re Bonsoir Christophe V.

Petit complément

Sur ta feuille tu déclares deux plage de longueurs identique que tu passes en arguments à la fonction
=somme_dif(plage1, plage2) dans la cellule de ton choix

A+ Roland
 
C

Christophe V.

Guest
Merki beaucoup (une fois de plus ??)
Mais cette fois si C un peu plus obscur pour moi: je ne conaissait pas la formule "For Each In " et pouquoi déclarer une variable x(10) ? Voilà un échantillon de toutes les questions qui m'interroge.

Et puis surtout je trouve une légère différence dans le calcul. As tu remarqué ?

Bon mais soyons positif : a présent G un résultat. C quand même mieux que #VALEUR!

Sur ce bonne journé à toi et à tous nos amis d'Excel-Dowloads
 
R

Roland

Guest
Bonjour Christophe V.

J'espère qu'en plus le résultat est bon !!!
For Each In permet de scruter tous les éléments d'un ensemble, ici de la plage de cellules.
Dim x(10) permet de déclarer un tableau de variables pour ranger les valeurs de la première plage ( il te faudra augmenter ce nombre si tu veux utiliser des plages de plus de dix valeurs)

J'ai utilisé cette méthode car je ne sait pas imbriquer le For Each pour scruter les deux plages en même temps ... si qq sait qu'il n'hésite pas à éclairer ma lanterne.

Amicalement Roland
 
C

Christophe V.

Guest
Bonsoir à tous
Le code transmis par Roland fonctionne uniquement si les valeurs sont entières.
Dès que l'on fait la somme des différences avec des nombres décimaux on trouve une petite différence de calcul.
G bien essayé de chanG le type des variable mais cela n'y a rien fait.
Si quelqun comprend pourquoi, je suis friand de la réponse.

@+
 

adelaidetermote

XLDnaute Nouveau
Re : Somme des différences

Salut,

J' ai le même problème, avec les décimaux pour un autre programme. D' après les codes que j' ai rentré, j' ai fais quelques petits test et il semblerait ua lorsque l' on fait une opération différence sous VBA, ca ressort le nombre entier le plus proche de la différence:confused:. Par exemple

0.25 0
1.5 1
2.75 3

D'ou les différence, avec les nombre entier aucun problème, mais nombre décimaux ....Si qqun sait comment résoudre ce petit problème, pour prendre en compe les décimal je suis preneuse aussi:)

Voilli voilou

merci

Adé
 

Discussions similaires

Statistiques des forums

Discussions
312 559
Messages
2 089 605
Membres
104 226
dernier inscrit
siala Mohamed