Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

rechercher remplacer dans VBAProject

7 réponses
Avatar
Greffier
Bonjour,

Comment écrire une macro qui remplacerait dans tous les modules du projet
VBA d'un classeur un terme par un autre (exemple Paris par Marseille), ou
dans la programmation aller chercher le terme voulu dans notre exemple
Marseille.

J'ai bien chercher dans google et copernic, yahoo ... dans d'autres sites
mais il n'y a rien à ce sujet. Les remplacements s'effectuent sur les
feuilles de calcul, mais pas à l'intérieur des modules.

Qui pourrait me donner une idée, ou une amorce de macro VBA.

Merci.

Greffier.

7 réponses

Avatar
michel thiviers
Bonjour,
va voir dans le menu de l'éditeur VBA et tu auras de quoi rechercher et
remplacer tous ce que tu veux.
Michel
"Greffier" a écrit dans le message de news:
%
Bonjour,

Comment écrire une macro qui remplacerait dans tous les modules du projet
VBA d'un classeur un terme par un autre (exemple Paris par Marseille), ou
dans la programmation aller chercher le terme voulu dans notre exemple
Marseille.

J'ai bien chercher dans google et copernic, yahoo ... dans d'autres sites
mais il n'y a rien à ce sujet. Les remplacements s'effectuent sur les
feuilles de calcul, mais pas à l'intérieur des modules.

Qui pourrait me donner une idée, ou une amorce de macro VBA.

Merci.

Greffier.



Avatar
Greffier
Bonjour,

Ok, ceci je sais le faire. Mais c'est pour ne plus le faire et l'automatiser
par VBA, que je ne trouve pas.

Merci, quand même.

Greffier.




"michel thiviers" a écrit dans le message de news:
45d6d664$0$27374$
Bonjour,
va voir dans le menu de l'éditeur VBA et tu auras de quoi rechercher et
remplacer tous ce que tu veux.
Michel
"Greffier" a écrit dans le message de news:
%
Bonjour,

Comment écrire une macro qui remplacerait dans tous les modules du projet
VBA d'un classeur un terme par un autre (exemple Paris par Marseille), ou
dans la programmation aller chercher le terme voulu dans notre exemple
Marseille.

J'ai bien chercher dans google et copernic, yahoo ... dans d'autres sites
mais il n'y a rien à ce sujet. Les remplacements s'effectuent sur les
feuilles de calcul, mais pas à l'intérieur des modules.

Qui pourrait me donner une idée, ou une amorce de macro VBA.

Merci.

Greffier.







Avatar
Modeste
Bonsour® Greffier avec ferveur ;o))) vous nous disiez :

Comment écrire une macro qui remplacerait dans tous les modules du projet
VBA d'un classeur un terme par un autre (exemple Paris par Marseille), ou
dans la programmation aller chercher le terme voulu dans notre exemple
Marseille.


Remplacer à l'interieur d'un module ????
Mais mettre à jour un module par annule et remplace d'une proc,
tout est là :
http://www.cpearson.com/excel/vbe.htm


--
--
@+
;o)))

Avatar
Ange Ounis
Un module, c'est finalement un fichier texte dont tu peux récupérer
l'intégralité dans une variable, la travailler puis réécrire le code.
Ça peut donner quelque chose comme ça :

'''''''''''''''
Sub ModifCode()
Dim S As String

With ThisWorkbook.VBProject.VBComponents("Module2").CodeModule
S = .Lines(1, .CountOfLines)
End With

S = Join(Split(S, "Paris"), "Marseille")

With ThisWorkbook.VBProject.VBComponents("Module2").CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString S
End With

End Sub
'''''''''''''''

Tu peux ensuite passer en revue tous les modules de ton projet (évite celui qui
contient ce code s'il est dans le même VBAProject).

----------
Ange Ounis
----------

Bonjour,

Comment écrire une macro qui remplacerait dans tous les modules du projet
VBA d'un classeur un terme par un autre (exemple Paris par Marseille), ou
dans la programmation aller chercher le terme voulu dans notre exemple
Marseille.

J'ai bien chercher dans google et copernic, yahoo ... dans d'autres sites
mais il n'y a rien à ce sujet. Les remplacements s'effectuent sur les
feuilles de calcul, mais pas à l'intérieur des modules.

Qui pourrait me donner une idée, ou une amorce de macro VBA.

Merci.

Greffier.




Avatar
MichDenis
Une suggestion :

Copie la procédure suivante dans un nouveau module à part des autres procédures
afin d'éviter que cette dernière se modifie elle-même.
Cette procédure est réputée avoir été copier dans le module1
si le module que tu choisis est différent, modifie le nom dans la procédure

Important : il faut t'assurer que la chaîne recherchée est vraiment unique
qu'elle ne peut pas faire parti d'une autre expression.

Exemple si tu veux remplacer "Paris" dans tous les modules,
la procédure suivante remplacera "Paris" dans "LeParis" , "Paris", "Pariseau" etc
et ce n'est pas nécessairement l'effet que tu recherches.


'----------------------------------
Sub Rechercher_Chaine_VBA()

Dim ChaineRecherchée As String
Dim ChaineRemplace As String
Dim Trouver As Integer
Dim I As Integer
Dim Module As Object

ChaineRecherchée = "C:Mon DossierMa Base.mdb"
ChaineRemplace = "D:Mon Autre DossierMa Base.mdb"
For Each Module In ActiveWorkbook.VBProject.VBComponents
With Module.CodeModule
'Si le module ou est mis cette proc se nomme "Module1"
'Attention à la case....
If Ucase(Module.Name)<> "MODULE1" Then
For I = .CountOfLines To 1 Step -1
Trouver = InStr(.Lines(I, 1), ChaineRecherchée)
If Trouver <> 0 Then
.ReplaceLine I, Left(.Lines(I, 1) _
, Trouver - 1) & ChaineRemplace & _
Mid(.Lines(I, 1), Trouver + Len(ChaineRecherchée) _
, Len(.Lines(I, 1)))
End If
Next I
End If
End With
Next
Set Module = Nothing
End Sub
'-----------------------------------


"Greffier" a écrit dans le message de news:
%
Bonjour,

Comment écrire une macro qui remplacerait dans tous les modules du projet
VBA d'un classeur un terme par un autre (exemple Paris par Marseille), ou
dans la programmation aller chercher le terme voulu dans notre exemple
Marseille.

J'ai bien chercher dans google et copernic, yahoo ... dans d'autres sites
mais il n'y a rien à ce sujet. Les remplacements s'effectuent sur les
feuilles de calcul, mais pas à l'intérieur des modules.

Qui pourrait me donner une idée, ou une amorce de macro VBA.

Merci.

Greffier.
Avatar
Greffier
Bonjour,

Merci tout d'abord pour toutes les réponses.
J'ai appliqué la procédure de Ange, OK, il va falloir que je l'améliore,
pour tous les modules.
J'ai appliqué celle de MichDenis, elle marche OK, mais elle bloque sur une
feuille. J'ai déplacé cette feuille un peu partout, mais j'ai toujours la
même erreur '424'. Je vais m'atteler à en rechercher les causes, car c'est
une méthode très séduisante, à laquelle je n'aurais pas pensé.

A plus tard,

Greffier.


"MichDenis" a écrit dans le message de news:

Une suggestion :

Copie la procédure suivante dans un nouveau module à part des autres
procédures
afin d'éviter que cette dernière se modifie elle-même.
Cette procédure est réputée avoir été copier dans le module1
si le module que tu choisis est différent, modifie le nom dans la
procédure

Important : il faut t'assurer que la chaîne recherchée est vraiment unique
qu'elle ne peut pas faire parti d'une autre expression.

Exemple si tu veux remplacer "Paris" dans tous les modules,
la procédure suivante remplacera "Paris" dans "LeParis" , "Paris",
"Pariseau" etc
et ce n'est pas nécessairement l'effet que tu recherches.


'----------------------------------
Sub Rechercher_Chaine_VBA()

Dim ChaineRecherchée As String
Dim ChaineRemplace As String
Dim Trouver As Integer
Dim I As Integer
Dim Module As Object

ChaineRecherchée = "C:Mon DossierMa Base.mdb"
ChaineRemplace = "D:Mon Autre DossierMa Base.mdb"
For Each Module In ActiveWorkbook.VBProject.VBComponents
With Module.CodeModule
'Si le module ou est mis cette proc se nomme "Module1"
'Attention à la case....
If Ucase(Module.Name)<> "MODULE1" Then
For I = .CountOfLines To 1 Step -1
Trouver = InStr(.Lines(I, 1), ChaineRecherchée)
If Trouver <> 0 Then
.ReplaceLine I, Left(.Lines(I, 1) _
, Trouver - 1) & ChaineRemplace & _
Mid(.Lines(I, 1), Trouver + Len(ChaineRecherchée) _
, Len(.Lines(I, 1)))
End If
Next I
End If
End With
Next
Set Module = Nothing
End Sub
'-----------------------------------


"Greffier" a écrit dans le message de news:
%
Bonjour,

Comment écrire une macro qui remplacerait dans tous les modules du projet
VBA d'un classeur un terme par un autre (exemple Paris par Marseille), ou
dans la programmation aller chercher le terme voulu dans notre exemple
Marseille.

J'ai bien chercher dans google et copernic, yahoo ... dans d'autres sites
mais il n'y a rien à ce sujet. Les remplacements s'effectuent sur les
feuilles de calcul, mais pas à l'intérieur des modules.

Qui pourrait me donner une idée, ou une amorce de macro VBA.

Merci.

Greffier.





Avatar
Greffier
Bonsoir,

Trouvé,

Merci à tous.

Greffier.


"Greffier" a écrit dans le message de news:
Ood$
Bonjour,

Merci tout d'abord pour toutes les réponses.
J'ai appliqué la procédure de Ange, OK, il va falloir que je l'améliore,
pour tous les modules.
J'ai appliqué celle de MichDenis, elle marche OK, mais elle bloque sur une
feuille. J'ai déplacé cette feuille un peu partout, mais j'ai toujours la
même erreur '424'. Je vais m'atteler à en rechercher les causes, car c'est
une méthode très séduisante, à laquelle je n'aurais pas pensé.

A plus tard,

Greffier.


"MichDenis" a écrit dans le message de news:

Une suggestion :

Copie la procédure suivante dans un nouveau module à part des autres
procédures
afin d'éviter que cette dernière se modifie elle-même.
Cette procédure est réputée avoir été copier dans le module1
si le module que tu choisis est différent, modifie le nom dans la
procédure

Important : il faut t'assurer que la chaîne recherchée est vraiment
unique
qu'elle ne peut pas faire parti d'une autre expression.

Exemple si tu veux remplacer "Paris" dans tous les modules,
la procédure suivante remplacera "Paris" dans "LeParis" , "Paris",
"Pariseau" etc
et ce n'est pas nécessairement l'effet que tu recherches.


'----------------------------------
Sub Rechercher_Chaine_VBA()

Dim ChaineRecherchée As String
Dim ChaineRemplace As String
Dim Trouver As Integer
Dim I As Integer
Dim Module As Object

ChaineRecherchée = "C:Mon DossierMa Base.mdb"
ChaineRemplace = "D:Mon Autre DossierMa Base.mdb"
For Each Module In ActiveWorkbook.VBProject.VBComponents
With Module.CodeModule
'Si le module ou est mis cette proc se nomme "Module1"
'Attention à la case....
If Ucase(Module.Name)<> "MODULE1" Then
For I = .CountOfLines To 1 Step -1
Trouver = InStr(.Lines(I, 1), ChaineRecherchée)
If Trouver <> 0 Then
.ReplaceLine I, Left(.Lines(I, 1) _
, Trouver - 1) & ChaineRemplace & _
Mid(.Lines(I, 1), Trouver + Len(ChaineRecherchée) _
, Len(.Lines(I, 1)))
End If
Next I
End If
End With
Next
Set Module = Nothing
End Sub
'-----------------------------------


"Greffier" a écrit dans le message de news:
%
Bonjour,

Comment écrire une macro qui remplacerait dans tous les modules du projet
VBA d'un classeur un terme par un autre (exemple Paris par Marseille), ou
dans la programmation aller chercher le terme voulu dans notre exemple
Marseille.

J'ai bien chercher dans google et copernic, yahoo ... dans d'autres sites
mais il n'y a rien à ce sujet. Les remplacements s'effectuent sur les
feuilles de calcul, mais pas à l'intérieur des modules.

Qui pourrait me donner une idée, ou une amorce de macro VBA.

Merci.

Greffier.