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

Résolu
cs_hocine92 Messages postés 3 Date d'inscription mardi 27 janvier 2009 Statut Membre Dernière intervention 4 février 2009 - 29 janv. 2009 à 13:05
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 4 févr. 2009 à 08:01
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

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
4 févr. 2009 à 08:01
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»
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
29 janv. 2009 à 14:16
Et moi, je veux une voiture de sport
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
29 janv. 2009 à 19:26
0
cs_hocine92 Messages postés 3 Date d'inscription mardi 27 janvier 2009 Statut Membre Dernière intervention 4 février 2009
30 janv. 2009 à 12:09
 


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




 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
1 févr. 2009 à 15:56
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)
0
cs_hocine92 Messages postés 3 Date d'inscription mardi 27 janvier 2009 Statut Membre Dernière intervention 4 février 2009
4 févr. 2009 à 07:48
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" /??>


 
0
Rejoignez-nous