[Résolu] [Calc] passer une dimension tableau en parametre

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
archaos
Fraîchement OOthentifié
Messages : 9
Inscription : 09 févr. 2019 17:42

[Résolu] [Calc] passer une dimension tableau en parametre

Message par archaos »

Bonjour, j'ai un tableau de n lignes, et 2 colonnes. Je souhaite passer la deuxième colonne en paramètre d'une fonction pour qu'elle calcule la somme des valeurs de ses cases. Je n'ai pas réussi à trouver la syntaxe pour n'envoyer à la fonction somme que la deuxième colonne.
Quelqu'un a une idée?

fonction somme:

Code : Tout sélectionner

Function somme (t as Double) as Double

	Dim i as Integer
	somme=0
	
	For i=0 to UBound (t)
		somme=somme + t(i)
	Next i
	
End Function

Je voudrais afficher la somme par exemple dans une case, voila ce que j'ai fait, et seule la somme de la première colonne est faite. Savez-vous pourquoi? Ecrit comme ça, on ne considère que la "première dimension" du tableau?

Code : Tout sélectionner

feuille.getcellbyposition(3,770).value = somme(tableau)
Sachant que le tableau est déclaré comme suit:

Code : Tout sélectionner

Dim tableau(768,1) as Double
Version: 5.0.3.2
Build ID: 1:5.0.3~rc2-0ubuntu1~trusty2
Locale : fr-FR (fr_FR.UTF-8)
Fredab
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 20 févr. 2019 21:52

Re: [Calc] passer une dimension d'un tableau en parametre

Message par Fredab »

Bonjour,
archaos a écrit :Sachant que le tableau est déclaré comme suit:

Code : Tout sélectionner

Dim tableau(768,1) as Double
Peut-être ainsi :

Code : Tout sélectionner

Sub Main
	REM Déclaration du tableau
	Dim tableau(5,1) as Double
	REM Initialisation du tableau
	tableau(0, 0) = 0
	tableau(1, 0) = 1
	tableau(2, 0) = 2
	tableau(3, 0) = 3
	tableau(4, 0) = 4
	tableau(5, 0) = 5
	REM tableau(6, 0) = 15 ' Erreur : Out of range
	tableau(0, 1) = 6
	tableau(1, 1) = 7
	tableau(2, 1) = 8
	tableau(3, 1) = 9
	tableau(4, 1) = 10
	tableau(5, 1) = 11
	REM tableau(6, 1) = 51 ' Erreur : Out of range
	
	Print maSomme(tableau, 0) ' somme de la dimension 1, soit 15 = 0+1+2+3+4+5
	Print maSomme(tableau, 1) ' somme de la dimension 2, soit 51 = 6+7+8+9+10+11

End Sub

Sub maSomme(t as Array, nCol as Integer) as Double
	Dim i as Integer
	maSomme = 0
	For i=0 to UBound (t) ' Equivalent à UBound (t, 1) ou 1 represente la dimension 1 du tableau soit 5
		maSomme = maSomme + t(i, nCol)
	Next i
End Sub
N.B. : Je n'ai pas trouvé dans la doc( BASIC_Guide/Arrays) comment initialiser un tableau sur une ligne.


Si tu souhaite déclarer un tableau de tableau comme suit :

Code : Tout sélectionner

	Dim tableau(1) as Variant
Tu peux écrire ta fonction ainsi:

Code : Tout sélectionner

Sub Main
	Dim mTableau(1) REM equivalent à mTableau(0 To 1)
	aColA = Array(0, 1, 2, 3, 4, 5)
	aColB = Array(6, 7, 8, 9, 10, 11)
	mTableau(0) = aColA
	mTableau(1) = aColB

	Print mySum(mTableau, 0)
	Print mySum(mTableau, 1)
End Sub

Sub mySum(t, nCol as Integer) as Double
	Dim i as Integer
	mySum = 0
	For i=0 to UBound (t(nCol))
		mySum=mySum + t(nCol)(i)
	Next i
End Sub
Je ne suis pas sur de ce que je dis. Je débute a écrit :En résumé : Pour accéder a une colonne d'un tableau/matrice tout dépend de la façon dont tu a déclarer ta variable.
myArray(nRow)(nCol)
myMatrix(nRow, nCol)
Bien à vous,
Fred
OpenOffice 4.1.6 / LibreOffice 6.0 sous Ubuntu 18
archaos
Fraîchement OOthentifié
Messages : 9
Inscription : 09 févr. 2019 17:42

Re: [Résolu][Calc]passer une dimension d'un tableau en param

Message par archaos »

Merci beaucoup, oui ça marche très bien comme ça.
Version: 5.0.3.2
Build ID: 1:5.0.3~rc2-0ubuntu1~trusty2
Locale : fr-FR (fr_FR.UTF-8)