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

vba maco

4 réponses
Avatar
Marc
Je relance ma question puisque je n'ai pas eu de réponse. Merci de m'aider

Bonjour à vous tous.
Voici mon problème. J'ai plusieurs fichiers qui contiennent plusieurs
feuilles. Dans chacune des feuilles des feuilles j'ai quelques milliers de
lignes avec des boutons d'impression de rapport. Le problème, c'est que je
veux changer la couleur de fond (Motif) de vert à bleu ( en vba, le code est
de 35 à 37). Comment je peux faire cela avec une macro qui viendra changer le
code de couleur dans chacune de mes macros? en espérant que j'ai été assez
clair.

Merci de votre aide

Marc

4 réponses

Avatar
JP25
Bonsoir,
coul est une plage nommée que tu peux remplcer par tes cellules ex A1:C3200
Sub Couleur
ActiveSheet.Range("coul").Interior.ColorIndex = 33
End Sub
Tu appelles cette sub dans ton code d'impression
J'espère t'aider
Crdlt
JP25
"Marc" a écrit dans le message de news:

Je relance ma question puisque je n'ai pas eu de réponse. Merci de m'aider

Bonjour à vous tous.
Voici mon problème. J'ai plusieurs fichiers qui contiennent plusieurs
feuilles. Dans chacune des feuilles des feuilles j'ai quelques milliers de
lignes avec des boutons d'impression de rapport. Le problème, c'est que je
veux changer la couleur de fond (Motif) de vert à bleu ( en vba, le code
est
de 35 à 37). Comment je peux faire cela avec une macro qui viendra changer
le
code de couleur dans chacune de mes macros? en espérant que j'ai été assez
clair.

Merci de votre aide

Marc



Avatar
Hervé
Bonsoir Marc,
Je ne suis pas sûr d'avoir bien compris ce que tu cherche à faire mais si tu
veux effectuer un remplacement de chaine dans des macros VBA de plusieurs
classeurs, teste ce qui suit :
Attention, tous les modules se nommant "Module1" seront évités que la proc
écrive dans son propre code, alors adapte. pour effectuer le remplacement de
chaine dans plusieurs classeurs, tu dois les ouvrir auparavant.
En fait, la macro ci-dessous recherche la chaine "Interior.ColorIndex = 35"
(qui sert généralement pour colorer le fond des cellules) pour la remplacer
par la chaine "Interior.ColorIndex = 37".
Si tu as un message d'erreur, va dans Outils-Macro-Sécurité... et coche la
case "Faire confiance au projet Visual Basic". De toute façons, fait un test
sur une copie de classeur et non sur un original.

Sub RemplacerCouleur()
Dim Module As Object
Dim Classeur As Workbook
Dim CouleurChercher As String
Dim CouleurRemplace As String
Dim Trouver As Integer
Dim I As Integer

CouleurChercher = "Interior.ColorIndex = 35"
CouleurRemplace = "Interior.ColorIndex = 37"

For Each Classeur In Workbooks
For Each Module In Classeur.VBProject.VBComponents
With Module.CodeModule
'Si le module où est mis cette proc se nomme "Module1"
'évite de le parcourir pour ne pas effectuer de remplacement
If Module.Name <> "Module1" Then
For I = .CountOfLines To 1 Step -1
Trouver = InStr(.Lines(I, 1), CouleurChercher)
If Trouver <> 0 Then
.ReplaceLine I, Left(.Lines(I, 1) _
, Trouver - 1) & CouleurRemplace & _
Mid(.Lines(I, 1), Trouver + Len(CouleurChercher) _
, Len(.Lines(I, 1)))
End If
Next I
End If
End With
Next Module
Next Classeur

Set Module = Nothing
Set Classeur = Nothing

End Sub

Hervé.

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

Je relance ma question puisque je n'ai pas eu de réponse. Merci de m'aider

Bonjour à vous tous.
Voici mon problème. J'ai plusieurs fichiers qui contiennent plusieurs
feuilles. Dans chacune des feuilles des feuilles j'ai quelques milliers de
lignes avec des boutons d'impression de rapport. Le problème, c'est que je
veux changer la couleur de fond (Motif) de vert à bleu ( en vba, le code
est

de 35 à 37). Comment je peux faire cela avec une macro qui viendra changer
le

code de couleur dans chacune de mes macros? en espérant que j'ai été assez
clair.

Merci de votre aide

Marc



Avatar
Marc
Bonjour Hervé
effectivement, je me suis peut-être mal exprimé. mais je crois que ta macro
risque de faire ce que je voulais. ce que je cherchais, c'est qu'au lieu qu'à
la main, je rentre dans le code et change moi même le code de couleur, je
voulais une macro qui va chercher la couleur 35 et la remplacer par la
couleur 37. si je trouve rien, je devrai faire les changements à la main
60-80 fois.

Je fais le test, si tu as d'autres idées, elles sont les bienvenues.

merci de ton aide et bonne fin de journée


Bonsoir Marc,
Je ne suis pas sûr d'avoir bien compris ce que tu cherche à faire mais si tu
veux effectuer un remplacement de chaine dans des macros VBA de plusieurs
classeurs, teste ce qui suit :
Attention, tous les modules se nommant "Module1" seront évités que la proc
écrive dans son propre code, alors adapte. pour effectuer le remplacement de
chaine dans plusieurs classeurs, tu dois les ouvrir auparavant.
En fait, la macro ci-dessous recherche la chaine "Interior.ColorIndex = 35"
(qui sert généralement pour colorer le fond des cellules) pour la remplacer
par la chaine "Interior.ColorIndex = 37".
Si tu as un message d'erreur, va dans Outils-Macro-Sécurité... et coche la
case "Faire confiance au projet Visual Basic". De toute façons, fait un test
sur une copie de classeur et non sur un original.

Sub RemplacerCouleur()
Dim Module As Object
Dim Classeur As Workbook
Dim CouleurChercher As String
Dim CouleurRemplace As String
Dim Trouver As Integer
Dim I As Integer

CouleurChercher = "Interior.ColorIndex = 35"
CouleurRemplace = "Interior.ColorIndex = 37"

For Each Classeur In Workbooks
For Each Module In Classeur.VBProject.VBComponents
With Module.CodeModule
'Si le module où est mis cette proc se nomme "Module1"
'évite de le parcourir pour ne pas effectuer de remplacement
If Module.Name <> "Module1" Then
For I = .CountOfLines To 1 Step -1
Trouver = InStr(.Lines(I, 1), CouleurChercher)
If Trouver <> 0 Then
.ReplaceLine I, Left(.Lines(I, 1) _
, Trouver - 1) & CouleurRemplace & _
Mid(.Lines(I, 1), Trouver + Len(CouleurChercher) _
, Len(.Lines(I, 1)))
End If
Next I
End If
End With
Next Module
Next Classeur

Set Module = Nothing
Set Classeur = Nothing

End Sub

Hervé.

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

Je relance ma question puisque je n'ai pas eu de réponse. Merci de m'aider

Bonjour à vous tous.
Voici mon problème. J'ai plusieurs fichiers qui contiennent plusieurs
feuilles. Dans chacune des feuilles des feuilles j'ai quelques milliers de
lignes avec des boutons d'impression de rapport. Le problème, c'est que je
veux changer la couleur de fond (Motif) de vert à bleu ( en vba, le code
est

de 35 à 37). Comment je peux faire cela avec une macro qui viendra changer
le

code de couleur dans chacune de mes macros? en espérant que j'ai été assez
clair.

Merci de votre aide

Marc








Avatar
ru-th
Salut

d'après ce que j'ai compris, tu cherches à modifier tes macros par un
recherche/remplacer placeé dans une macro
ci_dessous, un vieux message de FS rapportant une proc d'Hervé
je laisse aussi les commentaires
début citation
_____________

Rechercher et remplacer dans les modules de code de plusieurs classeurs
'(non testé, à utiliser avec précaution, cf commentaires de l'auteur)


'Pour que cette proc fonctionne sur tous les classeurs que tu veux
modifier,
'il faut qu'ils soient ouverts. Le module ou tu mets cette proc (qui doit
'être la seule à l'occuper) doit avoir un nom bien particulier pour être
'évité car sinon les modifs seront aussi faites dans la proc et là, la
macro
'ne trouvera plus le mot recherché car il aura été remplacé par le nouveau.
'Affecte aux variables Rechercher et Remplacer les mots que tu désires.



Sub Remplacer()
'Hervé, mpfe
Dim Classeur As Workbook
Dim Module As Object
Dim Rechercher As String
Dim Remplacer As String
Dim Trouver As Integer
Dim I As Integer


'Le module où se trouve cette proc
'doit s'appeler "ModuleDeMiseAJour"
'à moins qu'il existe déjà alors trouve un nom
'bien particulier afin qu'aucune modif ne soit faite
'dans cette proc
Rechercher = "MonMotQueJeN'aimePlus"
Remplacer = "MonMotQueJ'aime"
For Each Classeur In Workbooks
For Each Module In Classeur.VBProject.VBComponents
With Module.CodeModule
If Module.Name <> "ModuleDeMiseAJour" Then
For I = 1 To .CountOfLines
Trouver = InStr(.Lines(I, 1), Rechercher)
If Trouver > 0 Then
'si une occurrence est trouvée, fait la modif et boucle
'sur la ligne afin de remplacer tous les mots
Do
.ReplaceLine I, Left(.Lines(I, 1) _
, Trouver - 1) & Remplacer & _
Mid(.Lines(I, 1), _
Trouver + Len(Rechercher) _
, Len(.Lines(I, 1)))
Trouver = InStr(Trouver + 1, _
.Lines(I, 1), Rechercher)
Loop While Trouver <> 0
End If
Next I
End If
End With
Next Module
Next Classeur
Set Classeur = Nothing
Set Module = Nothing
End Sub
_________________
fin citation

a+
rural thierry (ne pas oublier la prudence !)


Je relance ma question puisque je n'ai pas eu de réponse. Merci de m'aider

Bonjour à vous tous.
Voici mon problème. J'ai plusieurs fichiers qui contiennent plusieurs
feuilles. Dans chacune des feuilles des feuilles j'ai quelques milliers de
lignes avec des boutons d'impression de rapport. Le problème, c'est que je
veux changer la couleur de fond (Motif) de vert à bleu ( en vba, le code est
de 35 à 37). Comment je peux faire cela avec une macro qui viendra changer le
code de couleur dans chacune de mes macros? en espérant que j'ai été assez
clair.

Merci de votre aide

Marc