Probleme avec une fonction vba excel
micky
-
micky -
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
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
A voir également:
- Probleme avec une fonction vba excel
- Fonction si et excel - Guide
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Word et excel gratuit - Guide
- Fonction moyenne excel - Guide
4 réponses
Bonjour,
Je verrai plus ceci:
dans votre function, a la fin:
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 = sne correspond pas la Function MaSommeDiag et ceci change le resultat est 7 pas 13
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
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
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
Bonjour Patrice, ca roule??
micky:
Cependant je ne comprend pas pourquoi la mienne donne 7 car meme en changant à la fin : MaSommeDiag = s cela donne toujours 7
Ben c'est vraiment simple vous n'avez que la valeur de la derniere ligne/colonne de la plage
vous comprenz quoi dans ce code?
Qui doit comprendre vous ou nous???
micky:
Cependant je ne comprend pas pourquoi la mienne donne 7 car meme en changant à la fin : MaSommeDiag = s cela donne toujours 7
Ben c'est vraiment simple vous n'avez que la valeur de la derniere ligne/colonne de la plage
vous comprenz quoi dans ce code?
Qui doit comprendre vous ou nous???
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
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