Soyez le premier à donner votre avis sur cette source.
Snippet vu 7 711 fois - Téléchargée 21 fois
Sub RecupTexte() '*** Définition des propriétés *** Dim rst, rstTxt As DAO.Recordset Dim pFields, pRow As Variant Dim Idx, nCnt As Integer Dim Texte as String 'Ouverture de la table/Query contenant les champs a introduire dans le texte Set rst = CurrentDb.OpenRecordset("MyQuery", dbReadOnly) 'Ouverture de la table contenant le texte a transformer Set rstTxt = CurrentDb.OpenRecordset("tblTexte", dbReadOnly) 'Pour l'example je ne prend que le premier record, a vous de faire une boucle pour le reste rst.MoveFirst rstTxt.MoveFirst ' Compte le nombre de champs dans la table 1 nCnt = rst.Fields.Count - 1 ' Redimensionne les Array ReDim pFields(0 To nCnt) ReDim pRow(0 To nCnt) ' Recupere les nooms des champs de la table 1 For Idx = 0 To nCnt pFields(Idx) = rst.Fields(Idx).Name Next '*** Mettre une boule si il faut parcourir la table ****** ' Recupere les valeurs du record courrant For Idx = 0 To nCnt pRow(Idx) = rst.Fields(Idx).Value Next 'Recupere le texte transforme avec comme parametre: le champ contenant le texte a transfomer, la liste des champs a recuperer, le record pour les valeurs, et le sigle qui separe le nom des champs parametres Texte = MakeTexte(rstDoc.Fields("tText"), pFields, pRow, "#") Debug.Print Texte rst.Close rstDoc.Close Set rst = Nothing Set rstDoc = Nothing End Sub ' **** Fonction pour le split du texte **** Function MakeTexte(ByRef Texte, pFields, pRow As Variant, ByRef tCar As String) As String Dim Result() As String Dim nCnt, nCnt2, Idx, i, y As Integer nCnt = UBound(pFields) Result = Split(Texte, tCar) nCnt2 = UBound(Result) For i = 0 To nCnt2 Idx = -1 For y = 0 To nCnt If pFields(y) = Result(i) Then Idx = y Next If Idx > -1 Then Texte = Replace(Texte, tCar & Result(i) & tCar, pRow(Idx)) Next MakeTexte = Texte End Function
27 févr. 2008 à 16:25
Merci pour les remerciements
PS : Ne me remercie pas pour les remerciements du remerciement, sinon, on n'en finira pas ;-)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.