[Résolu] [Basic] Copie d'un tableau de variants

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 !
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 639
Inscription : 09 août 2017 22:15

[Résolu] [Basic] Copie d'un tableau de variants

Message par Jurassic Pork »

hello,
voici mon souci :
je veux copier un tableau de variants dans un autre tableau de variants. Je procède comme ceci :

Code : Tout sélectionner

Sub TestTableauVariants()
Dim Tableau1(3) As Variant
Dim Tableau2(3) As Variant
Tableau1(0) = "Un"
Tableau1(1) = 2
Tableau1(3) = "Trois"
Tableau2 = Tableau1
print "Tableau2(3) : " & Tableau2(3)
Tableau2(3) = "Tableau2"
print "Tableau1(3) : " & Tableau1(3)
Mais on s'aperçoit quand procédant comme ceci , il s'agit plus d'une affectation que d'une copie, car on modifiant un élément du tableau 2, l'élément du tableau 1 est modifié aussi.
Alors j'utilise une fonction de copie :

Code : Tout sélectionner

Function DuplicateArray(Source)
Dim x as Integer
Dim Dupli(UBound(Source))
For x = 0 to Ubound(Source)
Dupli(x) = Source(x)
next x
DuplicateArray = Dupli
End Function
et cette fois les deux tableaux sont indépendants :

Code : Tout sélectionner

Sub TestTableauVariants()
Dim Tableau1(3) As Variant
Dim Tableau2(3) As Variant
Tableau1(0) = "Un"
Tableau1(1) = 2
Tableau1(3) = "Trois"
Tableau2 = DuplicateArray(Tableau1)
Tableau2(3) = "Tab3"
print "Tableau1(3) : " & Tableau1(3)
End Sub
Y-a-t-il un autre moyen plus élégant pour copier un tableau ?

Ami calmant, J.P
Dernière modification par Jurassic Pork le 08 déc. 2018 12:03, modifié 2 fois.
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Basic] Copie d'un tableau de variants dans un autre tab

Message par Hubert Lambert »

Bonjour,

Apparemment, l'instruction "redim preserve" crée une copie en place du tableau concerné (voir, en anglais, https://forum.openoffice.org/en/forum/v ... 43#p445243).
À tester bien sûr.
Ce n'est peut-être pas plus élégant, mais sans doute plus rapide sur de gros tableaux...
Cordialement.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 639
Inscription : 09 août 2017 22:15

[Résolu][Basic] Copie d'un tableau de variants dans un autre

Message par Jurassic Pork »

hello Hubert,
merci pour ta réponse. Cela semble fonctionner :

Code : Tout sélectionner

Sub TestTableauVariants()
Dim Tableau1(3) As Variant
Dim Tableau2(3) As Variant
Tableau1(0) = "Un"
Tableau1(1) = 2
Tableau1(3) = "Trois"
Tableau2 = Tableau1
redim preserve Tableau2(3)
print "Tableau2(3) : " & Tableau2(3)
Tableau2(3) = "Tableau2"
print "Tableau1(3) : " & Tableau1(3)
print "Tableau2(3) : " & Tableau2(3)

Cela permet de se passer d'une nouvelle fonction.
Ami calmant, J.P
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04