Bonjour,

J'ai fait une macro toute simple qui fait juste un search and replace dans une classe.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub TemporaryMacro()
        DTE.Find.FindWhat = "blablabla"
	DTE.Find.ReplaceWith = "blublublu"
	DTE.Find.Target = vsFindTarget.vsFindTargetFiles
	DTE.Find.MatchCase = False
	DTE.Find.MatchWholeWord = False
	DTE.Find.MatchInHiddenText = True
	DTE.Find.PatternSyntax =    vsFindPatternSyntax.vsFindPatternSyntaxRegExpr
	DTE.Find.SearchPath = "Entire Solution"
	DTE.Find.SearchSubfolders = True
	DTE.Find.KeepModifiedDocumentsOpen = False
	DTE.Find.FilesOfType = "*.vb;*.cs"
	DTE.Find.ResultsLocation = vsFindResultsLocation.vsFindResults1
	DTE.Find.Action = vsFindAction.vsFindActionReplaceAll
	If(DTE.Find.Execute() = vsFindResult.vsFindResultNotFound) Then
Throw New System.Exception("vsFindResultNotFound")
End If
	DTE.Find.KeepModifiedDocumentsOpen = True
	End Sub
Pour la créer, j'ai utilisé le record de macro.
Cette macro ne modifie les données que dans une seule classe.
Donc pendant la création, tout se passe bien:
- il cherche, trouve la classe en question, l'ouvre et modifie les valeurs.
La macro se génère bien pas de soucis.

Par contre quand je l'exécute, elle ne fonctionne que si la classe en question est ouverte dans VS.

Lorsque la classe en question est fermée, la macro se bloque.
J'ai l'impression qu'il:
- cherche, trouve la classe en question mais n'arrive pas à l'ouvrir ou faire le replace dedans.

Avez vous une idée s'il vous plaît?

Je vous remercie d'avance,

Cordialement.