Trouver une chaine "Machaine" inconnu entre 2 chaines connues vb

[Résolu]
Signaler
Messages postés
3
Date d'inscription
mardi 27 janvier 2009
Statut
Membre
Dernière intervention
4 février 2009
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
Bonjour



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




Je veux écrire une macro lancé  à  partir d’un fichier Word



 




- Ouvrir un autre fichier Word  "c:\MonFic"



 




- Trouver une chaine  "Machaine" inconnu entre 2 chaines connues "ch1"   et  "ch2"



 




- Renommer le fichier « c:\MonFic »  en  « c:\Machaine »



 




 

6 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
1.
On fait une recherche (forum / sources / tutoriaux / Codyx.org /
CodyxBot / Search.CodeS-SourceS.Com) avant de poster une question.
90% des questions posées quotidiennement sont déjà présentes et résolues



5.
On ne pose qu'une question par topic.





7.
On précise les détails du problème : contexte, langage, message d'erreur, etc



11.
On pense à laisser un petit message lorsqu'un problème est résolu et à cliquer sur le bouton «réponse acceptée»
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
Et moi, je veux une voiture de sport
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
Messages postés
3
Date d'inscription
mardi 27 janvier 2009
Statut
Membre
Dernière intervention
4 février 2009

 


Voila ce que j’ai écris  ça marche bien pour un fichier txt mais ça ne marche pas pour un fichier Word



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




Merci d’avance



 






 



 





Private Function MyMid(ByRef Expression As String, sLeft As String, sRight As String, Optional Start As Long = 1) As String






    Dim lPosL As Long, lPosR As Long






    lPosL InStr(Start, Expression, sLeft): lPosR InStr(lPosL + 1, Expression, sRight)






    If lPosL > 0 And lPosR > 0 Then






        MyMid = Mid$(Expression, lPosL + Len(sLeft), lPosR - lPosL - Len(sLeft))






    Else






        MyMid = vbNullString






    End If






 






End Function






 






Function RenameFile(ByVal sSource As String, ByVal sNewName As String, Optional ByVal sNewDestination As Variant) As Boolean






    On Local Error GoTo MyEnd






   








    Dim sNameFile       As String






    Dim sOldDestination As String






   








    If IsMissing(sNewDestination) Then






       
sOldDestination = Left$(sSource, Len(sSource) - (Len(sSource) - InStrRev(sSource, "")))



       
Name sSource As sOldDestination & sNewName






    Else






        If Right$(sNewDestination, 1) <> "" Then sNewDestination = sNewDestination & ""






        Name sSource As sNewDestination & sNewName






    End If





RenameFile = True





MyEnd:





End Function






 







 






Sub Macro2()






 






Dim intFic As Integer





Dim strLigne As String





Dim Machaine  As String






 






Dim iPos1 As Integer






 






intFic = FreeFile






 






Open "C:\tmp\MonFic.txt" For Input As intFic






 





'Lire le fichier ligne par ligne



While Not EOF(intFic)






    Line Input #intFic, strLigne





  



 
 'Recherche de la ligne ou se trouve la chaine



    iPos1 = InStr(1, strLigne, "Ligne_chaine")



   






   
If iPos1 > 0 Then






   







    Machaine = MyMid(strLigne, "ch1 ", "ch2")




 



  MsgBox Machaine



   






   
End If






 






Wend





Close intFic





MsgBox RenameFile("C:\tmp\MonFic.txt", Machaine & “.txt”)






 






End Sub




 
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
Re
Sous Office, quand tu veux faire du programme, commence par voir si tu saurais le faire à la main :
- Ouvrir un fichier Word :
enregistre une macro pendant que tu fais la manip à la main et regarde le code généré

- Rechercher une chaine entre 2 autres chaines :
Il va de soit qu'il découper en 3 phases :
- Rechercher chaine "début" --> Mémoriser emplacement
- Rechercher chaine "fin" à partir de l'emplacement actuel --> Mémoriser emplacement
- Isoler le texte entre ces deux emplacements
Les 2 premières phases peuvent être faites avec un simple Ctrl-F
La dernière phase, c'est une instruction Mid$
Si tu ne connais pas la syntaxe, enregistre une macro pendant que tu fais la manip à la main et regarde le code généré, il n'y aura plus qu'à le comprendre et le modifier légèrement pour l'adapter + L'aide de Word

- Renommer le fichier :
En fait, il faut faire un "enregistré sous" : enregistre une macro pendant que tu fais la manip à la main et regarde le code généré

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
3
Date d'inscription
mardi 27 janvier 2009
Statut
Membre
Dernière intervention
4 février 2009

Une autre petite question

comment récupérer une ligne Word dans une variable string?



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>