OVH Cloud OVH Cloud

comment executer une requête d'ajout x fois ou x=nombre de caractère dans un enregistrements

14 réponses
Avatar
dams27_56
Bonjour =E0 tous,

Je souhaiterais dupliquer un champ avec une requ=EAte d'ajout en
fonction de certains param=E8tres. Voivi le champ qui contient les
param=E8tres:1,5 | 2,0 | 2,5. En fait je voudrais copier toutes la ligne

autant de fois que le symbole "|" est pr=E9sent dans ce champs. En somme

je souhaite avoir trois fois la ligne qui contient dans une de mes
colonnes le champ 1,5 | 2,0 | 2,5.=20


Merci beaucoup pour votre aide

10 réponses

1 2
Avatar
ze_titi
Bonjour,

il n'était pas forcément utile de reposter (ton précédent post est encore
sur la page...)

Faire ce que tu veux faire directement dans une requête ajout n'est pas
possible.

Il faut obligatoirement passer par du code:

Ceci est à mettre dans un module quelconque

Function NbOc(Chaine As String, Ch As String, Optional RC As integer = 1) As
Long
NbOc = (Len(Chaine) - Len(Replace(Chaine, Ch, "", , , RC))) / Len(Ch)
End Function

et dans le formulaire d'où tu lances ta requête:

dim i as long
for i=0 to NbOc(tonChamp,"|",1)
docmd.openQuery "TaRequeteAjout",acViewNormal
next

Voilou !

Bon code
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Bonjour à tous,

Je souhaiterais dupliquer un champ avec une requête d'ajout en
fonction de certains paramètres. Voivi le champ qui contient les
paramètres:1,5 | 2,0 | 2,5. En fait je voudrais copier toutes la ligne

autant de fois que le symbole "|" est présent dans ce champs. En somme

je souhaite avoir trois fois la ligne qui contient dans une de mes
colonnes le champ 1,5 | 2,0 | 2,5.


Merci beaucoup pour votre aide




Avatar
dams27_56
Re,
merci beaucoup pour le code, mais il y a un petit problème.
en fait il ajoute tous les enregistrements contenant "|", mais ne
duplique pas les lignes en fonctions du nombre de "|" présent dans mon
champs. par exemple si j'ai 2x"|" dans mon champ, il devrait le
dupliquer deux fois, et ainsi de suite pour 3"|"...

pouvez-vous m'aider
merci d'avance


Bonjour,

il n'était pas forcément utile de reposter (ton précédent post es t encore
sur la page...)

Faire ce que tu veux faire directement dans une requête ajout n'est pas
possible.

Il faut obligatoirement passer par du code:

Ceci est à mettre dans un module quelconque

Function NbOc(Chaine As String, Ch As String, Optional RC As integer = 1) As
Long
NbOc = (Len(Chaine) - Len(Replace(Chaine, Ch, "", , , RC))) / Len(Ch)
End Function

et dans le formulaire d'où tu lances ta requête:

dim i as long
for i=0 to NbOc(tonChamp,"|",1)
docmd.openQuery "TaRequeteAjout",acViewNormal
next

Voilou !

Bon code
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Bonjour à tous,

Je souhaiterais dupliquer un champ avec une requête d'ajout en
fonction de certains paramètres. Voivi le champ qui contient les
paramètres:1,5 | 2,0 | 2,5. En fait je voudrais copier toutes la ligne

autant de fois que le symbole "|" est présent dans ce champs. En somme

je souhaite avoir trois fois la ligne qui contient dans une de mes
colonnes le champ 1,5 | 2,0 | 2,5.


Merci beaucoup pour votre aide






Avatar
ze_titi
M'est avis qu'il doit y avoir un souci dans ta requête ajout...
Théoriquement, ce code fonctionne (ou alors j'ai glissé une coquille dans mon
code et je ne la vois pas, c'est possible aussi...)

Rapport à ta requête, vérifie que tu n'essaies pas de dupliquer ta clé
primaire. Cela peut expliquer l'absence de duplication d'enregistrement.


Par ailleurs, le "i=0" dans la boucle for est à remplacer par "i=1"...

Voilou !
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Re,
merci beaucoup pour le code, mais il y a un petit problème.
en fait il ajoute tous les enregistrements contenant "|", mais ne
duplique pas les lignes en fonctions du nombre de "|" présent dans mon
champs. par exemple si j'ai 2x"|" dans mon champ, il devrait le
dupliquer deux fois, et ainsi de suite pour 3"|"...

pouvez-vous m'aider
merci d'avance


Bonjour,

il n'était pas forcément utile de reposter (ton précédent post est encore
sur la page...)

Faire ce que tu veux faire directement dans une requête ajout n'est pas
possible.

Il faut obligatoirement passer par du code:

Ceci est à mettre dans un module quelconque

Function NbOc(Chaine As String, Ch As String, Optional RC As integer = 1) As
Long
NbOc = (Len(Chaine) - Len(Replace(Chaine, Ch, "", , , RC))) / Len(Ch)
End Function

et dans le formulaire d'où tu lances ta requête:

dim i as long
for i=0 to NbOc(tonChamp,"|",1)
docmd.openQuery "TaRequeteAjout",acViewNormal
next

Voilou !

Bon code
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Bonjour à tous,

Je souhaiterais dupliquer un champ avec une requête d'ajout en
fonction de certains paramètres. Voivi le champ qui contient les
paramètres:1,5 | 2,0 | 2,5. En fait je voudrais copier toutes la ligne

autant de fois que le symbole "|" est présent dans ce champs. En somme

je souhaite avoir trois fois la ligne qui contient dans une de mes
colonnes le champ 1,5 | 2,0 | 2,5.


Merci beaucoup pour votre aide










Avatar
dams27_56
j'ai essayé avec un i=1, mais le code ne se lance pas!!!!
Avec un i=0 cela fonctionne, mais il me duplique seulement une seule
fois les enregistrements contenant "|". il ne les duplique pas en
fonctions du nbr de "|" présent dans le champ.

pour ce qui concerne ma requête d'ajout, j'ajoute tout les champs dans
ma table, et j'ai mis un critères (Comme "*|*") dans la colonne où il
y a des "|".

merci de m'aider, car là je suis dans la galère


M'est avis qu'il doit y avoir un souci dans ta requête ajout...
Théoriquement, ce code fonctionne (ou alors j'ai glissé une coquille dans mon
code et je ne la vois pas, c'est possible aussi...)

Rapport à ta requête, vérifie que tu n'essaies pas de dupliquer ta clé
primaire. Cela peut expliquer l'absence de duplication d'enregistrement.


Par ailleurs, le "i=0" dans la boucle for est à remplacer par "i=1" ...

Voilou !
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Re,
merci beaucoup pour le code, mais il y a un petit problème.
en fait il ajoute tous les enregistrements contenant "|", mais ne
duplique pas les lignes en fonctions du nombre de "|" présent dans mon
champs. par exemple si j'ai 2x"|" dans mon champ, il devrait le
dupliquer deux fois, et ainsi de suite pour 3"|"...

pouvez-vous m'aider
merci d'avance


Bonjour,

il n'était pas forcément utile de reposter (ton précédent pos t est encore
sur la page...)

Faire ce que tu veux faire directement dans une requête ajout n'est pas
possible.

Il faut obligatoirement passer par du code:

Ceci est à mettre dans un module quelconque

Function NbOc(Chaine As String, Ch As String, Optional RC As integer = 1) As
Long
NbOc = (Len(Chaine) - Len(Replace(Chaine, Ch, "", , , RC))) / Len (Ch)
End Function

et dans le formulaire d'où tu lances ta requête:

dim i as long
for i=0 to NbOc(tonChamp,"|",1)
docmd.openQuery "TaRequeteAjout",acViewNormal
next

Voilou !

Bon code
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Bonjour à tous,

Je souhaiterais dupliquer un champ avec une requête d'ajout en
fonction de certains paramètres. Voivi le champ qui contient les
paramètres:1,5 | 2,0 | 2,5. En fait je voudrais copier toutes la ligne

autant de fois que le symbole "|" est présent dans ce champs. En somme

je souhaite avoir trois fois la ligne qui contient dans une de mes
colonnes le champ 1,5 | 2,0 | 2,5.


Merci beaucoup pour votre aide












Avatar
ze_titi
Remplace la fonction NbOc par celle-ci:

Function NbOc(Chaine as String,Ch as String) as Long
NbOc=0
For i= 1 to len(Chaine)
if mid$(Chaine,i,1)=Ch then NbOc=NbOc+1
next
End Function

--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




j'ai essayé avec un i=1, mais le code ne se lance pas!!!!
Avec un i=0 cela fonctionne, mais il me duplique seulement une seule
fois les enregistrements contenant "|". il ne les duplique pas en
fonctions du nbr de "|" présent dans le champ.

pour ce qui concerne ma requête d'ajout, j'ajoute tout les champs dans
ma table, et j'ai mis un critères (Comme "*|*") dans la colonne où il
y a des "|".

merci de m'aider, car là je suis dans la galère


M'est avis qu'il doit y avoir un souci dans ta requête ajout...
Théoriquement, ce code fonctionne (ou alors j'ai glissé une coquille dans mon
code et je ne la vois pas, c'est possible aussi...)

Rapport à ta requête, vérifie que tu n'essaies pas de dupliquer ta clé
primaire. Cela peut expliquer l'absence de duplication d'enregistrement.


Par ailleurs, le "i=0" dans la boucle for est à remplacer par "i=1"....

Voilou !
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Re,
merci beaucoup pour le code, mais il y a un petit problème.
en fait il ajoute tous les enregistrements contenant "|", mais ne
duplique pas les lignes en fonctions du nombre de "|" présent dans mon
champs. par exemple si j'ai 2x"|" dans mon champ, il devrait le
dupliquer deux fois, et ainsi de suite pour 3"|"...

pouvez-vous m'aider
merci d'avance


Bonjour,

il n'était pas forcément utile de reposter (ton précédent post est encore
sur la page...)

Faire ce que tu veux faire directement dans une requête ajout n'est pas
possible.

Il faut obligatoirement passer par du code:

Ceci est à mettre dans un module quelconque

Function NbOc(Chaine As String, Ch As String, Optional RC As integer = 1) As
Long
NbOc = (Len(Chaine) - Len(Replace(Chaine, Ch, "", , , RC))) / Len(Ch)
End Function

et dans le formulaire d'où tu lances ta requête:

dim i as long
for i=0 to NbOc(tonChamp,"|",1)
docmd.openQuery "TaRequeteAjout",acViewNormal
next

Voilou !

Bon code
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Bonjour à tous,

Je souhaiterais dupliquer un champ avec une requête d'ajout en
fonction de certains paramètres. Voivi le champ qui contient les
paramètres:1,5 | 2,0 | 2,5. En fait je voudrais copier toutes la ligne

autant de fois que le symbole "|" est présent dans ce champs. En somme

je souhaite avoir trois fois la ligne qui contient dans une de mes
colonnes le champ 1,5 | 2,0 | 2,5.


Merci beaucoup pour votre aide
















Avatar
dams27_56
re,

J'ai bien mis ton code, cela fonctionne toujours pas.... Par contre je
ne suis pas sûr d'avoir bien spécifier mon champ correctement

Private Sub Commande1_Click()
On Error GoTo Err_Commande1_Click

Dim i As Long
For i = 0 To NbOc("SECT1", "|") 'est-ce le bonne façon de spécifier
ma colonne ou se trouve les "|". est-ce qu'il faut pas spécifier aussi
dans quelle table? si oui de quelle façon on le fais?'
DoCmd.OpenQuery "Requête1", acViewNormal
Next

Exit_Commande1_Click:
Exit Sub

Err_Commande1_Click:
MsgBox Err.Description
Resume Exit_Commande1_Click

End Sub

merci d'avance




Remplace la fonction NbOc par celle-ci:

Function NbOc(Chaine as String,Ch as String) as Long
NbOc=0
For i= 1 to len(Chaine)
if mid$(Chaine,i,1)=Ch then NbOc=NbOc+1
next
End Function

--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




j'ai essayé avec un i=1, mais le code ne se lance pas!!!!
Avec un i=0 cela fonctionne, mais il me duplique seulement une seule
fois les enregistrements contenant "|". il ne les duplique pas en
fonctions du nbr de "|" présent dans le champ.

pour ce qui concerne ma requête d'ajout, j'ajoute tout les champs dans
ma table, et j'ai mis un critères (Comme "*|*") dans la colonne où il
y a des "|".

merci de m'aider, car là je suis dans la galère


M'est avis qu'il doit y avoir un souci dans ta requête ajout...
Théoriquement, ce code fonctionne (ou alors j'ai glissé une coqui lle dans mon
code et je ne la vois pas, c'est possible aussi...)

Rapport à ta requête, vérifie que tu n'essaies pas de dupliquer ta clé
primaire. Cela peut expliquer l'absence de duplication d'enregistreme nt.


Par ailleurs, le "i=0" dans la boucle for est à remplacer par "i =1"....

Voilou !
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Re,
merci beaucoup pour le code, mais il y a un petit problème.
en fait il ajoute tous les enregistrements contenant "|", mais ne
duplique pas les lignes en fonctions du nombre de "|" présent dan s mon
champs. par exemple si j'ai 2x"|" dans mon champ, il devrait le
dupliquer deux fois, et ainsi de suite pour 3"|"...

pouvez-vous m'aider
merci d'avance


Bonjour,

il n'était pas forcément utile de reposter (ton précédent post est encore
sur la page...)

Faire ce que tu veux faire directement dans une requête ajout n 'est pas
possible.

Il faut obligatoirement passer par du code:

Ceci est à mettre dans un module quelconque

Function NbOc(Chaine As String, Ch As String, Optional RC As inte ger = 1) As
Long
NbOc = (Len(Chaine) - Len(Replace(Chaine, Ch, "", , , RC))) / Len(Ch)
End Function

et dans le formulaire d'où tu lances ta requête:

dim i as long
for i=0 to NbOc(tonChamp,"|",1)
docmd.openQuery "TaRequeteAjout",acViewNormal
next

Voilou !

Bon code
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Bonjour à tous,

Je souhaiterais dupliquer un champ avec une requête d'ajout en
fonction de certains paramètres. Voivi le champ qui contient les
paramètres:1,5 | 2,0 | 2,5. En fait je voudrais copier toutes la ligne

autant de fois que le symbole "|" est présent dans ce champs. En somme

je souhaite avoir trois fois la ligne qui contient dans une de mes
colonnes le champ 1,5 | 2,0 | 2,5.


Merci beaucoup pour votre aide


















Avatar
ze_titi
Tout s'explique !!!

En fait, je suppose que SECT1 correspond au champs contenant les "|" ? Dans
ce cas, il ne faut pas mettre de guillemets... Pourquoi ? Tout simplement
parce que tel que c'est écrit, un chaque fois la fonction cherche des "|"
dans "SECT1" et non dans le contenu de sect1...

Voilou !

Bon code !
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




re,

J'ai bien mis ton code, cela fonctionne toujours pas.... Par contre je
ne suis pas sûr d'avoir bien spécifier mon champ correctement

Private Sub Commande1_Click()
On Error GoTo Err_Commande1_Click

Dim i As Long
For i = 0 To NbOc("SECT1", "|") 'est-ce le bonne façon de spécifier
ma colonne ou se trouve les "|". est-ce qu'il faut pas spécifier aussi
dans quelle table? si oui de quelle façon on le fais?'
DoCmd.OpenQuery "Requête1", acViewNormal
Next

Exit_Commande1_Click:
Exit Sub

Err_Commande1_Click:
MsgBox Err.Description
Resume Exit_Commande1_Click

End Sub

merci d'avance




Remplace la fonction NbOc par celle-ci:

Function NbOc(Chaine as String,Ch as String) as Long
NbOc=0
For i= 1 to len(Chaine)
if mid$(Chaine,i,1)=Ch then NbOc=NbOc+1
next
End Function

--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




j'ai essayé avec un i=1, mais le code ne se lance pas!!!!
Avec un i=0 cela fonctionne, mais il me duplique seulement une seule
fois les enregistrements contenant "|". il ne les duplique pas en
fonctions du nbr de "|" présent dans le champ.

pour ce qui concerne ma requête d'ajout, j'ajoute tout les champs dans
ma table, et j'ai mis un critères (Comme "*|*") dans la colonne où il
y a des "|".

merci de m'aider, car là je suis dans la galère


M'est avis qu'il doit y avoir un souci dans ta requête ajout...
Théoriquement, ce code fonctionne (ou alors j'ai glissé une coquille dans mon
code et je ne la vois pas, c'est possible aussi...)

Rapport à ta requête, vérifie que tu n'essaies pas de dupliquer ta clé
primaire. Cela peut expliquer l'absence de duplication d'enregistrement.


Par ailleurs, le "i=0" dans la boucle for est à remplacer par "i=1"....

Voilou !
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Re,
merci beaucoup pour le code, mais il y a un petit problème.
en fait il ajoute tous les enregistrements contenant "|", mais ne
duplique pas les lignes en fonctions du nombre de "|" présent dans mon
champs. par exemple si j'ai 2x"|" dans mon champ, il devrait le
dupliquer deux fois, et ainsi de suite pour 3"|"...

pouvez-vous m'aider
merci d'avance


Bonjour,

il n'était pas forcément utile de reposter (ton précédent post est encore
sur la page...)

Faire ce que tu veux faire directement dans une requête ajout n'est pas
possible.

Il faut obligatoirement passer par du code:

Ceci est à mettre dans un module quelconque

Function NbOc(Chaine As String, Ch As String, Optional RC As integer = 1) As
Long
NbOc = (Len(Chaine) - Len(Replace(Chaine, Ch, "", , , RC))) / Len(Ch)
End Function

et dans le formulaire d'où tu lances ta requête:

dim i as long
for i=0 to NbOc(tonChamp,"|",1)
docmd.openQuery "TaRequeteAjout",acViewNormal
next

Voilou !

Bon code
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Bonjour à tous,

Je souhaiterais dupliquer un champ avec une requête d'ajout en
fonction de certains paramètres. Voivi le champ qui contient les
paramètres:1,5 | 2,0 | 2,5. En fait je voudrais copier toutes la ligne

autant de fois que le symbole "|" est présent dans ce champs. En somme

je souhaite avoir trois fois la ligne qui contient dans une de mes
colonnes le champ 1,5 | 2,0 | 2,5.


Merci beaucoup pour votre aide






















Avatar
dams27_56
re,

alors la je comprends plus rien j'ai enlevé les "" autour de SECT1 qui
est le nom de ma colonne contenant les |, mais il me mets une erreur
"erreur de compilation: type d'arguments Byref incompatible". Est-ce
qu'il ne faudrait pas préciser dans quelle table le champ SECT1 se
trouve?

merci beaucoup pour ton support



Tout s'explique !!!

En fait, je suppose que SECT1 correspond au champs contenant les "|" ? Da ns
ce cas, il ne faut pas mettre de guillemets... Pourquoi ? Tout simplement
parce que tel que c'est écrit, un chaque fois la fonction cherche des " |"
dans "SECT1" et non dans le contenu de sect1...

Voilou !

Bon code !
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




re,

J'ai bien mis ton code, cela fonctionne toujours pas.... Par contre je
ne suis pas sûr d'avoir bien spécifier mon champ correctement

Private Sub Commande1_Click()
On Error GoTo Err_Commande1_Click

Dim i As Long
For i = 0 To NbOc("SECT1", "|") 'est-ce le bonne façon de spéci fier
ma colonne ou se trouve les "|". est-ce qu'il faut pas spécifier aussi
dans quelle table? si oui de quelle façon on le fais?'
DoCmd.OpenQuery "Requête1", acViewNormal
Next

Exit_Commande1_Click:
Exit Sub

Err_Commande1_Click:
MsgBox Err.Description
Resume Exit_Commande1_Click

End Sub

merci d'avance




Remplace la fonction NbOc par celle-ci:

Function NbOc(Chaine as String,Ch as String) as Long
NbOc=0
For i= 1 to len(Chaine)
if mid$(Chaine,i,1)=Ch then NbOc=NbOc+1
next
End Function

--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




j'ai essayé avec un i=1, mais le code ne se lance pas!!!!
Avec un i=0 cela fonctionne, mais il me duplique seulement une se ule
fois les enregistrements contenant "|". il ne les duplique pas en
fonctions du nbr de "|" présent dans le champ.

pour ce qui concerne ma requête d'ajout, j'ajoute tout les champs dans
ma table, et j'ai mis un critères (Comme "*|*") dans la colonne o ù il
y a des "|".

merci de m'aider, car là je suis dans la galère


M'est avis qu'il doit y avoir un souci dans ta requête ajout...
Théoriquement, ce code fonctionne (ou alors j'ai glissé une c oquille dans mon
code et je ne la vois pas, c'est possible aussi...)

Rapport à ta requête, vérifie que tu n'essaies pas de dupli quer ta clé
primaire. Cela peut expliquer l'absence de duplication d'enregist rement.


Par ailleurs, le "i=0" dans la boucle for est à remplacer par "i=1"....

Voilou !
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Re,
merci beaucoup pour le code, mais il y a un petit problème.
en fait il ajoute tous les enregistrements contenant "|", mais ne
duplique pas les lignes en fonctions du nombre de "|" présent dans mon
champs. par exemple si j'ai 2x"|" dans mon champ, il devrait le
dupliquer deux fois, et ainsi de suite pour 3"|"...

pouvez-vous m'aider
merci d'avance


Bonjour,

il n'était pas forcément utile de reposter (ton précé dent post est encore
sur la page...)

Faire ce que tu veux faire directement dans une requête ajo ut n'est pas
possible.

Il faut obligatoirement passer par du code:

Ceci est à mettre dans un module quelconque

Function NbOc(Chaine As String, Ch As String, Optional RC As integer = 1) As
Long
NbOc = (Len(Chaine) - Len(Replace(Chaine, Ch, "", , , RC) )) / Len(Ch)
End Function

et dans le formulaire d'où tu lances ta requête:

dim i as long
for i=0 to NbOc(tonChamp,"|",1)
docmd.openQuery "TaRequeteAjout",acViewNormal
next

Voilou !

Bon code
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Bonjour à tous,

Je souhaiterais dupliquer un champ avec une requête d'ajo ut en
fonction de certains paramètres. Voivi le champ qui conti ent les
paramètres:1,5 | 2,0 | 2,5. En fait je voudrais copier to utes la ligne

autant de fois que le symbole "|" est présent dans ce cha mps. En somme

je souhaite avoir trois fois la ligne qui contient dans une de mes
colonnes le champ 1,5 | 2,0 | 2,5.


Merci beaucoup pour votre aide
























Avatar
ze_titi
Bon, reprenons calmement depuis le début...

Cette procédure d'enregistrement, tu la lances depuis un formulaire ?
Si c'est le cas, à la place de sect1, tu dois mettre le nom du contrôle de
ton formulaire qui contient l'information sect1. Suis-je clair ?

--
Cordialement,

ze_titi




re,

alors la je comprends plus rien j'ai enlevé les "" autour de SECT1 qui
est le nom de ma colonne contenant les |, mais il me mets une erreur
"erreur de compilation: type d'arguments Byref incompatible". Est-ce
qu'il ne faudrait pas préciser dans quelle table le champ SECT1 se
trouve?

merci beaucoup pour ton support



Tout s'explique !!!

En fait, je suppose que SECT1 correspond au champs contenant les "|" ? Dans
ce cas, il ne faut pas mettre de guillemets... Pourquoi ? Tout simplement
parce que tel que c'est écrit, un chaque fois la fonction cherche des "|"
dans "SECT1" et non dans le contenu de sect1...

Voilou !

Bon code !
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




re,

J'ai bien mis ton code, cela fonctionne toujours pas.... Par contre je
ne suis pas sûr d'avoir bien spécifier mon champ correctement

Private Sub Commande1_Click()
On Error GoTo Err_Commande1_Click

Dim i As Long
For i = 0 To NbOc("SECT1", "|") 'est-ce le bonne façon de spécifier
ma colonne ou se trouve les "|". est-ce qu'il faut pas spécifier aussi
dans quelle table? si oui de quelle façon on le fais?'
DoCmd.OpenQuery "Requête1", acViewNormal
Next

Exit_Commande1_Click:
Exit Sub

Err_Commande1_Click:
MsgBox Err.Description
Resume Exit_Commande1_Click

End Sub

merci d'avance




Remplace la fonction NbOc par celle-ci:

Function NbOc(Chaine as String,Ch as String) as Long
NbOc=0
For i= 1 to len(Chaine)
if mid$(Chaine,i,1)=Ch then NbOc=NbOc+1
next
End Function

--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




j'ai essayé avec un i=1, mais le code ne se lance pas!!!!
Avec un i=0 cela fonctionne, mais il me duplique seulement une seule
fois les enregistrements contenant "|". il ne les duplique pas en
fonctions du nbr de "|" présent dans le champ.

pour ce qui concerne ma requête d'ajout, j'ajoute tout les champs dans
ma table, et j'ai mis un critères (Comme "*|*") dans la colonne où il
y a des "|".

merci de m'aider, car là je suis dans la galère


M'est avis qu'il doit y avoir un souci dans ta requête ajout...
Théoriquement, ce code fonctionne (ou alors j'ai glissé une coquille dans mon
code et je ne la vois pas, c'est possible aussi...)

Rapport à ta requête, vérifie que tu n'essaies pas de dupliquer ta clé
primaire. Cela peut expliquer l'absence de duplication d'enregistrement.


Par ailleurs, le "i=0" dans la boucle for est à remplacer par "i=1"....

Voilou !
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Re,
merci beaucoup pour le code, mais il y a un petit problème.
en fait il ajoute tous les enregistrements contenant "|", mais ne
duplique pas les lignes en fonctions du nombre de "|" présent dans mon
champs. par exemple si j'ai 2x"|" dans mon champ, il devrait le
dupliquer deux fois, et ainsi de suite pour 3"|"...

pouvez-vous m'aider
merci d'avance


Bonjour,

il n'était pas forcément utile de reposter (ton précédent post est encore
sur la page...)

Faire ce que tu veux faire directement dans une requête ajout n'est pas
possible.

Il faut obligatoirement passer par du code:

Ceci est à mettre dans un module quelconque

Function NbOc(Chaine As String, Ch As String, Optional RC As integer = 1) As
Long
NbOc = (Len(Chaine) - Len(Replace(Chaine, Ch, "", , , RC))) / Len(Ch)
End Function

et dans le formulaire d'où tu lances ta requête:

dim i as long
for i=0 to NbOc(tonChamp,"|",1)
docmd.openQuery "TaRequeteAjout",acViewNormal
next

Voilou !

Bon code
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Bonjour à tous,

Je souhaiterais dupliquer un champ avec une requête d'ajout en
fonction de certains paramètres. Voivi le champ qui contient les
paramètres:1,5 | 2,0 | 2,5. En fait je voudrais copier toutes la ligne

autant de fois que le symbole "|" est présent dans ce champs. En somme

je souhaite avoir trois fois la ligne qui contient dans une de mes
colonnes le champ 1,5 | 2,0 | 2,5.


Merci beaucoup pour votre aide




























Avatar
dams27_56
Donc en fait, j'ai une table DR qui contient une colonne appelé SECT1
qui contient dans quasiment tous les enregistrements le caractère | .
voici un exemple d'enregistrement:

DPN CPN Famille SECT1
toto titi CG5D 0,5+1,0 | 0,5+1,5

je souhaiterais dupliquer cette ligne autant de fois qu'il y a le
caractère | dedans.

peux-tu m'aider
merci d'avance



Bon, reprenons calmement depuis le début...

Cette procédure d'enregistrement, tu la lances depuis un formulaire ?
Si c'est le cas, à la place de sect1, tu dois mettre le nom du contrô le de
ton formulaire qui contient l'information sect1. Suis-je clair ?

--
Cordialement,

ze_titi




re,

alors la je comprends plus rien j'ai enlevé les "" autour de SECT1 qui
est le nom de ma colonne contenant les |, mais il me mets une erreur
"erreur de compilation: type d'arguments Byref incompatible". Est-ce
qu'il ne faudrait pas préciser dans quelle table le champ SECT1 se
trouve?

merci beaucoup pour ton support



Tout s'explique !!!

En fait, je suppose que SECT1 correspond au champs contenant les "|" ? Dans
ce cas, il ne faut pas mettre de guillemets... Pourquoi ? Tout simple ment
parce que tel que c'est écrit, un chaque fois la fonction cherche d es "|"
dans "SECT1" et non dans le contenu de sect1...

Voilou !

Bon code !
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




re,

J'ai bien mis ton code, cela fonctionne toujours pas.... Par contre je
ne suis pas sûr d'avoir bien spécifier mon champ correctement

Private Sub Commande1_Click()
On Error GoTo Err_Commande1_Click

Dim i As Long
For i = 0 To NbOc("SECT1", "|") 'est-ce le bonne façon de sp écifier
ma colonne ou se trouve les "|". est-ce qu'il faut pas spécifier aussi
dans quelle table? si oui de quelle façon on le fais?'
DoCmd.OpenQuery "Requête1", acViewNormal
Next

Exit_Commande1_Click:
Exit Sub

Err_Commande1_Click:
MsgBox Err.Description
Resume Exit_Commande1_Click

End Sub

merci d'avance




Remplace la fonction NbOc par celle-ci:

Function NbOc(Chaine as String,Ch as String) as Long
NbOc=0
For i= 1 to len(Chaine)
if mid$(Chaine,i,1)=Ch then NbOc=NbOc+1
next
End Function

--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




j'ai essayé avec un i=1, mais le code ne se lance pas!!!!
Avec un i=0 cela fonctionne, mais il me duplique seulement un e seule
fois les enregistrements contenant "|". il ne les duplique pas en
fonctions du nbr de "|" présent dans le champ.

pour ce qui concerne ma requête d'ajout, j'ajoute tout les ch amps dans
ma table, et j'ai mis un critères (Comme "*|*") dans la colon ne où il
y a des "|".

merci de m'aider, car là je suis dans la galère


M'est avis qu'il doit y avoir un souci dans ta requête ajou t...
Théoriquement, ce code fonctionne (ou alors j'ai glissé u ne coquille dans mon
code et je ne la vois pas, c'est possible aussi...)

Rapport à ta requête, vérifie que tu n'essaies pas de d upliquer ta clé
primaire. Cela peut expliquer l'absence de duplication d'enre gistrement.


Par ailleurs, le "i=0" dans la boucle for est à remplacer par "i=1"....

Voilou !
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Re,
merci beaucoup pour le code, mais il y a un petit problèm e.
en fait il ajoute tous les enregistrements contenant "|", m ais ne
duplique pas les lignes en fonctions du nombre de "|" pré sent dans mon
champs. par exemple si j'ai 2x"|" dans mon champ, il devrai t le
dupliquer deux fois, et ainsi de suite pour 3"|"...

pouvez-vous m'aider
merci d'avance


Bonjour,

il n'était pas forcément utile de reposter (ton pré cédent post est encore
sur la page...)

Faire ce que tu veux faire directement dans une requête ajout n'est pas
possible.

Il faut obligatoirement passer par du code:

Ceci est à mettre dans un module quelconque

Function NbOc(Chaine As String, Ch As String, Optional RC As integer = 1) As
Long
NbOc = (Len(Chaine) - Len(Replace(Chaine, Ch, "", , , RC))) / Len(Ch)
End Function

et dans le formulaire d'où tu lances ta requête:

dim i as long
for i=0 to NbOc(tonChamp,"|",1)
docmd.openQuery "TaRequeteAjout",acViewNormal
next

Voilou !

Bon code
--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Bonjour à tous,

Je souhaiterais dupliquer un champ avec une requête d 'ajout en
fonction de certains paramètres. Voivi le champ qui c ontient les
paramètres:1,5 | 2,0 | 2,5. En fait je voudrais copie r toutes la ligne

autant de fois que le symbole "|" est présent dans ce champs. En somme

je souhaite avoir trois fois la ligne qui contient dans une de mes
colonnes le champ 1,5 | 2,0 | 2,5.


Merci beaucoup pour votre aide






























1 2