Signaler

Probleme avec une fonction vba excel

Posez votre question micky - Dernière réponse le 10 nov. 2017 à 17:21 par micky
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
Utile
+0
plus moins
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
Donnez votre avis
Utile
+0
plus moins
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
Donnez votre avis
Utile
+0
plus moins
Bonjour,


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

Donnez votre avis
Utile
+0
plus moins
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- 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
Répondre
f894009 12394Messages postés dimanche 25 novembre 2007Date d'inscription 10 novembre 2017 Dernière intervention - 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
Répondre
Patrice33740 6246Messages postés dimanche 13 juin 2010Date d'inscription 10 novembre 2017 Dernière intervention - 9 nov. 2017 à 21:17
Salut, ça roule bien ...
Je vois que toi aussi tu as tout compris dans le code :)
Répondre
f894009 12394Messages postés dimanche 25 novembre 2007Date d'inscription 10 novembre 2017 Dernière intervention - 10 nov. 2017 à 08:50
Bonjour,

Oui, mais lui pas sur !!!! Pourtant simple....
Répondre
micky- 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 :)
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !