Création de nouveaux types de variables dans libre office calc

Bonjour
j'aime savoir si on peut créer des nouveaux types de variables dans libre
office. Et si c'est possible comment peut-on le faire svp.
Merci d'avance

Bonjour,
Dans Calc, on peut créer de nouvelles fonctions.
Qu'entends-tu par "types de variables" ?

Jean-Michel PIERRE
Tél : 06.19.55.73.22

Bonjour
Merci pour votre réponse. Pour être précis j'aime créer un plugin pour libre
office pour qui il prendra en charge l'arithmétique d'intervalle. Donc au
lieu de faire des calculs avec des nombres, on fera des calculs avec des
intervalles. Et pour cela il faut créer un type intervalle. Exemple
d'opération entre 2 intervalles : [a,b] + [c,d] = [a+c,b+d].
Merci

Bonjour,
Difficile de vous aider car vos explications sont peu claires.

Avec une variable définie par l’utilisateur :
Type Intervalle
     Min as Single
     Max as Single
End type

Function SomInt(A as Intervalle, B as Intervalle) as Intervalle
      SomInt.Min = A.Min + B.Min
      SomInt.Max = A.Max + B.Max
End Function

Attention le type Intervalle ne sera connu que dans le module où il est défini.

Cordialement.

Didier Dorange-Pattoret

Bonjour
Merci pour votre réponse. Pour être précis j'aime créer un plugin pour libre
office pour qui il prendra en charge l'arithmétique d'intervalle. Donc au
lieu de faire des calculs avec des nombres, on fera des calculs avec des
intervalles. Et pour cela il faut créer un type intervalle. Exemple
d'opération entre 2 intervalles : [a,b] + [c,d] = [a+c,b+d].
Merci

La façon de faire est expliquée ici :

https://help.libreoffice.org/Calc/User-Defined_Functions/fr

Après, il faut adapter.

Bonsoir,

Merci pour votre réponse. Pour être précis j'aime créer un plugin pour libre
office pour qui il prendra en charge l'arithmétique d'intervalle. Donc au
lieu de faire des calculs avec des nombres, on fera des calculs avec des
intervalles. Et pour cela il faut créer un type intervalle. Exemple
d'opération entre 2 intervalles : [a,b] + [c,d] = [a+c,b+d].

je plussoie les réponses de Jean-Michel et de Didier. Passer par un type personnalisé semble la bonne voie.

Un "type personnalisé" dans LibO Basic correspond à ce qui s'appelle en Pascal un Record et une Structure en C.

Comme indiqué par Didier, un type personnalisé n'est connu que dans le module où il est déclaré :

par ex

Type MonType
  Item As String
  Valeur As Integer
  Ok As Boolean
End Type

ne peut pas être référencé ailleurs (dans d'autres modules de la même bibliothèque ou dans d'autres bibliothèques). Dans ces cas (assez fréquents somme toute), il faut référencer ce type comme Object ou Variant.

Pour créer une variable de ce type dans un autre module, il faut donc ruser en passant par une fonction "factory". Il suffit donc de créer, dans le même module que celui où le type personnalisé est lui-même déclaré, une fonction comme ceci :

Function CreateMonType() As MonType

  Dim oType As MonType

  CreateMonType = oType

End Function

et appeler cette fonction de n'importe où dans le code :

Dim oMonType As Object
...
oMonType = CreateMonType()

Notez que vous pouvez initialiser des valeurs lors de la création. Yaka passer des paramètres ad hoc à la fonction de création.

Bien cordialement,

Bonjour,

Bonjour
Merci pour votre réponse. Pour être précis j'aime créer un plugin pour libre
office pour qui il prendra en charge l'arithmétique d'intervalle. Donc au
lieu de faire des calculs avec des nombres, on fera des calculs avec des
intervalles. Et pour cela il faut créer un type intervalle. Exemple
d'opération entre 2 intervalles : [a,b] + [c,d] = [a+c,b+d].

Comment est-ce que vous allez utiliser ça dans une feuille de calcul ?
Il me semble qu'il faudrait trouver un moyen de stocker 2 nombres dans une même cellule.

Si vous répondez, merci de penser à utiliser la fonction "répondre à
tous" de votre logiciel de courrier électronique de façon que la liste
de discussion reçoive une copie de votre réponse.
ATTENTION : je ne réponds pas aux réponses qui sont envoyées seulement à moi. Nous sommes sur une liste d'entraide, pas un service après-vente.

Bonne journée
JBF

Bonjour
Est ce qu'il y'aura pas un moyen de stocker 2 nombres dans une même cellule?
Par exemple, peut-on faire pareil comme pour les nombre complexes mais en
changeant "i" avec une autre lettre juste pour séparer les nombres ?
exemple: Pour stocker l'intervalle [5,6] dans une cellule est ce qu'on
pourra mettre un truc de ce genre "5+6x"

Merci d'avance

Bonjour,

Nativement, je ne pense pas.

Mais on peut toujours considérer le contenu d'une cellule comme un texte et le découper suivant les besoins.

Par des formules.
Disons que l'on a 123;456 dans une cellule que je nomme ici int1
=CNUM(GAUCHE(int1;CHERCHE(";";int1)-1))  donne le premier membre (123)
=CNUM(DROITE(int1;NBCAR(nbr1)-CHERCHE(";";int1))) donne le second membre (456)

Ce qui est aussi facilement programmable, surtout si on utilise le python qui peut manipuler directement des choses du genre [123,456]

Quant à la manipulation des nombres complexes, il y a plusieurs fonctions pour cela (qui commencent pas COMPLEXE !!)

Christian F.