Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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.
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.
jc
merci pour votre aide et désolé pour la répétition de mes questions
merci pour votre aide
et désolé pour la répétition de mes questions
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
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 ?
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 ...)
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 ?
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
<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
<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
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).
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
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.
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.