Menu

Probleme avec une fonction vba excel

micky - 9 nov. 2017 à 15:46 - Dernière réponse :  micky
- 10 nov. 2017 à 17:21
Bonjour,
Somme des valeurs sur la diagonale (MaSommeDiag)
Entrée : Plage de cellules (range)
Sortie : Total (réel)
Calcul : (a) Assurez-vous que la plage de cellule est carrée (nombre de lignes identique au nombre de colonnes).
(b) Si ce n’est pas le cas, votre fonction doit renvoyer la valeur 0
(c) Si c’est le cas, votre fonction doit renvoyer la somme des valeurs situées sur la diagonale
Ex. Dans la plage suivante, on aurait Total = 2 + 4 + 7 = 13

2 5 6
3 4 9
8 2 7

pour ce faire j'ai entre le code suivant :

Public Function MaSommeDiag(plage As Range) As Double
Dim i As Long, j As Long
Dim s As Double
s = 0
For i = 1 To plage.Rows.Count Step 1
For j = 1 To plage.Columns.Count Step 1

If (i = j) Then
s = s + plage.Cells(i, i).Value

Else: s = 0

End If
Next j
Next i
MaSommeDiagonaleScolaire = s
End Function

Et à la fin je trouve tjs 0 ca me calcule pas la somme
Afficher la suite 

12 réponses

Répondre au sujet
f894009 12698 Messages postés dimanche 25 novembre 2007Date d'inscription 20 février 2018 Dernière intervention - 9 nov. 2017 à 16:31
0
Utile
Bonjour,

Je verrai plus ceci:

Public Function MaSommeDiag(plage As Range) As Double
    Dim i As Long, j As Long
    Dim s As Double
    
    If plage.Rows.Count = plage.Columns.Count Then  'carré
        For i = 1 To plage.Rows.Count Step 1
            s = s + plage.Cells(i, i).Value
        Next i
    Else
        s = 0
    End If
    MaSommeDiag = s
End Function


dans votre function, a la fin:
MaSommeDiagonaleScolaire = s
ne correspond pas la Function MaSommeDiag et ceci change le resultat est 7 pas 13
Commenter la réponse de f894009
0
Utile
Re, merci pour votre réponse votre formule marche très bien et je la comprend toutafais.

Cependant je ne comprend pas pourquoi la mienne donne 7 car meme en changant à la fin : MaSommeDiag = s cela donne toujours 7

PS: comment vous faites pour afficher le code ici sur le forum dans le format VBA excel ???

merci d'avance
Commenter la réponse de micky
Patrice33740 6741 Messages postés dimanche 13 juin 2010Date d'inscription 20 février 2018 Dernière intervention - 9 nov. 2017 à 17:27
0
Utile
Bonjour,


PS: comment vous faites pour afficher le code ici sur le forum dans le format VBA excel ???

Commenter la réponse de Patrice33740
0
Utile
8
du coup si je met le code suivant :

Sub RemplissageCellulesStep()
    Dim Compteur As Integer
    For Compteur = 1 To 100 Step 2
        ActiveCell.Offset(Compteur - 1, 0) = Rnd
    Next Compteur
End Sub
micky > f894009 12698 Messages postés dimanche 25 novembre 2007Date d'inscription 20 février 2018 Dernière intervention - 9 nov. 2017 à 18:02
ok c'est pour ca qu'il faut mettre direct la formule si, sinon elle ce prend en compte qua le dernier chiffre sans faire la somme.

Oui vous comprenez quoi, j'ai trouve ce code je ne l'ai pas compris
f894009 12698 Messages postés dimanche 25 novembre 2007Date d'inscription 20 février 2018 Dernière intervention > micky - 9 nov. 2017 à 19:18
Re,

Compteur: 1357......
Compteur_1: 02468.......
Activecell : cellule active
Rnd : nombre aléatoire

Donc de 1 a 100 par pas de 2 incrémentation de compteur
Remplissage de cellules par pas de deux d'un nombre "tiré" aléatoirement par Rnd
En partant d'une cellule sélectionnée qui reçoit le premier nombre
Patrice33740 6741 Messages postés dimanche 13 juin 2010Date d'inscription 20 février 2018 Dernière intervention > f894009 12698 Messages postés dimanche 25 novembre 2007Date d'inscription 20 février 2018 Dernière intervention - 9 nov. 2017 à 21:17
Salut, ça roule bien ...
Je vois que toi aussi tu as tout compris dans le code :)
f894009 12698 Messages postés dimanche 25 novembre 2007Date d'inscription 20 février 2018 Dernière intervention > Patrice33740 6741 Messages postés dimanche 13 juin 2010Date d'inscription 20 février 2018 Dernière intervention - 10 nov. 2017 à 08:50
Bonjour,

Oui, mais lui pas sur !!!! Pourtant simple....
micky > f894009 12698 Messages postés dimanche 25 novembre 2007Date d'inscription 20 février 2018 Dernière intervention - 10 nov. 2017 à 17:21
Ha c'est sur que j'ai pas tout compris, je viens de commencer, pendant que tu passais des nuit avec ton ordi, j'etais avec des meufs lool du coup faut que je rattrape le retard, mais on va bosser on va reussir :)
Commenter la réponse de micky