OVH Cloud OVH Cloud

Fonction Split VBA

2 réponses
Avatar
Maurice
Bonjour,

Dans la table "test" j'ai les champs suivants:
Nom; prenom; adresse; code
X Z YYY 12;25;30
..
..
Je souhaite transformer ces champs vers une table "temp"=20
sous le format suivants:
Nom; Prenom; adresse; code
X Z YYY 12
X Z YYY 25
X Z YYY 30

Mon probl=E8me et que j'utilise la fonction split mais le=20
r=E9sulat n'est pas bon il mon prends toujours la premi=E8re=20
valeur dans le champ code:

Nom; Prenom; adresse; code
X Z YYY 12
X Z YYY 12
X Z YYY 12

Le code est ci-joint:

Set Db =3D CurrentDb
Set Rs =3D Db.OpenRecordset("test")
Set Rs1 =3D Db.OpenRecordset("Temp")
Do Until Rs.EOF
If Not IsNull(Rs!code) Then
Tableau =3D Split(Rs!code, ";")
For i =3D LBound(Tableau) To UBound(Tableau)
If Tableau(i) <> "" Then
Rs1.AddNew
Rs1!Nom =3D Rs!nom
Rs1!prenom =3D Rs!prenom
Rs1!adresse =3D Rs!adresse
Rs1!code =3D Tableau(Ix)
Rs1.Update
End If
Next i
End If
Rs.MoveNext
Loop
MsgBox "ok"
End Sub

Merci de votre aide!

2 réponses

Avatar
ng
Salut,

Tu utilies la mauvaises variables (compteur), remplace :

Rs1!code = Tableau(Ix)



Par

Rs1!code = Tableau(i)



Je te conseille d'utiliser l'instruction Option Explicit au début de tes
modules afin d'éviter ce genre d'erreur.


--
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/
http://apisvb.europe.webmatrixhosting.net/



Maurice a écrit :

Bonjour,

Dans la table "test" j'ai les champs suivants:
Nom; prenom; adresse; code
X Z YYY 12;25;30
..
..
Je souhaite transformer ces champs vers une table "temp"
sous le format suivants:
Nom; Prenom; adresse; code
X Z YYY 12
X Z YYY 25
X Z YYY 30

Mon problème et que j'utilise la fonction split mais le
résulat n'est pas bon il mon prends toujours la première
valeur dans le champ code:

Nom; Prenom; adresse; code
X Z YYY 12
X Z YYY 12
X Z YYY 12

Le code est ci-joint:

Set Db = CurrentDb
Set Rs = Db.OpenRecordset("test")
Set Rs1 = Db.OpenRecordset("Temp")
Do Until Rs.EOF
If Not IsNull(Rs!code) Then
Tableau = Split(Rs!code, ";")
For i = LBound(Tableau) To UBound(Tableau)
If Tableau(i) <> "" Then
Rs1.AddNew
Rs1!Nom = Rs!nom
Rs1!prenom = Rs!prenom
Rs1!adresse = Rs!adresse
Rs1!code = Tableau(Ix)
Rs1.Update
End If
Next i
End If
Rs.MoveNext
Loop
MsgBox "ok"
End Sub

Merci de votre aide!


Avatar
Merci!
-----Message d'origine-----
Salut,

Tu utilies la mauvaises variables (compteur), remplace :

Rs1!code = Tableau(Ix)



Par

Rs1!code = Tableau(i)



Je te conseille d'utiliser l'instruction Option Explicit


au début de tes
modules afin d'éviter ce genre d'erreur.


--
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/
http://apisvb.europe.webmatrixhosting.net/



Maurice a écrit :

Bonjour,

Dans la table "test" j'ai les champs suivants:
Nom; prenom; adresse; code
X Z YYY 12;25;30
..
..
Je souhaite transformer ces champs vers une table "temp"
sous le format suivants:
Nom; Prenom; adresse; code
X Z YYY 12
X Z YYY 25
X Z YYY 30

Mon problème et que j'utilise la fonction split mais le
résulat n'est pas bon il mon prends toujours la première
valeur dans le champ code:

Nom; Prenom; adresse; code
X Z YYY 12
X Z YYY 12
X Z YYY 12

Le code est ci-joint:

Set Db = CurrentDb
Set Rs = Db.OpenRecordset("test")
Set Rs1 = Db.OpenRecordset("Temp")
Do Until Rs.EOF
If Not IsNull(Rs!code) Then
Tableau = Split(Rs!code, ";")
For i = LBound(Tableau) To UBound(Tableau)
If Tableau(i) <> "" Then
Rs1.AddNew
Rs1!Nom = Rs!nom
Rs1!prenom = Rs!prenom
Rs1!adresse = Rs!adresse
Rs1!code = Tableau(Ix)
Rs1.Update
End If
Next i
End If
Rs.MoveNext
Loop
MsgBox "ok"
End Sub

Merci de votre aide!




.