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

copier champs sur champs vides sur ACCESS 97-2000

7 réponses
Avatar
jc
Bonjour

Je repose ma question car elle a du =EAtre mal comprise

comment copier un champs sur un champs vide et ainsi de suite

sur l' adresse suivant je laisse le fichier access (511.mdb) et le
r=E9sultat que j'esp=E8re obtenir (r=E9sultat.xls)
http://jcmichallet.free.fr/

merci

PS il me semble que c'est possible car =E0 l'adresse ci-dessous il
existe un code que je n'arrive pas =E0 transposer sur ma base

http://www.cathyastuce.com/w-agora/download_thread.php?site=3Dcathyastuce&b=
n=3Dcathyastuce_access&thread=3D1092825574

7 réponses

Avatar
Gilles MOUGNOZ
Bonjour
Je repose ma question car elle a du être mal comprise
comment copier un champs sur un champs vide et ainsi de suite
sur l' adresse suivant je laisse le fichier access (511.mdb) et le
résultat que j'espère obtenir (résultat.xls)
http://jcmichallet.free.fr/
merci
PS il me semble que c'est possible car à l'adresse ci-dessous il
existe un code que je n'arrive pas à transposer sur ma base
http://www.cathyastuce.com/w-agora/download_thread.php?siteÊthyastuce&bnÊthyastuce_access&thread92825574


Bonjour, JC

Après quatre fois, je pense que ceux qui n'ont pas eu peur d'ouvrir le lien
Web, d'ouvrir la base de données et de lire le fichier Excel ont bien
compris ton problème...

Concernant le code sur le site CathyAstuce, il s'applique parfaitement à ta
demande.
Je l'ai un peu modifié afin qu'il soit un peu plus "générique" et ça donne
ceci (attention aux retours à la ligne intempestifs):

Public Sub RecopierEnregistrementPrecedent()
Dim db As DAO.Database
Dim rs1 As DAO.Recordset
Dim vChamp As Variant
Dim Reponse As String
Const TaTable = "Import"
Const TonChamp = "jth"
Set db = Application.CurrentDb
'Ici, mon recordset se base sur une requête où j'ai défini un tri
ascendant
'pour que les enregistrements se présentent toujours dans le même ordre
Set rs1 = db.OpenRecordset("Select * from " & TaTable)
rs1.MoveFirst
'Si le premier enregistrement est vide, il faut prévoir de le remplir
'comme il n'y a pas d'enregistrement précédent, on interrogera l
utilisateur
If IsNull(rs1(TonChamp)) Then
Reponse = InputBox("Donnez-moi une valeur pour le premier
enregistrement car il est vide")
rs1.Edit
rs1(TonChamp) = Reponse
rs1.Update
End If
'On boucle
Do
'on stocke la valeur du champ s'il n'est pas vide
If rs1(TonChamp) <> "" Then
vChamp = rs1(TonChamp)
'Ligne ci-dessous déactivée a servi de contrôle d'exécution
'MsgBox vChamp
'on passe à l'enregistrement suivant pour contrôler s'il est
vide
rs1.MoveNext
's'il est vide on le remplit
If IsNull(rs1(TonChamp)) Then
rs1.Edit
rs1(TonChamp) = vChamp
rs1.Update
End If
'on revient à l'enregistrement précédent, si on ne le fait pas
'notre critère de comparaison devient incohérent
rs1.MovePrevious
End If
'on passe à l'enregistrement suivant
rs1.MoveNext
Loop Until rs1.EOF = True
MsgBox "Traitement terminé"
End Sub

Colle tout cela dans un nouveau module, modifie au besoin les constantes
TaTable et TonChamp, compile (menu Débogage, Compiler ...), lance la sub en
pressant F5 et vois si cela te convient.

Bonne continuation

PS: Si tu rencontres des difficultés, poses tes questions à la suite,
inutile de créer un autre fil: ça encombre le forum, ça énerve ceux qui
seraient tenté de répondre et, au final, tu restes avec ton problème sur les
bras.

Avatar
jc
merci pour votre aide
et désolé pour la répétition de mes questions
Avatar
jc
j'ai une erreur lors de l'exécution du module
erreur de compilation
type défini par l'utilisateur non défini

la deuxième ligne du code est surlignée "Dim db As DAO.Database"

merci
Avatar
Gilles MOUGNOZ
j'ai une erreur lors de l'exécution du module
erreur de compilation
type défini par l'utilisateur non défini
la deuxième ligne du code est surlignée "Dim db As DAO.Database"
merci


Re,

Dans le menu Outils / Références...
1) décoche "Microsoft ActiveX Data Objects 2.x Library"
2) coche "Microsoft DAO 3.x Object Library" (choisis le numéro le plus
élevé, je ne sais pas si c'est 3.5 ou 3.6)
3) relance la compilation (menu Débogage / Compiler ...)

C'est mieux ?

Avatar
Bonjour

<grrr on>
Il n'y a pas de question mal comprise, il n'y a que des questions mal formulées.
<grrrr off>

La fonction de conversion que j'avais proposée dans le fil n°1 contenait touts les élements ou presque pour convertir le fichier txt
d'origine en fichier excel.
Il suffisait simplement de l'adapter un peu en la déroulant en mode pas à pas pour mieux la comprendre.

Une variante de la fonction aurait pu être celle-ci et fournissait les données telles qu'on pourrait les attendre :

Function ConvertTXT2XLS()
Dim TxtLine As String
Dim LeFichier1 As String
Dim LeFichier2 As String
Dim F1 As Integer
Dim F2 As Integer

Dim Champ1 As String
Dim Champ2 As String
Dim Champ3 As String
Dim Champ4 As String

LeFichier1 = "E:Mes documentsDBAccess2Kimport.txt"
LeFichier2 = "E:Mes documentsDBAccess2Krésultat.xls"

F1 = FreeFile
Open LeFichier1 For Input As #F1

F2 = FreeFile
Open LeFichier2 For Output As #F2
Print #F2, "MODE" & vbTab & "CLIO" & vbTab & "MONTANT" & vbTab & "JTH"

Do While Not EOF(F1)

Line Input #F1, TxtLine
If InStr(1, TxtLine, "JTH") > 0 Then
Champ4 = Mid(TxtLine, InStr(1, TxtLine, "JTH") + 17, 3)
End If

'If Len(TxtLine) > 0 And Mid(TxtLine, 5, 19) <> Space$(19) Then
Champ1 = Mid(TxtLine, 5, 19)
'End If

If Len(TxtLine) > 0 Then
Champ2 = Mid(TxtLine, 75, 5)
Champ3 = Mid(TxtLine, 83, 13)
End If

If Left(TxtLine, 1) = "!" And _
InStr(1, TxtLine, "TOTAL") = 0 And _
CDec(Val(Champ3)) > 0 Then
Print #F2, Champ1 & vbTab & Champ2 & vbTab & Champ3 & vbTab & Champ4
End If

Loop
Close #F2
Close #F1
End Function


--
Arnaud
---------------------------------------------
infos, conseils et liens : http://www.mpfa.info
---------------------------------------------

"jc" a écrit dans le message de news:
Bonjour

Je repose ma question car elle a du être mal comprise

comment copier un champs sur un champs vide et ainsi de suite

sur l' adresse suivant je laisse le fichier access (511.mdb) et le
résultat que j'espère obtenir (résultat.xls)
http://jcmichallet.free.fr/

merci

PS il me semble que c'est possible car à l'adresse ci-dessous il
existe un code que je n'arrive pas à transposer sur ma base

http://www.cathyastuce.com/w-agora/download_thread.php?siteÊthyastuce&bnÊthyastuce_access&thread92825574
Avatar
jc
merci ça marche et encore désolé pour le dérangement mais je
débute sur acces (1 mois tout au plus) et je galère (je ne connais
pas le langage vba).
Avatar
Gilles MOUGNOZ
merci ça marche et encore désolé pour le dérangement mais je
débute sur acces (1 mois tout au plus) et je galère (je ne connais
pas le langage vba).


Bonjour, JC

Inutile de t'excuser, si je te réponds, c'est pour t'aider et le
"dérangement", comme tu dis, c'est toi qui le subit.
Quelques sites pour (bien) débuter:
Conseils MPFA: http://www.mpfa.info/
Formation Access: http://www.self-access.com/access/
Raymond Access MVP: http://OfficeSystem.Access.free.fr/
...et bien d'autres dont tu trouveras les adresses dans la section "Autres
liens", "Sites amis" de ceux-ci.

Bonne continuation