OVH Cloud OVH Cloud

Fonction Split

5 réponses
Avatar
mymoi
Bonjour =E0 tous

Merci de votre aide j'ai du mal!!!

> j'ai une table access sous le format suivant:
>
> nom / prenom / article / date ...
> ZZ test 12;3;4 20/12/2002
>
> Que je souhaite copi=E9 dans une autre table sous le=20
format suivant
>
> nom / prenom / article /date=20
> ZZ test 12 20/12/2002
> zz test 3 20/12/2002
> ZZ test 4 20/12/2002
> .
> .
> Merci de votre aide!!!

Bonjour.

il faut le faire en vba.

il faut lire ta table, faire un split de la valeur article=20
dans un tableau=20
avec le d=E9limiteur ;
faire une boucle dans le tableau jusqu'=E0 =E9puisement des=20
valeurs et cr=E9er un=20
enregistrement =E0 chaque boucle.

--=20
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.kynet.be/mpfa/charte.htm pour une meilleure
efficacit=E9 de tes interventions sur MPFA

.

5 réponses

Avatar
Raymond [mvp]
Bonjour.

c'était ma prose ça ? obligé de continuer nest-ce pas ?

à part quelques lignes supplémentaires pour tester certaines erreurs telles
une table vide, tu peux faire comme ceci:

Private Sub Commande0_Click()
Dim Tableau As Variant
Dim Ix As Integer
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Dim Rs1 As DAO.Recordset
DoCmd.RunSQL "delete * from table2"
Set Db = CurrentDb
Set Rs = Db.OpenRecordset("table1")
Set Rs1 = Db.OpenRecordset("table2")
Do Until Rs.EOF
If Not IsNull(Rs!Destination) Then
Tableau = Split(Rs!Destination, ";")
For Ix = LBound(Tableau) To UBound(Tableau)
If Tableau(Ix) <> "" Then
Rs1.AddNew
Rs1!Numero = Rs!Numero
Rs1!Destination = Tableau(Ix)
Rs1.Update
End If
Next Ix
End If
Rs.MoveNext
Loop
End Sub

j'ai utilisé des noms existants, tu remplaces destination par article et
numero par nom.
évite d'utiliser des champs qui s'appellent nom ou date tu auras des
problèmes avec vba.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"mymoi" a écrit dans le message de
news:085c01c3af4d$0673c9a0$
Bonjour à tous

Merci de votre aide j'ai du mal!!!

j'ai une table access sous le format suivant:

nom / prenom / article / date ...
ZZ test 12;3;4 20/12/2002

Que je souhaite copié dans une autre table sous le
format suivant


nom / prenom / article /date
ZZ test 12 20/12/2002
zz test 3 20/12/2002
ZZ test 4 20/12/2002
.
.
Merci de votre aide!!!


Bonjour.

il faut le faire en vba.

il faut lire ta table, faire un split de la valeur article
dans un tableau
avec le délimiteur ;
faire une boucle dans le tableau jusqu'à épuisement des
valeurs et créer un
enregistrement à chaque boucle.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.kynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA

.

Avatar
Raymond [mvp]
J'espère que tu as compris que je n'ai pas mis les close des tables et les
nothing des objets. excuses

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA
Avatar
3stone
"Raymond [mvp]"
J'espère que tu as compris...



Non, mais comme "il" va revenir en ouvrant un nouveau fil...

;-))


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------

Avatar
Merci Beaucoup =)
-----Message d'origine-----
Bonjour.

c'était ma prose ça ? obligé de continuer nest-ce pas ?

à part quelques lignes supplémentaires pour tester
certaines erreurs telles

une table vide, tu peux faire comme ceci:

Private Sub Commande0_Click()
Dim Tableau As Variant
Dim Ix As Integer
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Dim Rs1 As DAO.Recordset
DoCmd.RunSQL "delete * from table2"
Set Db = CurrentDb
Set Rs = Db.OpenRecordset("table1")
Set Rs1 = Db.OpenRecordset("table2")
Do Until Rs.EOF
If Not IsNull(Rs!Destination) Then
Tableau = Split(Rs!Destination, ";")
For Ix = LBound(Tableau) To UBound(Tableau)
If Tableau(Ix) <> "" Then
Rs1.AddNew
Rs1!Numero = Rs!Numero
Rs1!Destination = Tableau(Ix)
Rs1.Update
End If
Next Ix
End If
Rs.MoveNext
Loop
End Sub

j'ai utilisé des noms existants, tu remplaces destination
par article et

numero par nom.
évite d'utiliser des champs qui s'appellent nom ou date
tu auras des

problèmes avec vba.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"mymoi" a écrit
dans le message de

news:085c01c3af4d$0673c9a0$
Bonjour à tous

Merci de votre aide j'ai du mal!!!

j'ai une table access sous le format suivant:

nom / prenom / article / date ...
ZZ test 12;3;4 20/12/2002

Que je souhaite copié dans une autre table sous le
format suivant


nom / prenom / article /date
ZZ test 12 20/12/2002
zz test 3 20/12/2002
ZZ test 4 20/12/2002
.
.
Merci de votre aide!!!


Bonjour.

il faut le faire en vba.

il faut lire ta table, faire un split de la valeur article
dans un tableau
avec le délimiteur ;
faire une boucle dans le tableau jusqu'à épuisement des
valeurs et créer un
enregistrement à chaque boucle.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.kynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA

..



.




Avatar
3stone
Merci Beaucoup =)



Perdu !

J'offre l'appéro ;-))


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------