[Résolu][Calc] Déclaration et initialisation tableau

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 !
CathyContact3
NOOuvel adepte
NOOuvel adepte
Messages : 21
Inscription : 26 juil. 2016 09:00

[Résolu][Calc] Déclaration et initialisation tableau

Message par CathyContact3 »

Bonjour
je voudrais déclarer un tableau qui contient des couples de long :
dim tab(12) = ( (long0,long1) , (long2,long3), ....)

les valeurs a mettre dans le tableau sont des constantes de type long (le tableau ne sera plus modifié)

je n'arrive pas a le declarer et initialiser en même temps sans utiliser de code (pour que toutes mes macros voient le même tableau sans utiliser de code pour l'initialiser)

Sinon comment faire ?
La modération vous a écrit: Bonjour,
Vous avez ajouté la balise [Résolu] dans votre fil de discussion signifiant que votre question a été résolue et nous vous en remercions.
Cependant pour des questions de lisibilité et d'homogénéité, il est demandé de faire cet ajout dans le titre de votre premier message. Il faut également cocher la case de l'icône de sujet (le V vert). Notre forum est plus lisible avec ce balisage comme vous avez pu vous en rendre compte en le parcourant.

Suivez ce sujet pour savoir comment procéder : http://user.services.openoffice.org/fr/ ... c3299.html

Merci de votre participation sur notre forum et de nous faciliter le travail de modération.

Cordialement, l'équipe de modération

Dernière modification par OOoch le 17 sept. 2016 07:44, modifié 4 fois.
Raison : Ajout de la balise
Libre Office 7.0.4.2 (X64)
Windows 10.0.19041
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 10071
Inscription : 28 août 2010 08:45

Re: [Writer]declaration et initialisation tableau multidimen

Message par micmac »

Bonjour,

Cette section a des règles très précises que vous devez obligatoirement suivre pour obtenir de l'aide. C'est indiqué dans le cadre rouge en haut de la page.

Il est demandé aux auteurs de faire précéder le titre de leur question d'une balise adéquate. Ce balisage est extrêmement important car il permet d'avoir une base de connaissance optimum en cas de recherche.
Avez-vous remarqué comment étaient postées les autres questions ?

Lisez ce fil pour savoir quelle balise utiliser : https://forum.openoffice.org/fr/forum/s ... html#27295

N'oubliez pas que le terme "Macro" ou "OpenOffice" ne doivent pas être employés car il sont implicites. Essayez de synthétiser au mieux ce que vous cherchez à faire.

Un titre accrocheur vous permettra d'une part d'être aidé plus rapidement et d'autre part, d'enrichir notre base de connaissances.

Nous l'avons fait pour vous cette fois-ci mais lors de votre prochaine question, nous vous remercions de le faire vous-même sous peine de voir votre sujet verrouillé.

Merci de votre collaboration.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
OpenOffice > Outils > Options sur Windows = OpenOffice > Préférences sur macOS
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26195
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Writer]declaration et initialisation tableau multidimen

Message par Dude »

Image
Tout sur les tableaux
Dans ta signature, il y a écrit :Open office 5.1.4.2
Cette version n'existe pas.
Avatar de l’utilisateur
martinbrait
InconditiOOnnel
InconditiOOnnel
Messages : 753
Inscription : 09 avr. 2013 07:15
Localisation : T'as pas dit bonjour, merci et à bientot !

Re: [Calc] declaration et initialisation tableau multidimens

Message par martinbrait »

Bonjour Cathy !
Le type porte uniquement sur les valeurs retournées par ton tableau.
exemple
Dim t(3,5) As long renvoie un entier long
Long integer variables can store any whole number between –2147483648 and 2147483647. A long integer variable can takes up to four bytes of memory. The type declaration symbol for a long integer is &. Calculations with long integer variables are very fast and are particularly useful for loop counters. If you assign a floating point number to a long integer variable, the number is rounded up or down to the next whole number.
Voici 3 exemples, bon courage !

Code : Tout sélectionner

Sub EssaiTableauBiDimensionnel()
    Dim t(3,5) As String ' tableau bi-dimensionnel
    t(2,4) = "Bonjour"
    print t(2,4)
End Sub



' Ne pas confondre un tableau multidimensionnel et un tableau de tableaux.
' Pierre-Yves Samyn
'La double indexation pour un tableau de tableaux n'est pas acceptée par OOoBasic avant la version 3.0.
'C'est une nouveauté de la 3.0 que je ne connaissais pas :super:

Sub TableauxDeTableaux

Dim tValeur(3) as variant, i as integer

tValeur(1) = array ("a","b","c")
tValeur(2) = array ("d","e","f")
tValeur(3) = array ("g","h","i")

for i = lbound(tValeur(2)) to ubound(tValeur(2))
   print tValeur(2)(i)
next i

print tValeur(2)(0)

End Sub


' #FUNCTION# ====================================================================================================================
' Name...........: Tab2D()
' Description ...: 'Tableau 2 dimensions (Array)
' Parameters ....: Tab2D()
' Syntax ........: FormaterEnTypeTexte()
'                  $vValue  - Value to add
' Return values .: Success - void
'                  Failure - -1, sets @error
'                  |1 - $avArray is not an array
'                  |2 - $avArray is not a 1 dimensional array
' Author ........: Jacques BOISGONTIER
' Modified.......: martinbrait - code cleanup
' Remarks .......: prérequis, une feuille de classeur. Utiliser le bon type lors de l'écriture dans la cellule de classeur !
' Related .......: 
' Link ..........; 
' Example .......' Yes,
'On obtient
'11   12
'21   22
'31   32 
' ====================================================
Sub Tab2D()
Dim lig,col As Integer
  Dim oCell
  Dim b As Variant
  Dim s As String
  Dim i As integer
  Dim oDoc As Object
  oDoc = createNewCalcDoc()
  
  Dim a(1 To 3, 1 To 2)As Integer ' 3 lignes x 2 colonnes, stockant des valeurs de type integer
  a(1, 1) = 11
  a(1, 2) = 12
  a(2, 1) = 21
  a(2, 2) = 22
  a(3, 1) = 31
  a(3, 2) = 32
  For lig = LBound(a, 1) To UBound(a, 1)
     For col = LBound(a, 2) To UBound(a, 2)
	    oCell = oDoc.Sheets(0).getCellByPosition(lig, col) 
	  	oCell.setValue(a(lig, col)) 'attention à bien typer, en fonction du type de donnée à transférer        
     Next col
  Next lig
End Sub
LibreOffice version 5.4.7.2.M6 (x64)
Windows 10
+
LibreOffice version 5.4.7.2.M6 (x64)
Windows 7

#HSQL Database Engine 1.8.0
version=1.8.0

Locale : fr-FR (fr_FR)

Obligation de version


Bonjour, merci et à bientôt !
CathyContact3
NOOuvel adepte
NOOuvel adepte
Messages : 21
Inscription : 26 juil. 2016 09:00

Re: [Calc] declaration et initialisation tableau multidimens

Message par CathyContact3 »

Bonjour
Merci pour ces précisions. Il y a des nuances qui m'échappent un peu!

Il n'est donc pas possible de déclarer un tableau directement initialisé avec des valeurs constantes dans la déclaration ?

comme une constante normale mais en tableau :
const maconstante = 1
const montableau1dim = array ( 1,2,3)
const montableau2dim = array ( (1,2) , (2,3) )

mais pas avec cette syntaxe évidement

Ca me semble dommage de pouvoir initialiser une constante simple mais pas un tableau

En tout cas merci pour les réponses rapides et précises.
Libre Office 7.0.4.2 (X64)
Windows 10.0.19041
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26195
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] declaration et initialisation tableau multidimens

Message par Dude »

CathyContact3 a écrit :Il n'est donc pas possible de déclarer un tableau directement initialisé avec des valeurs constantes dans la déclaration ?
Non, l'initialisation de constantes lors de la déclaration se fait uniquement pour des types simples.
Un tableau nécessitera donc une fonction que tu placeras au départ de tes routines Sub.
CathyContact3 a écrit :Ca me semble dommage de pouvoir initialiser une constante simple mais pas un tableau
Si cela te gêne, ouvre une demande d'amélioration auprès des développeurs (cf. ma signature).
Reviens ensuite ici en donner le n° du ticket.
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
CathyContact3
NOOuvel adepte
NOOuvel adepte
Messages : 21
Inscription : 26 juil. 2016 09:00

declaration et initialisation tableau multidimension

Message par CathyContact3 »

Merci pour cette réponse.
Forum très intéressant et instructif.
C'est très important d'avoir de l,aide en cas de besoin.
Je répondrais volontiers à des autres problèmes si je connais la solution.
Merci
Cathy
Dernière modification par toucan le 01 août 2016 11:18, modifié 1 fois.
Raison : Suppression de la balise
Libre Office 7.0.4.2 (X64)
Windows 10.0.19041