Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

alimenter une table depuis une variable texte

7 réponses
Avatar
jbenchetrit
Bonjour,

J'ai dans une base Access une variable de type String contenant un texte.
Les éléments de ce texte sont séparés par des points virgules.
exemple : toto;titi;tutu;...
Je voudrais alimenter une table (1 champ texte) avec chaque élément de ce
texte.
exemple : enreg 1 : toto
enreg 2 : titi
enreg 3 : tutu
...
Si vous disposez d'un bout de code vba je serai preneur.

MERCI

Jacky

7 réponses

Avatar
Raymond [mvp]
Bonsoir.

il va falloir que tu fasses le code.
pour te faire avancer, il faut que tu passes par une fonction split pour
alimenter un tableau et ensuite créer un enregistrement pour chaque valeur
du tableau.
tu peux également passer pas Instr pour calculer la position des ; et
extraire le texte par Mid, mais c'est plus compliqué.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Nouvelle base Access des communes françaises avec
longitude, latitude et 13246 sites internet officiels
http://ardecheearth.free.fr/basededonnees.htm


"jbenchetrit" a écrit dans le message de news:
44e31648$0$854$
| Bonjour,
|
| J'ai dans une base Access une variable de type String contenant un texte.
| Les éléments de ce texte sont séparés par des points virgules.
| exemple : toto;titi;tutu;...
| Je voudrais alimenter une table (1 champ texte) avec chaque élément de ce
| texte.
| exemple : enreg 1 : toto
| enreg 2 : titi
| enreg 3 : tutu
| ...
| Si vous disposez d'un bout de code vba je serai preneur.
|
| MERCI
|
| Jacky
|
|
Avatar
jbenchetrit
MERCI de ta réponse.
Je me doutais que ce n'était pas simple.
J'avais commencé à essayer avec Instr et des Mids mais cela demande beaucoup
de calculs.
Je n'avais pas pensé à la fonction Split. Je l'essaie.
encore MERCI

Jacky
====================================== "Raymond [mvp]" a écrit dans le message
de news: eB1$
Bonsoir.

il va falloir que tu fasses le code.
pour te faire avancer, il faut que tu passes par une fonction split pour
alimenter un tableau et ensuite créer un enregistrement pour chaque valeur
du tableau.
tu peux également passer pas Instr pour calculer la position des ; et
extraire le texte par Mid, mais c'est plus compliqué.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Nouvelle base Access des communes françaises avec
longitude, latitude et 13246 sites internet officiels
http://ardecheearth.free.fr/basededonnees.htm


"jbenchetrit" a écrit dans le message de news:
44e31648$0$854$
| Bonjour,
|
| J'ai dans une base Access une variable de type String contenant un
texte.
| Les éléments de ce texte sont séparés par des points virgules.
| exemple : toto;titi;tutu;...
| Je voudrais alimenter une table (1 champ texte) avec chaque élément de
ce
| texte.
| exemple : enreg 1 : toto
| enreg 2 : titi
| enreg 3 : tutu
| ...
| Si vous disposez d'un bout de code vba je serai preneur.
|
| MERCI
|
| Jacky
|
|




Avatar
michel
Bonjour
Peut etre un peu lourd mais ca fonctionne

Sub decoupe()
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("table1")
var = "titi;toto;tutu;tata"
position = 0
Do
debut = position + 1
position = InStr(position + 1, var, ";")
If position = 0 Then
rst.AddNew
rst!test = Mid(var, debut, Len(var) - debut + 1)
rst.Update
Exit Do
End If
rst.AddNew
rst!test = Mid(var, debut, position - debut)
rst.Update
Loop While position <> 0
Set rst = Nothing
End Sub

Michel
"jbenchetrit" a écrit dans le message de news:
44e31648$0$854$
Bonjour,

J'ai dans une base Access une variable de type String contenant un texte.
Les éléments de ce texte sont séparés par des points virgules.
exemple : toto;titi;tutu;...
Je voudrais alimenter une table (1 champ texte) avec chaque élément de ce
texte.
exemple : enreg 1 : toto
enreg 2 : titi
enreg 3 : tutu
...
Si vous disposez d'un bout de code vba je serai preneur.

MERCI

Jacky




Avatar
jbenchetrit
Bonjour Michel,

BRAVO
Et tu dis que ton code est un peu lourd !
Je n'ose te montrer le mien.

Je l'ai adapté à mon mdb et fonctionnement parfait.
MERCI

Jacky
============================================================= "michel" a écrit dans le message de
news:
Bonjour
Peut etre un peu lourd mais ca fonctionne

Sub decoupe()
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("table1")
var = "titi;toto;tutu;tata"
position = 0
Do
debut = position + 1
position = InStr(position + 1, var, ";")
If position = 0 Then
rst.AddNew
rst!test = Mid(var, debut, Len(var) - debut + 1)
rst.Update
Exit Do
End If
rst.AddNew
rst!test = Mid(var, debut, position - debut)
rst.Update
Loop While position <> 0
Set rst = Nothing
End Sub

Michel
"jbenchetrit" a écrit dans le message de news:
44e31648$0$854$
Bonjour,

J'ai dans une base Access une variable de type String contenant un texte.
Les éléments de ce texte sont séparés par des points virgules.
exemple : toto;titi;tutu;...
Je voudrais alimenter une table (1 champ texte) avec chaque élément de ce
texte.
exemple : enreg 1 : toto
enreg 2 : titi
enreg 3 : tutu
...
Si vous disposez d'un bout de code vba je serai preneur.

MERCI

Jacky








Avatar
michel
Re Bonjour
Comme te le disais Raymond la fonction Split offre une solution plus
"Propre".
Sub decoupe()
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("table1")
var = "titi;toto;tutu;tata"
tableau = Split(var, ";")
For nb = 0 To UBound(tableau)
rst.AddNew
rst!test = tableau(nb)
rst.Update
Next
Set rst = Nothing
End Sub
Attention split renvoie un tableau donc le premier element commence a zero
et Ubound donne le numero du dernier
Plus simple Non
Michel
"jbenchetrit" a écrit dans le message de news:
44e44b71$0$853$
Bonjour Michel,

BRAVO
Et tu dis que ton code est un peu lourd !
Je n'ose te montrer le mien.

Je l'ai adapté à mon mdb et fonctionnement parfait.
MERCI

Jacky
============================================================= > "michel" a écrit dans le message de
news:
Bonjour
Peut etre un peu lourd mais ca fonctionne

Sub decoupe()
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("table1")
var = "titi;toto;tutu;tata"
position = 0
Do
debut = position + 1
position = InStr(position + 1, var, ";")
If position = 0 Then
rst.AddNew
rst!test = Mid(var, debut, Len(var) - debut + 1)
rst.Update
Exit Do
End If
rst.AddNew
rst!test = Mid(var, debut, position - debut)
rst.Update
Loop While position <> 0
Set rst = Nothing
End Sub

Michel
"jbenchetrit" a écrit dans le message de news:
44e31648$0$854$
Bonjour,

J'ai dans une base Access une variable de type String contenant un
texte.
Les éléments de ce texte sont séparés par des points virgules.
exemple : toto;titi;tutu;...
Je voudrais alimenter une table (1 champ texte) avec chaque élément de
ce texte.
exemple : enreg 1 : toto
enreg 2 : titi
enreg 3 : tutu
...
Si vous disposez d'un bout de code vba je serai preneur.

MERCI

Jacky












Avatar
jbenchetrit
Bonsoir Messieurs,

CHAPEAU.
Alors là il n'est plus du tout question que je vous montre mon code.
Faire tout ça en si peu de lignes de code, je ne peux dire que Bravo.

Encore MERCI de toutes vos explications (en peu de lignes) et de votre
gentillesse à aider les adeptes d'Access.

Si j'abusais j'aimerai profiter de votre expérience (et du code) pour
utiliser les propriétés Begintrans, Commitrans et Rollback.
Et ce dans un formulaire contenant une table et une sous table (exemples :
Entêtes de factures et Lignes de factures).
Donc un clic sur un bouton Annuler qui ne provoque pas d'enregistrement
incomplet dans les deux tables.

Quoi qu'il en soit MERCI
Jacky


=============================================================== "michel" a écrit dans le message de
news: %
Re Bonjour
Comme te le disais Raymond la fonction Split offre une solution plus
"Propre".
Sub decoupe()
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("table1")
var = "titi;toto;tutu;tata"
tableau = Split(var, ";")
For nb = 0 To UBound(tableau)
rst.AddNew
rst!test = tableau(nb)
rst.Update
Next
Set rst = Nothing
End Sub
Attention split renvoie un tableau donc le premier element commence a zero
et Ubound donne le numero du dernier
Plus simple Non
Michel
"jbenchetrit" a écrit dans le message de news:
44e44b71$0$853$
Bonjour Michel,

BRAVO
Et tu dis que ton code est un peu lourd !
Je n'ose te montrer le mien.

Je l'ai adapté à mon mdb et fonctionnement parfait.
MERCI

Jacky
============================================================= >> "michel" a écrit dans le message de
news:
Bonjour
Peut etre un peu lourd mais ca fonctionne

Sub decoupe()
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("table1")
var = "titi;toto;tutu;tata"
position = 0
Do
debut = position + 1
position = InStr(position + 1, var, ";")
If position = 0 Then
rst.AddNew
rst!test = Mid(var, debut, Len(var) - debut + 1)
rst.Update
Exit Do
End If
rst.AddNew
rst!test = Mid(var, debut, position - debut)
rst.Update
Loop While position <> 0
Set rst = Nothing
End Sub

Michel
"jbenchetrit" a écrit dans le message de news:
44e31648$0$854$
Bonjour,

J'ai dans une base Access une variable de type String contenant un
texte.
Les éléments de ce texte sont séparés par des points virgules.
exemple : toto;titi;tutu;...
Je voudrais alimenter une table (1 champ texte) avec chaque élément de
ce texte.
exemple : enreg 1 : toto
enreg 2 : titi
enreg 3 : tutu
...
Si vous disposez d'un bout de code vba je serai preneur.

MERCI

Jacky
















Avatar
michel
Bonjour
Sauf erreur de ma part on ne peut pas utiliser les transactions sur un
formulaire liee a une table car le form gere sa propre transaction. Mais sur
ler bouton annuler pourquoi pas simplement :
Me.Undo
Bonne journee
Michel
"jbenchetrit" a écrit dans le message de news:
44e4a7df$0$852$
Bonsoir Messieurs,

CHAPEAU.
Alors là il n'est plus du tout question que je vous montre mon code.
Faire tout ça en si peu de lignes de code, je ne peux dire que Bravo.

Encore MERCI de toutes vos explications (en peu de lignes) et de votre
gentillesse à aider les adeptes d'Access.

Si j'abusais j'aimerai profiter de votre expérience (et du code) pour
utiliser les propriétés Begintrans, Commitrans et Rollback.
Et ce dans un formulaire contenant une table et une sous table (exemples
: Entêtes de factures et Lignes de factures).
Donc un clic sur un bouton Annuler qui ne provoque pas d'enregistrement
incomplet dans les deux tables.

Quoi qu'il en soit MERCI
Jacky


=============================================================== > "michel" a écrit dans le message de
news: %
Re Bonjour
Comme te le disais Raymond la fonction Split offre une solution plus
"Propre".
Sub decoupe()
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("table1")
var = "titi;toto;tutu;tata"
tableau = Split(var, ";")
For nb = 0 To UBound(tableau)
rst.AddNew
rst!test = tableau(nb)
rst.Update
Next
Set rst = Nothing
End Sub
Attention split renvoie un tableau donc le premier element commence a
zero et Ubound donne le numero du dernier
Plus simple Non
Michel
"jbenchetrit" a écrit dans le message de news:
44e44b71$0$853$
Bonjour Michel,

BRAVO
Et tu dis que ton code est un peu lourd !
Je n'ose te montrer le mien.

Je l'ai adapté à mon mdb et fonctionnement parfait.
MERCI

Jacky
============================================================= >>> "michel" a écrit dans le message
de news:
Bonjour
Peut etre un peu lourd mais ca fonctionne

Sub decoupe()
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("table1")
var = "titi;toto;tutu;tata"
position = 0
Do
debut = position + 1
position = InStr(position + 1, var, ";")
If position = 0 Then
rst.AddNew
rst!test = Mid(var, debut, Len(var) - debut + 1)
rst.Update
Exit Do
End If
rst.AddNew
rst!test = Mid(var, debut, position - debut)
rst.Update
Loop While position <> 0
Set rst = Nothing
End Sub

Michel
"jbenchetrit" a écrit dans le message de news:
44e31648$0$854$
Bonjour,

J'ai dans une base Access une variable de type String contenant un
texte.
Les éléments de ce texte sont séparés par des points virgules.
exemple : toto;titi;tutu;...
Je voudrais alimenter une table (1 champ texte) avec chaque élément de
ce texte.
exemple : enreg 1 : toto
enreg 2 : titi
enreg 3 : tutu
...
Si vous disposez d'un bout de code vba je serai preneur.

MERCI

Jacky