Je voudrais pouvoir faire cette modification depuis excel, par une macro en=
registr=E9e dans le Personal.xlb
parcequ'en fait elle doit =EAtre effectu=E9e sur un grand nombre de fichier=
.
Comment cela pourrait il se faire ?
dans un autre fil de discussion quelqu'un a proposer de supprimer tout le m=
odule contenant la macro =E0 modifier pour r=E9importer un module contenant=
la macro mise =E0 jour, mais je bloque quasiment =E0 la premi=E8re ligne p=
ar un code d'erreur
voil=E0 ce que j'ai test=E9 :
Sub MacroQuiTransformeMacro()
Application.VBE.ActiveVBProject.VBComponents.Remove
' Application.VBE.ActiveVBProject.VBComponents.Remove
Application.VBE.ActiveVBProject.VBComponents ("Autrefichier")
Application.VBE.ActiveVBProject.VBComponents.Import "I:\Conduite\AA HIR=
TZ\Envoi_depuis_contact_tce.bas"
End Sub
Bonjour, Quel code d'erreur ? quelle ligne ? Vérifie que dans les paramètres du centre de gestion de la confidentialité, Paramètres des macros, la case "Accès approuvé au modèle d'objet du projet VVBA" soit vien cochée. Daniel
Fredo(67) a formulé la demande :
Bonjour,
j'ai une macro que j'ai créé pour des collègues. (cette macro est utilisée pour envoyer automatiquement des mails depuis excel)
Dans cette macro je souhaite insérer la ligne suivante
msg.SentOnBehalfOfName = ""
la partie de code considérée passant de msg.To = ActiveCell.Value msg.CC = DestinatairesEnCc
à msg.To = ActiveCell.Value msg.SentOnBehalfOfName = "" msg.CC = DestinatairesEnCc
Je voudrais pouvoir faire cette modification depuis excel, par une macro enregistrée dans le Personal.xlb parcequ'en fait elle doit être effectuée sur un grand nombre de fichier.
Comment cela pourrait il se faire ?
dans un autre fil de discussion quelqu'un a proposer de supprimer tout le module contenant la macro à modifier pour réimporter un module contenant la macro mise à jour, mais je bloque quasiment à la première ligne par un code d'erreur
voilà ce que j'ai testé :
Sub MacroQuiTransformeMacro() Application.VBE.ActiveVBProject.VBComponents.Remove ' Application.VBE.ActiveVBProject.VBComponents.Remove Application.VBE.ActiveVBProject.VBComponents ("Autrefichier") Application.VBE.ActiveVBProject.VBComponents.Import "I:ConduiteAA HIRTZEnvoi_depuis_contact_tce.bas" End Sub
Bonjour,
Quel code d'erreur ? quelle ligne ? Vérifie que dans les paramètres du centre
de gestion de la confidentialité, Paramètres des macros, la case "Accès
approuvé au modèle d'objet du projet VVBA" soit vien cochée.
Daniel
Fredo(67) a formulé la demande :
Bonjour,
j'ai une macro que j'ai créé pour des collègues.
(cette macro est utilisée pour envoyer automatiquement des mails depuis
excel)
Dans cette macro je souhaite insérer la ligne suivante
msg.SentOnBehalfOfName = "adresse@domaine.fr"
la partie de code considérée passant de
msg.To = ActiveCell.Value
msg.CC = DestinatairesEnCc
à
msg.To = ActiveCell.Value
msg.SentOnBehalfOfName = "adresse@domaine.fr"
msg.CC = DestinatairesEnCc
Je voudrais pouvoir faire cette modification depuis excel, par une macro
enregistrée dans le Personal.xlb parcequ'en fait elle doit être effectuée sur
un grand nombre de fichier.
Comment cela pourrait il se faire ?
dans un autre fil de discussion quelqu'un a proposer de supprimer tout le
module contenant la macro à modifier pour réimporter un module contenant la
macro mise à jour, mais je bloque quasiment à la première ligne par un code
d'erreur
voilà ce que j'ai testé :
Sub MacroQuiTransformeMacro()
Application.VBE.ActiveVBProject.VBComponents.Remove
' Application.VBE.ActiveVBProject.VBComponents.Remove
Application.VBE.ActiveVBProject.VBComponents ("Autrefichier")
Application.VBE.ActiveVBProject.VBComponents.Import "I:ConduiteAA
HIRTZEnvoi_depuis_contact_tce.bas" End Sub
Bonjour, Quel code d'erreur ? quelle ligne ? Vérifie que dans les paramètres du centre de gestion de la confidentialité, Paramètres des macros, la case "Accès approuvé au modèle d'objet du projet VVBA" soit vien cochée. Daniel
Fredo(67) a formulé la demande :
Bonjour,
j'ai une macro que j'ai créé pour des collègues. (cette macro est utilisée pour envoyer automatiquement des mails depuis excel)
Dans cette macro je souhaite insérer la ligne suivante
msg.SentOnBehalfOfName = ""
la partie de code considérée passant de msg.To = ActiveCell.Value msg.CC = DestinatairesEnCc
à msg.To = ActiveCell.Value msg.SentOnBehalfOfName = "" msg.CC = DestinatairesEnCc
Je voudrais pouvoir faire cette modification depuis excel, par une macro enregistrée dans le Personal.xlb parcequ'en fait elle doit être effectuée sur un grand nombre de fichier.
Comment cela pourrait il se faire ?
dans un autre fil de discussion quelqu'un a proposer de supprimer tout le module contenant la macro à modifier pour réimporter un module contenant la macro mise à jour, mais je bloque quasiment à la première ligne par un code d'erreur
voilà ce que j'ai testé :
Sub MacroQuiTransformeMacro() Application.VBE.ActiveVBProject.VBComponents.Remove ' Application.VBE.ActiveVBProject.VBComponents.Remove Application.VBE.ActiveVBProject.VBComponents ("Autrefichier") Application.VBE.ActiveVBProject.VBComponents.Import "I:ConduiteAA HIRTZEnvoi_depuis_contact_tce.bas" End Sub
Fredo(67)
en cherchant sur Excelabo, j'ai trouvé ceci et je l'ai adapté ======== 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 Rechercher = " msg.CC = DestinatairesEnCc" Remplacer = " msg.SentOnBehalfOfName = """" ms g.CC = DestinatairesEnCc" For Each Module In Classeur.VBProject.VBComponents With Module.CodeModule If Module.Name = "autrefichier" 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
Set Classeur = Nothing Set Module = Nothing End Sub
=============
et là ca bloque sur For Each Module In Classeur.VBProject.VBComponents
en cherchant sur Excelabo, j'ai trouvé ceci
et je l'ai adapté
========
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
Rechercher = " msg.CC = DestinatairesEnCc"
Remplacer = " msg.SentOnBehalfOfName = ""adresse@domaine.fr"" ms g.CC = DestinatairesEnCc"
For Each Module In Classeur.VBProject.VBComponents
With Module.CodeModule
If Module.Name = "autrefichier" 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
Set Classeur = Nothing
Set Module = Nothing
End Sub
=============
et là ca bloque sur
For Each Module In Classeur.VBProject.VBComponents
en cherchant sur Excelabo, j'ai trouvé ceci et je l'ai adapté ======== 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 Rechercher = " msg.CC = DestinatairesEnCc" Remplacer = " msg.SentOnBehalfOfName = """" ms g.CC = DestinatairesEnCc" For Each Module In Classeur.VBProject.VBComponents With Module.CodeModule If Module.Name = "autrefichier" 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
Set Classeur = Nothing Set Module = Nothing End Sub
=============
et là ca bloque sur For Each Module In Classeur.VBProject.VBComponents
DanielCo
cf. précédente réponse. Daniel Il se trouve que Fredo(67) a formulé :
et là ca bloque sur For Each Module In Classeur.VBProject.VBComponents
cf. précédente réponse.
Daniel
Il se trouve que Fredo(67) a formulé :
et là ca bloque sur For Each Module In Classeur.VBProject.VBComponents
Le lundi 21 septembre 2015 15:06:16 UTC+2, DanielCo a écrit :
Fredo(67) a écrit :
Salut DanielCo L'Accès approuvé au modèle d'objet du projet VVBA Est cochée.
La variable "Classeur" n'est pas renseignée. Daniel
Mais pourtant il y a bien noté : Dim Classeur As Workbook cela ne suffit t'il pas ?
Tu l'as défini, mais tu ne l'as pas renseigné : Set Classeur = ActiveWorkbook par exemple. Daniel
Fredo(67)
Un grand merci Daniel, effectivement, maintenant ça marche.
Le seul soucis c'est qu'à la fin de l'exécution de la macro il m'affich e ce panneau : ARGUMENT OU APPEL DE PROCEDURE INCORRECT il ne me propose pas de déboguer (je ne sais donc pas d'où cela provien t.
Merci
voici la copie totale de la macro :
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 Set Classeur = ActiveWorkbook Rechercher = " msg.CC = DestinatairesEnCc" Remplacer = "'Ajout de la ligne de choix de l Expéditeur" & Chr(13) & " Dim ExpEditEur" & Chr(13) & " ExpEditEur = Range(""d10"").Val ue" & Chr(13) & " msg.SentOnBehalfOfName = expediteur " & Chr(13) & " msg.CC = DestinatairesEnCc" For Each Module In Classeur.VBProject.VBComponents With Module.CodeModule If Module.Name = "AutreFichier" 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
Set Classeur = Nothing Set Module = Nothing End Sub
Un grand merci Daniel, effectivement, maintenant ça marche.
Le seul soucis c'est qu'à la fin de l'exécution de la macro il m'affich e ce panneau :
ARGUMENT OU APPEL DE PROCEDURE INCORRECT
il ne me propose pas de déboguer (je ne sais donc pas d'où cela provien t.
Merci
voici la copie totale de la macro :
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
Set Classeur = ActiveWorkbook
Rechercher = " msg.CC = DestinatairesEnCc"
Remplacer = "'Ajout de la ligne de choix de l Expéditeur" & Chr(13) & " Dim ExpEditEur" & Chr(13) & " ExpEditEur = Range(""d10"").Val ue" & Chr(13) & " msg.SentOnBehalfOfName = expediteur " & Chr(13) & " msg.CC = DestinatairesEnCc"
For Each Module In Classeur.VBProject.VBComponents
With Module.CodeModule
If Module.Name = "AutreFichier" 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
Set Classeur = Nothing
Set Module = Nothing
End Sub
Un grand merci Daniel, effectivement, maintenant ça marche.
Le seul soucis c'est qu'à la fin de l'exécution de la macro il m'affich e ce panneau : ARGUMENT OU APPEL DE PROCEDURE INCORRECT il ne me propose pas de déboguer (je ne sais donc pas d'où cela provien t.
Merci
voici la copie totale de la macro :
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 Set Classeur = ActiveWorkbook Rechercher = " msg.CC = DestinatairesEnCc" Remplacer = "'Ajout de la ligne de choix de l Expéditeur" & Chr(13) & " Dim ExpEditEur" & Chr(13) & " ExpEditEur = Range(""d10"").Val ue" & Chr(13) & " msg.SentOnBehalfOfName = expediteur " & Chr(13) & " msg.CC = DestinatairesEnCc" For Each Module In Classeur.VBProject.VBComponents With Module.CodeModule If Module.Name = "AutreFichier" 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
Set Classeur = Nothing Set Module = Nothing End Sub