OVH Cloud OVH Cloud

diagonales

11 réponses
Avatar
Jacquouille
Bonjour
A1:A5 représente une plage verticale de 5 cel en colone A
A1:E1 représente une plage horizontale de 5 cel en ligne 1
A1:E5 représente une plage carrée de 25 cel
Question:
Existe-t-il un moyen d'écrire une plage de 5 cel en diagonale (exemple
(A1:H5) mais où les cel concernées seraient A1+B2+C3+D4+E5 ?
Merci
--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
Jacquouille.

10 réponses

1 2
Avatar
Starwing
Essaie ça:

=SOMMEPROD(A1:E5*(LIGNE(A1:E5)=COLONNE(A1:E5)))

--
Au plaisir de vous revoir ...
Visitez >> http://www.excelabo.net
Le merveilleux site de Misange
Starwing

--
Avatar
denis P
bonjour
A tu regardé de coter d' "Areas".....
je ne sais pas si cela peut te rendre service....

denis p.

''''''''''''
Dim plage
Set plage = Range("a1,b2,c3,d5,e6")
MsgBox plage.Areas.Count
For Each singleArea In plage.Areas
MsgBox singleArea.Value
Next
End If
''''''''''''''''''''''''''''''''''''''''''''''''''''''''



"Jacquouille" a écrit dans le message de
news:
Bonjour
A1:A5 représente une plage verticale de 5 cel en colone A
A1:E1 représente une plage horizontale de 5 cel en ligne 1
A1:E5 représente une plage carrée de 25 cel
Question:
Existe-t-il un moyen d'écrire une plage de 5 cel en diagonale (exemple
(A1:H5) mais où les cel concernées seraient A1+B2+C3+D4+E5 ?
Merci
--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
Jacquouille.




Avatar
Jacquouille
Bonsoir
Tant qu'à user, pourquoi ne pas abuser? -))
Et pour l'autre diagonale?
¥+b4+c3+d2+e1 ?
Un grand merci et bonne soirée


--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
Jacquouille.

"Starwing" a écrit dans le message de news:

Essaie ça:

=SOMMEPROD(A1:E5*(LIGNE(A1:E5)=COLONNE(A1:E5)))

--
Au plaisir de vous revoir ...
Visitez >> http://www.excelabo.net
Le merveilleux site de Misange
Starwing

--




Avatar
Jacquouille
Bonsoir Denis
Ce n'est pas à proprement parler une somme que je veux faire, mais (en VBA)
un contrôle pour voir si toutes les cel de la diagonale sont bien vides.
donc, les deux diagonales : a1,b2,c3,d4 et e5
et a5,b4,c3,d2 et e1
Merci pour cet excellent début de piste toute chaude. -)
Jacques, qui se souvient du jeu de dames, où les diagonales travaillaient.

--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
Jacquouille.

"denis P" a écrit dans le message de news:
e88jX$
bonjour
A tu regardé de coter d' "Areas".....
je ne sais pas si cela peut te rendre service....

denis p.

''''''''''''
Dim plage
Set plage = Range("a1,b2,c3,d5,e6")
MsgBox plage.Areas.Count
For Each singleArea In plage.Areas
MsgBox singleArea.Value
Next
End If
''''''''''''''''''''''''''''''''''''''''''''''''''''''''



"Jacquouille" a écrit dans le message de
news:
Bonjour
A1:A5 représente une plage verticale de 5 cel en colone A
A1:E1 représente une plage horizontale de 5 cel en ligne 1
A1:E5 représente une plage carrée de 25 cel
Question:
Existe-t-il un moyen d'écrire une plage de 5 cel en diagonale (exemple
(A1:H5) mais où les cel concernées seraient A1+B2+C3+D4+E5 ?
Merci
--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
Jacquouille.








Avatar
Starwing
=SOMMEPROD((LIGNE(A1:E5)+COLONNE(A1:E5)=6)*A1:E5)

--
Au plaisir de vous revoir ...
Visitez >> http://www.excelabo.net
Le merveilleux site de Misange
Starwing

--
"Jacquouille" a écrit dans le message de
news:
Bonsoir
Tant qu'à user, pourquoi ne pas abuser? -))
Et pour l'autre diagonale?
¥+b4+c3+d2+e1 ?
Un grand merci et bonne soirée


--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
Jacquouille.

"Starwing" a écrit dans le message de news:

Essaie ça:

=SOMMEPROD(A1:E5*(LIGNE(A1:E5)=COLONNE(A1:E5)))

--
Au plaisir de vous revoir ...
Visitez >> http://www.excelabo.net
Le merveilleux site de Misange
Starwing

--








Avatar
Starwing
Ce n'est pas à proprement parler une somme que je veux faire, mais (en
VBA)

un contrôle pour voir si toutes les cel de la diagonale sont bien vides.


Alors que dirais-tu d'une matrice diagonale qui calcule la somme des deux
diagonales? Comme cela, si elle renvoie >0, alors elle est non vide.

=SOMME(DECALER(A1;0;LIGNE(1:1)-1):E5)

--
Au plaisir de vous revoir ...
Visitez >> http://www.excelabo.net
Le merveilleux site de Misange
Starwing

--

Avatar
Jacquouille
Bonsoir
L'idée est géniale....mais me fait simplement somme(a1:e5) ?????? càd la
somme des 25 cel. -)))
Un grand merci quand même pour ta patience car l'idée est géniale
PS nbvcal ne serait pas mieux, car si cel= txt?


--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
Jacquouille.

"Starwing" a écrit dans le message de news:

Ce n'est pas à proprement parler une somme que je veux faire, mais (en
VBA)

un contrôle pour voir si toutes les cel de la diagonale sont bien vides.


Alors que dirais-tu d'une matrice diagonale qui calcule la somme des deux
diagonales? Comme cela, si elle renvoie >0, alors elle est non vide.

=SOMME(DECALER(A1;0;LIGNE(1:1)-1):E5)

--
Au plaisir de vous revoir ...
Visitez >> http://www.excelabo.net
Le merveilleux site de Misange
Starwing

--





Avatar
GD
Bonsour® Jacquouille,
alors cela te conviendrait une petite fonction personnalisée????

vite faite(tests non exhaustifs)
on considere :
une matrice carrée de dimension D et d'origine O
un Sens H-horizontal, V-Verticale ou D-Diagonal (descendant )ou M-Montant
exemple : SomX(Origine,Dimension,Sens)
=SomX(A1;5;"D") fait la somme de 5 cellules en Diagonale et commencant en
A1
=SomX(C22;4;"H") fait la somme de 4 cellules Horizontales et commencant en
C22
=SomX(B12;7;"montée") fait la somme de 7 cellules Diagonales Montantes et
commencant en B12
(rappel la function pourra également étre appelée en VBA ;o))))

Function SomX(target, nbr As Integer, direction As String)
On Error Resume Next
Application.Volatile
direction = UCase(Left(Trim(direction), 1))
somX = target
nbr = nbr - 1
Select Case direction
Case "H"
For i = 1 To nbr
somX = somX + target.Offset(0, i).Value
Next
Case "V"
For i = 1 To nbr
somX = somX + target.Offset(i, 0).Value
Next
Case "D"
For i = 1 To nbr
somX = somX + target.Offset(i, i).Value
Next
Case "M"
For i = 1 To nbr
somX = somX + target.Offset(-i, i).Value
Next
Case Else
somX = Application.na()
End Select
End Function

@+

Bonjour
A1:A5 représente une plage verticale de 5 cel en colone A
A1:E1 représente une plage horizontale de 5 cel en ligne 1
A1:E5 représente une plage carrée de 25 cel
Question:
Existe-t-il un moyen d'écrire une plage de 5 cel en diagonale (exemple
(A1:H5) mais où les cel concernées seraient A1+B2+C3+D4+E5 ?
Merci


Avatar
AV
Plus prudent car résiste à un déplacement de la plage de référence :

Matricielle
=SOMME(plg*(LIGNE(plg)+COLONNE(plg)=MIN(LIGNE(plg))+MAX(COLONNE(plg))))

AV
Avatar
AV
donc, les deux diagonales : a1,b2,c3,d4 et e5
et a5,b4,c3,d2 et e1


Te casse pas la tête :
Appuie sur la touche Ctrl > sélectionne toutes les cellules (plage discontinue
ou pas) que tu veux contrôler > Insertion > Nom > Définir > "plg"
Et ensuite :

=NBVAL(zz)

Ou (en persistant) :
Matricielle :
=SOMME(SI((A1:E5*(LIGNE(A1:E5)=TRANSPOSE(LIGNE(A1:E5))))>0;1))+SOMME(SI(A1:E5*(L
IGNE(A1:E5)+COLONNE(A1:E5)=MIN(LIGNE(A1:E5))+MAX(COLONNE(A1:E5)))>0;1))-1

AV

1 2