[Calc] Types définis par l’utilisateur

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 !
cazadeis
NOOuvel adepte
NOOuvel adepte
Messages : 22
Inscription : 21 juil. 2011 15:07

[Calc] Types définis par l’utilisateur

Message par cazadeis »

Bonjour,

je travaille sur un projet qui utilise les UDT. Malheureusement je bute sur un problème dans l'attribution des valeurs. L'exemple ci-dessous est censé modifier la variable "Code" de l'indice 1 de la liste "LesProductions". Or après exécution, toutes les variables Code de l'indice 0 à 200 contiennent la chaîne "Test"

Code : Tout sélectionner

Sub Main
	Dim tmp As Variant
	
	tmp = creerVar()
	tmp.LesProductions(1).Code = "Test"

End Sub
Pouvez vous s'il vous plait m'aider à résoudre ce problème. Je joins un fichier exemple à ce post.

Merci pour votre aide.
Pièces jointes
Type_Utilisateur.ods
Exemple
(9.46 Kio) Téléchargé 94 fois
OpenOffice 4.1.7 sous Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Calc] Types définis par l’utilisateur

Message par Dude »

C'est quoi creerVar ?
Comme d'habitude, mettre 3 lignes de code ne sert pas à grand chose.
cazadeis a écrit :L'exemple ci-dessous est censé modifier la variable "Code" de l'indice 1
Je ne vois aucun indice de passé pour cette variable :

Code : Tout sélectionner

tmp.LesProductions(1).Code = "Test"
cazadeis
NOOuvel adepte
NOOuvel adepte
Messages : 22
Inscription : 21 juil. 2011 15:07

Re: [Calc] Types définis par l’utilisateur

Message par cazadeis »

Bonjour,

C'est pour cela que j'ai mis un fichier exemple en PJ.
CreerVar est une fonction qui renvoie une variable de type utilisateur

Code : Tout sélectionner

Function creerVar() As Variant
	Dim e As Production, f As DetailProd, g As Sequences, h As conditionnement
	Dim i As integer, j As Integer, k As integer
	
	For i = 0 To 200
		e.LesProductions(i) = g
		For j = 1 To 15
			e.lesProductions(i).sequence(j) = h
			For k = 0 To 2
				e.lesProductions(i).sequence(j).Ravier = f
				e.lesProductions(i).sequence(j).Exception = f
				e.lesProductions(i).sequence(j).Gn1 = f
				e.lesProductions(i).sequence(j).Gn2 = f
			Next k
		Next j
	Next i
	creerVar = e
End Function

OpenOffice 4.1.7 sous Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Calc] Types définis par l’utilisateur

Message par Dude »

cazadeis a écrit :C'est pour cela que j'ai mis un fichier exemple en PJ.
Et c'est pour cela que l'on n'a pas forcément envie de télécharger les dizaines de fichiers qui sont mis en ligne chaque jour sur ce forum.

Le code publié est toujours incomplet.
cazadeis a écrit :Dim e As Production, f As DetailProd, g As Sequences, h As conditionnement
Ces types sont déclarés comment ?

As-tu testé ton objet avec XRay pour voir s'il était accessible ?
cazadeis
NOOuvel adepte
NOOuvel adepte
Messages : 22
Inscription : 21 juil. 2011 15:07

Re: [Calc] Types définis par l’utilisateur

Message par cazadeis »

Bonjour,

voici la portion de code déclarant le type utilisateur :

Code : Tout sélectionner

Type Production
	LesProductions(0 to 200)			As Object
	
End type

Type Sequences
	Code						As String
	QuantiteTotaleAProduire		As Integer
	Unite						As String
	Atelier						As Integer
	OP							As String
	sequence(1 To 15)			As DetailProd
End Type

Type DetailProd
	Id_Plat						As Integer
	Libelle_Plat				As String
	Quantite_Plat				As Double
	Unite_Plat					As String
	chaine						As chaine
	cellule(1 To 6)				As Cellule
End Type

Type conditionnement
	Ravier						As condi
	Exception					As condi
	Gn1							As condi
	Gn2							As condi
End Type
'################################# FONCTION ###################################

Function creerVar() As Variant
	Dim e As Production, f As DetailProd, g As Sequences, h As conditionnement
	Dim i As integer, j As Integer, k As integer
	
	For i = 0 To 200
		e.LesProductions(i) = g
		For j = 1 To 15
			e.lesProductions(i).sequence(j) = h
			For k = 0 To 2
				e.lesProductions(i).sequence(j).Ravier = f
				e.lesProductions(i).sequence(j).Exception = f
				e.lesProductions(i).sequence(j).Gn1 = f
				e.lesProductions(i).sequence(j).Gn2 = f
			Next k
		Next j
	Next i
	creerVar = e
End Function
Cet objet ne donne pas beaucoup d'informations sous Xray (voir PJ).

Merci pour votre aide.
Pièces jointes
Xray.JPG
OpenOffice 4.1.7 sous Windows 10
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Calc] Types définis par l’utilisateur

Message par Piaf »

Bonjour
cazadeis a écrit :Cet objet ne donne pas beaucoup d'informations sous Xray (voir PJ).
code.png
A priori il renvoie ce que tu lui demande.
Après je n'ai rien compris à ce que tu veux obtenir.
Quelles sont les types chaîne, cellule et condi ?
Quel est l’intérêt de mal utiliser les types utilisateurs sous Calc pour une utilisation beaucoup plus simple qui semble correspondre à une base de données.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Répondre