OVH Cloud OVH Cloud

Copie de structure

5 réponses
Avatar
Stéphane
Bonjour,

J'ai créé une structure de type personelle,
j'ai une variable titi(100) qui de type personelle
et une autre tata(100) qy=ui est également de type personelle

est-ce qu'il y a un moyen simple de copier titi dans tata sans faire de
boucle du style
titi=tata?

et d'effacer tout ce qu'il y a dans tata?

merci d'avance

5 réponses

Avatar
ng
Salut,

Dans l'exemple suivant je copie un tableau de structure dans un autre puis
je l'efface :

Option Explicit

Private Type Personne
Nom As String
Prenom As String
End Type

Private Sub Form_Load()
Dim tGroupe1() As Personne
Dim tGroupe2() As Personne

ReDim tGroupe1(2)

With tGroupe1(0)
.Nom = "BLANC"
.Prenom = "Michel"
End With

With tGroupe1(1)
.Nom = "JUGNOT"
.Prenom = "Gérard"
End With

With tGroupe1(2)
.Nom = "LHERMITTE"
.Prenom = "Thierry"
End With

tGroupe2 = tGroupe1 'copie
Erase tGroupe1 'efface

Dim i As Integer
For i = 0 To UBound(tGroupe2)
Debug.Print "Groupe2[" & i & "]", tGroupe2(i).Nom,
tGroupe2(i).Prenom
Next
End Sub

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Stéphane wrote:
Bonjour,

J'ai créé une structure de type personelle,
j'ai une variable titi(100) qui de type personelle
et une autre tata(100) qy=ui est également de type personelle

est-ce qu'il y a un moyen simple de copier titi dans tata sans faire
de boucle du style
titi=tata?

et d'effacer tout ce qu'il y a dans tata?

merci d'avance


Avatar
Stéphane
Est ce possible avec des taille de tableau fix ?

"ng" wrote:

Salut,

Dans l'exemple suivant je copie un tableau de structure dans un autre puis
je l'efface :

Option Explicit

Private Type Personne
Nom As String
Prenom As String
End Type

Private Sub Form_Load()
Dim tGroupe1() As Personne
Dim tGroupe2() As Personne

ReDim tGroupe1(2)

With tGroupe1(0)
.Nom = "BLANC"
.Prenom = "Michel"
End With

With tGroupe1(1)
.Nom = "JUGNOT"
.Prenom = "Gérard"
End With

With tGroupe1(2)
.Nom = "LHERMITTE"
.Prenom = "Thierry"
End With

tGroupe2 = tGroupe1 'copie
Erase tGroupe1 'efface

Dim i As Integer
For i = 0 To UBound(tGroupe2)
Debug.Print "Groupe2[" & i & "]", tGroupe2(i).Nom,
tGroupe2(i).Prenom
Next
End Sub

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Stéphane wrote:
> Bonjour,
>
> J'ai créé une structure de type personelle,
> j'ai une variable titi(100) qui de type personelle
> et une autre tata(100) qy=ui est également de type personelle
>
> est-ce qu'il y a un moyen simple de copier titi dans tata sans faire
> de boucle du style
> titi=tata?
>
> et d'effacer tout ce qu'il y a dans tata?
>
> merci d'avance





Avatar
ng
Salut,

Option Explicit

Private Type Personne
Nom As String
Prenom As String
End Type

Private Sub Form_Load()
Dim tGroupe1(2) As Personne
Dim tGroupe2() As Personne

'ReDim tGroupe1(2)

With tGroupe1(0)
.Nom = "BLANC"
.Prenom = "Michel"
End With

With tGroupe1(1)
.Nom = "JUGNOT"
.Prenom = "Gérard"
End With

With tGroupe1(2)
.Nom = "LHERMITTE"
.Prenom = "Thierry"
End With

tGroupe2 = tGroupe1 'copie
Erase tGroupe1 'efface

Dim i As Integer
For i = 0 To UBound(tGroupe2)
Debug.Print "Groupe2[" & i & "]", tGroupe2(i).Nom,
tGroupe2(i).Prenom
Next


For i = 0 To UBound(tGroupe1)
Debug.Print "Groupe1[" & i & "]", tGroupe1(i).Nom,
tGroupe1(i).Prenom
Next
End Sub


Moralité tGroupe2 ne doit pas etre de taille fixe. tGroupe1 peut l'etre.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Stéphane wrote:
Est ce possible avec des taille de tableau fix ?

"ng" wrote:

Salut,

Dans l'exemple suivant je copie un tableau de structure dans un
autre puis je l'efface :

Option Explicit

Private Type Personne
Nom As String
Prenom As String
End Type

Private Sub Form_Load()
Dim tGroupe1() As Personne
Dim tGroupe2() As Personne

ReDim tGroupe1(2)

With tGroupe1(0)
.Nom = "BLANC"
.Prenom = "Michel"
End With

With tGroupe1(1)
.Nom = "JUGNOT"
.Prenom = "Gérard"
End With

With tGroupe1(2)
.Nom = "LHERMITTE"
.Prenom = "Thierry"
End With

tGroupe2 = tGroupe1 'copie
Erase tGroupe1 'efface

Dim i As Integer
For i = 0 To UBound(tGroupe2)
Debug.Print "Groupe2[" & i & "]", tGroupe2(i).Nom,
tGroupe2(i).Prenom
Next
End Sub

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Stéphane wrote:
Bonjour,

J'ai créé une structure de type personelle,
j'ai une variable titi(100) qui de type personelle
et une autre tata(100) qy=ui est également de type personelle

est-ce qu'il y a un moyen simple de copier titi dans tata sans faire
de boucle du style
titi=tata?

et d'effacer tout ce qu'il y a dans tata?

merci d'avance






Avatar
Loïc
Non, tu es obligé de recopier élément par élément. J'ai eu exactement
le même problème.

--
Loïc
Avatar
Patrice Henrio
Je ne pense pas, il est possible de faire un copymemory puisque dans un
tableau chaque valeur a une taille fixe.
La solution a déjà été donnée dans ce groupe il y a plusieurs mois déjà.
L'idée est de récupérer l'adresse du premier élément du tableau et de copie
le nombre d'octets nécessaire vers l'espace mémoire utilisé dans la deuxième
structure.

D'ailleurs

"Loïc" a écrit dans le message de news:

Non, tu es obligé de recopier élément par élément. J'ai eu exactement le
même problème.

--
Loïc