Appel d'une fonction dans plusieurs fichiers

Appel d'une fonction dans plusieurs fichiers - VB/VBA/VBS - Programmation

Marsh Posté le 23-10-2006 à 14:56:59    

Bonjour,
J'aimerai créer une fonction me permettant d'ouvrir des fichiers rtf situés ds un répertoire particulier et d'appeler une fonction dans chacun des fichiers.  
La fonction est écrite en vb.
Par exemple: cette fonction permet de remplacer tous les "." par ":" dc il faut ouvrir cque fichier, appeler la focntion et refermer les fichiers.
Je vous remercie.

Reply

Marsh Posté le 23-10-2006 à 14:56:59   

Reply

Marsh Posté le 23-10-2006 à 20:03:47    

tu veux savoir si c'est faisable, ou bien du code ?

Reply

Marsh Posté le 23-10-2006 à 20:05:59    

Je ne sais pas si l'ensemble te sera utile mais à priori cela crée une liste des fichiers RTF trouvés dans le Dossier Lambda puis les ouvre , cherche/remplace, sauve puis ferme ces RTF
Cela reste à tester plus à fond et sans doute à optimiser
 


Option Explicit
Dim Tableau() As String
Dim DossierOK As String
 
'   Dossier contenant les fichiers RTF
Const Dossier = "C:\Word\RTF"
Const CharATrouver = "."
Const CharRemplacement = ":"
 
Public Sub Test()
Dim i As Long
Dim FichiersRTF As String
Dim NomFichier As String
Dim NbFichiers As Long
 
    DossierOK = Dossier
    If Right(DossierOK, 1) <> "\" Then DossierOK = DossierOK + "\"
     
    FichiersRTF = DossierOK + "*.rtf"
    NomFichier = Dir(FichiersRTF)
     
    Erase Tableau
    NbFichiers = 0
    Do While Len(NomFichier) > 0
        NbFichiers = NbFichiers + 1
        ReDim Preserve Tableau(1 To NbFichiers)
        Tableau(NbFichiers) = NomFichier
        NomFichier = Dir()
    Loop
     
    If NbFichiers > 0 Then
        Application.ScreenUpdating = False
            BalayageFichiersRTF
        Application.ScreenUpdating = True
    End If
End Sub
 
Private Sub BalayageFichiersRTF()
Dim i As Long
    ChangeFileOpenDirectory DossierOK
    For i = 1 To UBound(Tableau)
        Documents.Open FileName:=Tableau(i), Format:=wdOpenFormatAuto
        RemplacerDansFichier  
    Next
End Sub
 
Private Sub RemplacerDansFichier()
    ActiveDocument.Select
 
    With Selection.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = CharATrouver
        .Replacement.Text = CharRemplacement
        .Forward = True
        .Execute
    End With
     
    If Selection.Find.Found = False Then
        ActiveDocument.Close
        Exit Sub
    End If
     
    Selection.Find.Execute Replace:=wdReplaceAll
    With ActiveDocument
        .Save
        .Close
    End With
End Sub


 
s'il s'agit d'utiliser une fonction/procédure externe il faudra adapter qqch du genre
 


 Application.Run "[TemplateName].[ModuleName].[MacroName]
 Par exemple Application.Run "Normal.NewMacros.Macro1"


Message édité par kiki29 le 25-10-2006 à 10:45:21
Reply

Marsh Posté le 24-10-2006 à 10:34:18    

Bon merci je v tester ça...

Reply

Marsh Posté le 24-10-2006 à 14:01:28    

C'est bon, ça marche nickel!!
Merci beaucoup!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed