Si tu tiens à utiliser ta macro, à cause de cette ligne de code
DebutCode = .CreateEventProc("SelectionChange", "WorkSheet")
Tu pourrais utiliser ceci car tu n'aurais pas besoin d'insérer une nouvelle
bibliothèque
Si tu tiens à utiliser ta macro, à cause de cette ligne de code
DebutCode = .CreateEventProc("SelectionChange", "WorkSheet")
Tu dois ajouter la bibliothèque suivante à ton classeur.
Dans la fenêtre de l'éditeur de code, barre des menus / outils / référence/
et tu coches dana la liste : "Microsoft Visual Basic For Application
Extensibility 5.3"
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
<andre.l' a écrit dans le message de news:
Bonjour à tous,
Je doit recevoir d'un client, ±200 fichiers Excel. Dans chacun de ses fichiers,
je dois placer une macro sur une feuille dans l'évènement "SelectionChange".
Afin d'éviter de faire le travail à la main, j'aimerais créer une petite macro
qui permet d'ajouter automatiquement le module sur cette feuille de chaque
fichier.
Mais, le problème, est qu'Excel se plante royalement au moment d'ajouter le
module.
J'ai regardé sur différents sites, les exemples fourni, mais sans résultats. Je
fais certainement une bêtise quelque part mais je ne vois pas où???
Voici le code que j'ai recopié d'un site et que j'ai modifié en fonction de mes
besoins:
Je remercie d'avance pour votre aide.
Version d'Excel: 2002 SP3
André
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or .Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With livre.VBProject.VBComponents.Item(page.CodeName).CodeModule
'C'est sur la ligne suivante qu'Excell se plante
DebutCode = .CreateEventProc("SelectionChange", "WorkSheet")
'insérère le texte du code
.InsertLines DebutCode + 1, s
'.AddFromString s
End With
s = ""
End Sub
Si tu tiens à utiliser ta macro, à cause de cette ligne de code
DebutCode = .CreateEventProc("SelectionChange", "WorkSheet")
Tu pourrais utiliser ceci car tu n'aurais pas besoin d'insérer une nouvelle
bibliothèque
Si tu tiens à utiliser ta macro, à cause de cette ligne de code
DebutCode = .CreateEventProc("SelectionChange", "WorkSheet")
Tu dois ajouter la bibliothèque suivante à ton classeur.
Dans la fenêtre de l'éditeur de code, barre des menus / outils / référence/
et tu coches dana la liste : "Microsoft Visual Basic For Application
Extensibility 5.3"
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
<andre.l'hoir@ext.ec.europa.eu> a écrit dans le message de news:
ep74ml01q22@drn.newsguy.com...
Bonjour à tous,
Je doit recevoir d'un client, ±200 fichiers Excel. Dans chacun de ses fichiers,
je dois placer une macro sur une feuille dans l'évènement "SelectionChange".
Afin d'éviter de faire le travail à la main, j'aimerais créer une petite macro
qui permet d'ajouter automatiquement le module sur cette feuille de chaque
fichier.
Mais, le problème, est qu'Excel se plante royalement au moment d'ajouter le
module.
J'ai regardé sur différents sites, les exemples fourni, mais sans résultats. Je
fais certainement une bêtise quelque part mais je ne vois pas où???
Voici le code que j'ai recopié d'un site et que j'ai modifié en fonction de mes
besoins:
Je remercie d'avance pour votre aide.
Version d'Excel: 2002 SP3
André
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or .Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With livre.VBProject.VBComponents.Item(page.CodeName).CodeModule
'C'est sur la ligne suivante qu'Excell se plante
DebutCode = .CreateEventProc("SelectionChange", "WorkSheet")
'insérère le texte du code
.InsertLines DebutCode + 1, s
'.AddFromString s
End With
s = ""
End Sub
Si tu tiens à utiliser ta macro, à cause de cette ligne de code
DebutCode = .CreateEventProc("SelectionChange", "WorkSheet")
Tu pourrais utiliser ceci car tu n'aurais pas besoin d'insérer une nouvelle
bibliothèque
Si tu tiens à utiliser ta macro, à cause de cette ligne de code
DebutCode = .CreateEventProc("SelectionChange", "WorkSheet")
Tu dois ajouter la bibliothèque suivante à ton classeur.
Dans la fenêtre de l'éditeur de code, barre des menus / outils / référence/
et tu coches dana la liste : "Microsoft Visual Basic For Application
Extensibility 5.3"
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
<andre.l' a écrit dans le message de news:
Bonjour à tous,
Je doit recevoir d'un client, ±200 fichiers Excel. Dans chacun de ses fichiers,
je dois placer une macro sur une feuille dans l'évènement "SelectionChange".
Afin d'éviter de faire le travail à la main, j'aimerais créer une petite macro
qui permet d'ajouter automatiquement le module sur cette feuille de chaque
fichier.
Mais, le problème, est qu'Excel se plante royalement au moment d'ajouter le
module.
J'ai regardé sur différents sites, les exemples fourni, mais sans résultats. Je
fais certainement une bêtise quelque part mais je ne vois pas où???
Voici le code que j'ai recopié d'un site et que j'ai modifié en fonction de mes
besoins:
Je remercie d'avance pour votre aide.
Version d'Excel: 2002 SP3
André
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or .Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With livre.VBProject.VBComponents.Item(page.CodeName).CodeModule
'C'est sur la ligne suivante qu'Excell se plante
DebutCode = .CreateEventProc("SelectionChange", "WorkSheet")
'insérère le texte du code
.InsertLines DebutCode + 1, s
'.AddFromString s
End With
s = ""
End Sub
Un exemple d'application pour l'usage de " .CreateEventProc"
Si je veux ajouter une ligne de code à la procédure "Trouver" déjà existante
dans le module 2 à une ligne particulière du code :
P.S. La procédure "Trouver" doit déjà exister dans le module 2
Dans cette ligne de code, si tu utilises ceci :
Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
Pour avoir accès à cette constante "vbext_pk_Proc" tu as besoin
de la bilbiothèque : "Microsoft Visual Basic For Application Extensibility 5.3"
Si tu remplaces "vbext_pk_Pr" par sa constante numérique, tu n'as pas
besoin de la bibliothèque et la ligne de code devient :
Comp.ProcBodyLine("Trouver", 0)
Plus bas tu trouveras une macro qui la correction de ta macro pour insérer
toute une procédure...
'-----------------------------------------------------
Sub AjouterUneLigneDeCode()
Dim Comp As CodeModule, NoLigne As Integer, Ajout As Variant
Ajout = "Msgbox ""ça marche!"""
'Attention : Remplace Module2 par le nom du module
'où se trouve ta procédure
Set Comp = ThisWorkbook.VBProject.VBComponents("module2").CodeModule
'indique à quelle ligne la procédure "Trouver" débute.
NoLigne = Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
'Ajoute à la deuxième ligne de la procédure "Trouver
'le code désiré
Comp.InsertLines NoLigne + 3, S
End Sub
'-----------------------------------------------------
| Y aurait'il une autre manière de faire la même chose???
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
Un exemple d'application pour l'usage de " .CreateEventProc"
Si je veux ajouter une ligne de code à la procédure "Trouver" déjà existante
dans le module 2 à une ligne particulière du code :
P.S. La procédure "Trouver" doit déjà exister dans le module 2
Dans cette ligne de code, si tu utilises ceci :
Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
Pour avoir accès à cette constante "vbext_pk_Proc" tu as besoin
de la bilbiothèque : "Microsoft Visual Basic For Application Extensibility 5.3"
Si tu remplaces "vbext_pk_Pr" par sa constante numérique, tu n'as pas
besoin de la bibliothèque et la ligne de code devient :
Comp.ProcBodyLine("Trouver", 0)
Plus bas tu trouveras une macro qui la correction de ta macro pour insérer
toute une procédure...
'-----------------------------------------------------
Sub AjouterUneLigneDeCode()
Dim Comp As CodeModule, NoLigne As Integer, Ajout As Variant
Ajout = "Msgbox ""ça marche!"""
'Attention : Remplace Module2 par le nom du module
'où se trouve ta procédure
Set Comp = ThisWorkbook.VBProject.VBComponents("module2").CodeModule
'indique à quelle ligne la procédure "Trouver" débute.
NoLigne = Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
'Ajoute à la deuxième ligne de la procédure "Trouver
'le code désiré
Comp.InsertLines NoLigne + 3, S
End Sub
'-----------------------------------------------------
| Y aurait'il une autre manière de faire la même chose???
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
Un exemple d'application pour l'usage de " .CreateEventProc"
Si je veux ajouter une ligne de code à la procédure "Trouver" déjà existante
dans le module 2 à une ligne particulière du code :
P.S. La procédure "Trouver" doit déjà exister dans le module 2
Dans cette ligne de code, si tu utilises ceci :
Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
Pour avoir accès à cette constante "vbext_pk_Proc" tu as besoin
de la bilbiothèque : "Microsoft Visual Basic For Application Extensibility 5.3"
Si tu remplaces "vbext_pk_Pr" par sa constante numérique, tu n'as pas
besoin de la bibliothèque et la ligne de code devient :
Comp.ProcBodyLine("Trouver", 0)
Plus bas tu trouveras une macro qui la correction de ta macro pour insérer
toute une procédure...
'-----------------------------------------------------
Sub AjouterUneLigneDeCode()
Dim Comp As CodeModule, NoLigne As Integer, Ajout As Variant
Ajout = "Msgbox ""ça marche!"""
'Attention : Remplace Module2 par le nom du module
'où se trouve ta procédure
Set Comp = ThisWorkbook.VBProject.VBComponents("module2").CodeModule
'indique à quelle ligne la procédure "Trouver" débute.
NoLigne = Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
'Ajoute à la deuxième ligne de la procédure "Trouver
'le code désiré
Comp.InsertLines NoLigne + 3, S
End Sub
'-----------------------------------------------------
| Y aurait'il une autre manière de faire la même chose???
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
Un exemple d'application pour l'usage de " .CreateEventProc"
Si je veux ajouter une ligne de code à la procédure "Trouver" déjà existante
dans le module 2 à une ligne particulière du code :
P.S. La procédure "Trouver" doit déjà exister dans le module 2
Dans cette ligne de code, si tu utilises ceci :
Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
Pour avoir accès à cette constante "vbext_pk_Proc" tu as besoin
de la bilbiothèque : "Microsoft Visual Basic For Application Extensibility 5.3"
Si tu remplaces "vbext_pk_Pr" par sa constante numérique, tu n'as pas
besoin de la bibliothèque et la ligne de code devient :
Comp.ProcBodyLine("Trouver", 0)
Plus bas tu trouveras une macro qui la correction de ta macro pour insérer
toute une procédure...
'-----------------------------------------------------
Sub AjouterUneLigneDeCode()
Dim Comp As CodeModule, NoLigne As Integer, Ajout As Variant
Ajout = "Msgbox ""ça marche!"""
'Attention : Remplace Module2 par le nom du module
'où se trouve ta procédure
Set Comp = ThisWorkbook.VBProject.VBComponents("module2").CodeModule
'indique à quelle ligne la procédure "Trouver" débute.
NoLigne = Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
'Ajoute à la deuxième ligne de la procédure "Trouver
'le code désiré
Comp.InsertLines NoLigne + 3, S
End Sub
'-----------------------------------------------------
| Y aurait'il une autre manière de faire la même chose???
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
Un exemple d'application pour l'usage de " .CreateEventProc"
Si je veux ajouter une ligne de code à la procédure "Trouver" déjà existante
dans le module 2 à une ligne particulière du code :
P.S. La procédure "Trouver" doit déjà exister dans le module 2
Dans cette ligne de code, si tu utilises ceci :
Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
Pour avoir accès à cette constante "vbext_pk_Proc" tu as besoin
de la bilbiothèque : "Microsoft Visual Basic For Application Extensibility 5.3"
Si tu remplaces "vbext_pk_Pr" par sa constante numérique, tu n'as pas
besoin de la bibliothèque et la ligne de code devient :
Comp.ProcBodyLine("Trouver", 0)
Plus bas tu trouveras une macro qui la correction de ta macro pour insérer
toute une procédure...
'-----------------------------------------------------
Sub AjouterUneLigneDeCode()
Dim Comp As CodeModule, NoLigne As Integer, Ajout As Variant
Ajout = "Msgbox ""ça marche!"""
'Attention : Remplace Module2 par le nom du module
'où se trouve ta procédure
Set Comp = ThisWorkbook.VBProject.VBComponents("module2").CodeModule
'indique à quelle ligne la procédure "Trouver" débute.
NoLigne = Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
'Ajoute à la deuxième ligne de la procédure "Trouver
'le code désiré
Comp.InsertLines NoLigne + 3, S
End Sub
'-----------------------------------------------------
| Y aurait'il une autre manière de faire la même chose???
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
Un exemple d'application pour l'usage de " .CreateEventProc"
Si je veux ajouter une ligne de code à la procédure "Trouver" déjà existante
dans le module 2 à une ligne particulière du code :
P.S. La procédure "Trouver" doit déjà exister dans le module 2
Dans cette ligne de code, si tu utilises ceci :
Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
Pour avoir accès à cette constante "vbext_pk_Proc" tu as besoin
de la bilbiothèque : "Microsoft Visual Basic For Application Extensibility 5.3"
Si tu remplaces "vbext_pk_Pr" par sa constante numérique, tu n'as pas
besoin de la bibliothèque et la ligne de code devient :
Comp.ProcBodyLine("Trouver", 0)
Plus bas tu trouveras une macro qui la correction de ta macro pour insérer
toute une procédure...
'-----------------------------------------------------
Sub AjouterUneLigneDeCode()
Dim Comp As CodeModule, NoLigne As Integer, Ajout As Variant
Ajout = "Msgbox ""ça marche!"""
'Attention : Remplace Module2 par le nom du module
'où se trouve ta procédure
Set Comp = ThisWorkbook.VBProject.VBComponents("module2").CodeModule
'indique à quelle ligne la procédure "Trouver" débute.
NoLigne = Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
'Ajoute à la deuxième ligne de la procédure "Trouver
'le code désiré
Comp.InsertLines NoLigne + 3, S
End Sub
'-----------------------------------------------------
| Y aurait'il une autre manière de faire la même chose???
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
Un exemple d'application pour l'usage de " .CreateEventProc"
Si je veux ajouter une ligne de code à la procédure "Trouver" déjà existante
dans le module 2 à une ligne particulière du code :
P.S. La procédure "Trouver" doit déjà exister dans le module 2
Dans cette ligne de code, si tu utilises ceci :
Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
Pour avoir accès à cette constante "vbext_pk_Proc" tu as besoin
de la bilbiothèque : "Microsoft Visual Basic For Application Extensibility 5.3"
Si tu remplaces "vbext_pk_Pr" par sa constante numérique, tu n'as pas
besoin de la bibliothèque et la ligne de code devient :
Comp.ProcBodyLine("Trouver", 0)
Plus bas tu trouveras une macro qui la correction de ta macro pour insérer
toute une procédure...
'-----------------------------------------------------
Sub AjouterUneLigneDeCode()
Dim Comp As CodeModule, NoLigne As Integer, Ajout As Variant
Ajout = "Msgbox ""ça marche!"""
'Attention : Remplace Module2 par le nom du module
'où se trouve ta procédure
Set Comp = ThisWorkbook.VBProject.VBComponents("module2").CodeModule
'indique à quelle ligne la procédure "Trouver" débute.
NoLigne = Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
'Ajoute à la deuxième ligne de la procédure "Trouver
'le code désiré
Comp.InsertLines NoLigne + 3, S
End Sub
'-----------------------------------------------------
| Y aurait'il une autre manière de faire la même chose???
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
Un exemple d'application pour l'usage de " .CreateEventProc"
Si je veux ajouter une ligne de code à la procédure "Trouver" déjà existante
dans le module 2 à une ligne particulière du code :
P.S. La procédure "Trouver" doit déjà exister dans le module 2
Dans cette ligne de code, si tu utilises ceci :
Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
Pour avoir accès à cette constante "vbext_pk_Proc" tu as besoin
de la bilbiothèque : "Microsoft Visual Basic For Application Extensibility 5.3"
Si tu remplaces "vbext_pk_Pr" par sa constante numérique, tu n'as pas
besoin de la bibliothèque et la ligne de code devient :
Comp.ProcBodyLine("Trouver", 0)
Plus bas tu trouveras une macro qui la correction de ta macro pour insérer
toute une procédure...
'-----------------------------------------------------
Sub AjouterUneLigneDeCode()
Dim Comp As CodeModule, NoLigne As Integer, Ajout As Variant
Ajout = "Msgbox ""ça marche!"""
'Attention : Remplace Module2 par le nom du module
'où se trouve ta procédure
Set Comp = ThisWorkbook.VBProject.VBComponents("module2").CodeModule
'indique à quelle ligne la procédure "Trouver" débute.
NoLigne = Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
'Ajoute à la deuxième ligne de la procédure "Trouver
'le code désiré
Comp.InsertLines NoLigne + 3, S
End Sub
'-----------------------------------------------------
| Y aurait'il une autre manière de faire la même chose???
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
Un exemple d'application pour l'usage de " .CreateEventProc"
Si je veux ajouter une ligne de code à la procédure "Trouver" déjà existante
dans le module 2 à une ligne particulière du code :
P.S. La procédure "Trouver" doit déjà exister dans le module 2
Dans cette ligne de code, si tu utilises ceci :
Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
Pour avoir accès à cette constante "vbext_pk_Proc" tu as besoin
de la bilbiothèque : "Microsoft Visual Basic For Application Extensibility 5.3"
Si tu remplaces "vbext_pk_Pr" par sa constante numérique, tu n'as pas
besoin de la bibliothèque et la ligne de code devient :
Comp.ProcBodyLine("Trouver", 0)
Plus bas tu trouveras une macro qui la correction de ta macro pour insérer
toute une procédure...
'-----------------------------------------------------
Sub AjouterUneLigneDeCode()
Dim Comp As CodeModule, NoLigne As Integer, Ajout As Variant
Ajout = "Msgbox ""ça marche!"""
'Attention : Remplace Module2 par le nom du module
'où se trouve ta procédure
Set Comp = ThisWorkbook.VBProject.VBComponents("module2").CodeModule
'indique à quelle ligne la procédure "Trouver" débute.
NoLigne = Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
'Ajoute à la deuxième ligne de la procédure "Trouver
'le code désiré
Comp.InsertLines NoLigne + 3, S
End Sub
'-----------------------------------------------------
| Y aurait'il une autre manière de faire la même chose???
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
Est-ce que cela t'arrive de lire les messages que tu reçois jusqu'à la fin ?
Tu as une solution toute faite pour ajouter l'ensemble d'une macro à un module.
Que veux-tu de plus ?
<andre.l' a écrit dans le message de news:
Oui,
Je comprends ta macro. C'est dans le cas ou la macro existe déjà.
'-----------------------------------------------------
Sub AjouterUneLigneDeCode()
Dim Comp As CodeModule, NoLigne As Integer, Ajout As Variant
Ajout = "Msgbox ""ça marche!"""
'Attention : Remplace Module2 par le nom du module
'où se trouve ta procédure
Set Comp = ThisWorkbook.VBProject.VBComponents("module2").CodeModule
'indique à quelle ligne la procédure "Trouver" débute.
NoLigne = Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
'Ajoute à la deuxième ligne de la procédure "Trouver
'le code désiré
Comp.InsertLines NoLigne + 3, S
End Sub
'-----------------------------------------------------
| Y aurait'il une autre manière de faire la même chose???
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
Est-ce que cela t'arrive de lire les messages que tu reçois jusqu'à la fin ?
Tu as une solution toute faite pour ajouter l'ensemble d'une macro à un module.
Que veux-tu de plus ?
<andre.l'hoir@ext.ec.europa.eu> a écrit dans le message de news:
ep7snq09n7@drn.newsguy.com...
Oui,
Je comprends ta macro. C'est dans le cas ou la macro existe déjà.
'-----------------------------------------------------
Sub AjouterUneLigneDeCode()
Dim Comp As CodeModule, NoLigne As Integer, Ajout As Variant
Ajout = "Msgbox ""ça marche!"""
'Attention : Remplace Module2 par le nom du module
'où se trouve ta procédure
Set Comp = ThisWorkbook.VBProject.VBComponents("module2").CodeModule
'indique à quelle ligne la procédure "Trouver" débute.
NoLigne = Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
'Ajoute à la deuxième ligne de la procédure "Trouver
'le code désiré
Comp.InsertLines NoLigne + 3, S
End Sub
'-----------------------------------------------------
| Y aurait'il une autre manière de faire la même chose???
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
Est-ce que cela t'arrive de lire les messages que tu reçois jusqu'à la fin ?
Tu as une solution toute faite pour ajouter l'ensemble d'une macro à un module.
Que veux-tu de plus ?
<andre.l' a écrit dans le message de news:
Oui,
Je comprends ta macro. C'est dans le cas ou la macro existe déjà.
'-----------------------------------------------------
Sub AjouterUneLigneDeCode()
Dim Comp As CodeModule, NoLigne As Integer, Ajout As Variant
Ajout = "Msgbox ""ça marche!"""
'Attention : Remplace Module2 par le nom du module
'où se trouve ta procédure
Set Comp = ThisWorkbook.VBProject.VBComponents("module2").CodeModule
'indique à quelle ligne la procédure "Trouver" débute.
NoLigne = Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
'Ajoute à la deuxième ligne de la procédure "Trouver
'le code désiré
Comp.InsertLines NoLigne + 3, S
End Sub
'-----------------------------------------------------
| Y aurait'il une autre manière de faire la même chose???
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
Est-ce que cela t'arrive de lire les messages que tu reçois jusqu'à la fin ?
Tu as une solution toute faite pour ajouter l'ensemble d'une macro à un module.
Que veux-tu de plus ?
<andre.l' a écrit dans le message de news:
Oui,
Je comprends ta macro. C'est dans le cas ou la macro existe déjà.
'-----------------------------------------------------
Sub AjouterUneLigneDeCode()
Dim Comp As CodeModule, NoLigne As Integer, Ajout As Variant
Ajout = "Msgbox ""ça marche!"""
'Attention : Remplace Module2 par le nom du module
'où se trouve ta procédure
Set Comp = ThisWorkbook.VBProject.VBComponents("module2").CodeModule
'indique à quelle ligne la procédure "Trouver" débute.
NoLigne = Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
'Ajoute à la deuxième ligne de la procédure "Trouver
'le code désiré
Comp.InsertLines NoLigne + 3, S
End Sub
'-----------------------------------------------------
| Y aurait'il une autre manière de faire la même chose???
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
Est-ce que cela t'arrive de lire les messages que tu reçois jusqu'à la fin ?
Tu as une solution toute faite pour ajouter l'ensemble d'une macro à un module.
Que veux-tu de plus ?
<andre.l'hoir@ext.ec.europa.eu> a écrit dans le message de news:
ep7snq09n7@drn.newsguy.com...
Oui,
Je comprends ta macro. C'est dans le cas ou la macro existe déjà.
'-----------------------------------------------------
Sub AjouterUneLigneDeCode()
Dim Comp As CodeModule, NoLigne As Integer, Ajout As Variant
Ajout = "Msgbox ""ça marche!"""
'Attention : Remplace Module2 par le nom du module
'où se trouve ta procédure
Set Comp = ThisWorkbook.VBProject.VBComponents("module2").CodeModule
'indique à quelle ligne la procédure "Trouver" débute.
NoLigne = Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
'Ajoute à la deuxième ligne de la procédure "Trouver
'le code désiré
Comp.InsertLines NoLigne + 3, S
End Sub
'-----------------------------------------------------
| Y aurait'il une autre manière de faire la même chose???
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
Est-ce que cela t'arrive de lire les messages que tu reçois jusqu'à la fin ?
Tu as une solution toute faite pour ajouter l'ensemble d'une macro à un module.
Que veux-tu de plus ?
<andre.l' a écrit dans le message de news:
Oui,
Je comprends ta macro. C'est dans le cas ou la macro existe déjà.
'-----------------------------------------------------
Sub AjouterUneLigneDeCode()
Dim Comp As CodeModule, NoLigne As Integer, Ajout As Variant
Ajout = "Msgbox ""ça marche!"""
'Attention : Remplace Module2 par le nom du module
'où se trouve ta procédure
Set Comp = ThisWorkbook.VBProject.VBComponents("module2").CodeModule
'indique à quelle ligne la procédure "Trouver" débute.
NoLigne = Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
'Ajoute à la deuxième ligne de la procédure "Trouver
'le code désiré
Comp.InsertLines NoLigne + 3, S
End Sub
'-----------------------------------------------------
| Y aurait'il une autre manière de faire la même chose???
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
Dans le module1 du classeur exemple : http://cjoint.com/?bytSIo7a06
exéute la procédure "Test"... elle va copiée le code dans le module"feuil1"
Dans la procédure test, tu renseignes les variables
Set Wk = ThisWorkbook ' OU Workbooks("NomDuClasseur.xls")
Module = "Feuil1" ' ou worksheets("NomFeuille").codename
et le code à copier
Et tu peux copier le code que tu désires dans le classeur ouvert de ton choix
et dans le module que tu désires... le module doit exister !
<andre.l' a écrit dans le message de news:
Bonjour,
Excusez-moi, je n'ai pas fait attention.
J'ai essayé ce que vous me dites mais sans succès.
J'ai également fait la même opération avec / sans la référence
Microsoft Visual Basic For Applications Extensibility 5.3 et 6.0
sans succès.
André
In article , MichDenis says...
Est-ce que cela t'arrive de lire les messages que tu reçois jusqu'à la fin ?
Tu as une solution toute faite pour ajouter l'ensemble d'une macro à un module.
Que veux-tu de plus ?
<andre.l' a écrit dans le message de news:
Oui,
Je comprends ta macro. C'est dans le cas ou la macro existe déjà.'-----------------------------------------------------
Sub AjouterUneLigneDeCode()
Dim Comp As CodeModule, NoLigne As Integer, Ajout As Variant
Ajout = "Msgbox ""ça marche!"""
'Attention : Remplace Module2 par le nom du module
'où se trouve ta procédure
Set Comp = ThisWorkbook.VBProject.VBComponents("module2").CodeModule
'indique à quelle ligne la procédure "Trouver" débute.
NoLigne = Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
'Ajoute à la deuxième ligne de la procédure "Trouver
'le code désiré
Comp.InsertLines NoLigne + 3, S
End Sub
'-----------------------------------------------------
| Y aurait'il une autre manière de faire la même chose???
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
Dans le module1 du classeur exemple : http://cjoint.com/?bytSIo7a06
exéute la procédure "Test"... elle va copiée le code dans le module"feuil1"
Dans la procédure test, tu renseignes les variables
Set Wk = ThisWorkbook ' OU Workbooks("NomDuClasseur.xls")
Module = "Feuil1" ' ou worksheets("NomFeuille").codename
et le code à copier
Et tu peux copier le code que tu désires dans le classeur ouvert de ton choix
et dans le module que tu désires... le module doit exister !
<andre.l'hoir@ext.ec.europa.eu> a écrit dans le message de news:
ep7vo10gmv@drn.newsguy.com...
Bonjour,
Excusez-moi, je n'ai pas fait attention.
J'ai essayé ce que vous me dites mais sans succès.
J'ai également fait la même opération avec / sans la référence
Microsoft Visual Basic For Applications Extensibility 5.3 et 6.0
sans succès.
André
In article <uA59Tq8PHHA.4412@TK2MSFTNGP04.phx.gbl>, MichDenis says...
Est-ce que cela t'arrive de lire les messages que tu reçois jusqu'à la fin ?
Tu as une solution toute faite pour ajouter l'ensemble d'une macro à un module.
Que veux-tu de plus ?
<andre.l'hoir@ext.ec.europa.eu> a écrit dans le message de news:
ep7snq09n7@drn.newsguy.com...
Oui,
Je comprends ta macro. C'est dans le cas ou la macro existe déjà.
'-----------------------------------------------------
Sub AjouterUneLigneDeCode()
Dim Comp As CodeModule, NoLigne As Integer, Ajout As Variant
Ajout = "Msgbox ""ça marche!"""
'Attention : Remplace Module2 par le nom du module
'où se trouve ta procédure
Set Comp = ThisWorkbook.VBProject.VBComponents("module2").CodeModule
'indique à quelle ligne la procédure "Trouver" débute.
NoLigne = Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
'Ajoute à la deuxième ligne de la procédure "Trouver
'le code désiré
Comp.InsertLines NoLigne + 3, S
End Sub
'-----------------------------------------------------
| Y aurait'il une autre manière de faire la même chose???
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
Dans le module1 du classeur exemple : http://cjoint.com/?bytSIo7a06
exéute la procédure "Test"... elle va copiée le code dans le module"feuil1"
Dans la procédure test, tu renseignes les variables
Set Wk = ThisWorkbook ' OU Workbooks("NomDuClasseur.xls")
Module = "Feuil1" ' ou worksheets("NomFeuille").codename
et le code à copier
Et tu peux copier le code que tu désires dans le classeur ouvert de ton choix
et dans le module que tu désires... le module doit exister !
<andre.l' a écrit dans le message de news:
Bonjour,
Excusez-moi, je n'ai pas fait attention.
J'ai essayé ce que vous me dites mais sans succès.
J'ai également fait la même opération avec / sans la référence
Microsoft Visual Basic For Applications Extensibility 5.3 et 6.0
sans succès.
André
In article , MichDenis says...
Est-ce que cela t'arrive de lire les messages que tu reçois jusqu'à la fin ?
Tu as une solution toute faite pour ajouter l'ensemble d'une macro à un module.
Que veux-tu de plus ?
<andre.l' a écrit dans le message de news:
Oui,
Je comprends ta macro. C'est dans le cas ou la macro existe déjà.'-----------------------------------------------------
Sub AjouterUneLigneDeCode()
Dim Comp As CodeModule, NoLigne As Integer, Ajout As Variant
Ajout = "Msgbox ""ça marche!"""
'Attention : Remplace Module2 par le nom du module
'où se trouve ta procédure
Set Comp = ThisWorkbook.VBProject.VBComponents("module2").CodeModule
'indique à quelle ligne la procédure "Trouver" débute.
NoLigne = Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
'Ajoute à la deuxième ligne de la procédure "Trouver
'le code désiré
Comp.InsertLines NoLigne + 3, S
End Sub
'-----------------------------------------------------
| Y aurait'il une autre manière de faire la même chose???
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
Dans le module1 du classeur exemple : http://cjoint.com/?bytSIo7a06
exéute la procédure "Test"... elle va copiée le code dans le module"feuil1"
Dans la procédure test, tu renseignes les variables
Set Wk = ThisWorkbook ' OU Workbooks("NomDuClasseur.xls")
Module = "Feuil1" ' ou worksheets("NomFeuille").codename
et le code à copier
Et tu peux copier le code que tu désires dans le classeur ouvert de ton choix
et dans le module que tu désires... le module doit exister !
<andre.l' a écrit dans le message de news:
Bonjour,
Excusez-moi, je n'ai pas fait attention.
J'ai essayé ce que vous me dites mais sans succès.
J'ai également fait la même opération avec / sans la référence
Microsoft Visual Basic For Applications Extensibility 5.3 et 6.0
sans succès.
André
In article , MichDenis says...
Est-ce que cela t'arrive de lire les messages que tu reçois jusqu'à la fin ?
Tu as une solution toute faite pour ajouter l'ensemble d'une macro à un module.
Que veux-tu de plus ?
<andre.l' a écrit dans le message de news:
Oui,
Je comprends ta macro. C'est dans le cas ou la macro existe déjà.'-----------------------------------------------------
Sub AjouterUneLigneDeCode()
Dim Comp As CodeModule, NoLigne As Integer, Ajout As Variant
Ajout = "Msgbox ""ça marche!"""
'Attention : Remplace Module2 par le nom du module
'où se trouve ta procédure
Set Comp = ThisWorkbook.VBProject.VBComponents("module2").CodeModule
'indique à quelle ligne la procédure "Trouver" débute.
NoLigne = Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
'Ajoute à la deuxième ligne de la procédure "Trouver
'le code désiré
Comp.InsertLines NoLigne + 3, S
End Sub
'-----------------------------------------------------
| Y aurait'il une autre manière de faire la même chose???
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
Dans le module1 du classeur exemple : http://cjoint.com/?bytSIo7a06
exéute la procédure "Test"... elle va copiée le code dans le module"feuil1"
Dans la procédure test, tu renseignes les variables
Set Wk = ThisWorkbook ' OU Workbooks("NomDuClasseur.xls")
Module = "Feuil1" ' ou worksheets("NomFeuille").codename
et le code à copier
Et tu peux copier le code que tu désires dans le classeur ouvert de ton choix
et dans le module que tu désires... le module doit exister !
<andre.l'hoir@ext.ec.europa.eu> a écrit dans le message de news:
ep7vo10gmv@drn.newsguy.com...
Bonjour,
Excusez-moi, je n'ai pas fait attention.
J'ai essayé ce que vous me dites mais sans succès.
J'ai également fait la même opération avec / sans la référence
Microsoft Visual Basic For Applications Extensibility 5.3 et 6.0
sans succès.
André
In article <uA59Tq8PHHA.4412@TK2MSFTNGP04.phx.gbl>, MichDenis says...
Est-ce que cela t'arrive de lire les messages que tu reçois jusqu'à la fin ?
Tu as une solution toute faite pour ajouter l'ensemble d'une macro à un module.
Que veux-tu de plus ?
<andre.l'hoir@ext.ec.europa.eu> a écrit dans le message de news:
ep7snq09n7@drn.newsguy.com...
Oui,
Je comprends ta macro. C'est dans le cas ou la macro existe déjà.
'-----------------------------------------------------
Sub AjouterUneLigneDeCode()
Dim Comp As CodeModule, NoLigne As Integer, Ajout As Variant
Ajout = "Msgbox ""ça marche!"""
'Attention : Remplace Module2 par le nom du module
'où se trouve ta procédure
Set Comp = ThisWorkbook.VBProject.VBComponents("module2").CodeModule
'indique à quelle ligne la procédure "Trouver" débute.
NoLigne = Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
'Ajoute à la deuxième ligne de la procédure "Trouver
'le code désiré
Comp.InsertLines NoLigne + 3, S
End Sub
'-----------------------------------------------------
| Y aurait'il une autre manière de faire la même chose???
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------
Dans le module1 du classeur exemple : http://cjoint.com/?bytSIo7a06
exéute la procédure "Test"... elle va copiée le code dans le module"feuil1"
Dans la procédure test, tu renseignes les variables
Set Wk = ThisWorkbook ' OU Workbooks("NomDuClasseur.xls")
Module = "Feuil1" ' ou worksheets("NomFeuille").codename
et le code à copier
Et tu peux copier le code que tu désires dans le classeur ouvert de ton choix
et dans le module que tu désires... le module doit exister !
<andre.l' a écrit dans le message de news:
Bonjour,
Excusez-moi, je n'ai pas fait attention.
J'ai essayé ce que vous me dites mais sans succès.
J'ai également fait la même opération avec / sans la référence
Microsoft Visual Basic For Applications Extensibility 5.3 et 6.0
sans succès.
André
In article , MichDenis says...
Est-ce que cela t'arrive de lire les messages que tu reçois jusqu'à la fin ?
Tu as une solution toute faite pour ajouter l'ensemble d'une macro à un module.
Que veux-tu de plus ?
<andre.l' a écrit dans le message de news:
Oui,
Je comprends ta macro. C'est dans le cas ou la macro existe déjà.'-----------------------------------------------------
Sub AjouterUneLigneDeCode()
Dim Comp As CodeModule, NoLigne As Integer, Ajout As Variant
Ajout = "Msgbox ""ça marche!"""
'Attention : Remplace Module2 par le nom du module
'où se trouve ta procédure
Set Comp = ThisWorkbook.VBProject.VBComponents("module2").CodeModule
'indique à quelle ligne la procédure "Trouver" débute.
NoLigne = Comp.ProcBodyLine("Trouver", vbext_pk_Proc)
'Ajoute à la deuxième ligne de la procédure "Trouver
'le code désiré
Comp.InsertLines NoLigne + 3, S
End Sub
'-----------------------------------------------------
| Y aurait'il une autre manière de faire la même chose???
'----------------------------------------
Sub AddEventToModule()
'j'ai ajouté la référence à :
'Microsoft Visual Basic For Applications Extensibility 6.0
Dim livre As Workbook
Dim page As Worksheet
Set livre = Workbooks("9999009_acrinathrin (3).xls")
' Dans le futur, "livre" contiendra le nom des 200 fichiers à traiter.
' La macro doit se mettre toujours sur la même page
Set page = livre.Worksheets("Report")
Dim DebutCode As Long
Dim s As String
'le texte du code de l'événement
s = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & vbLf
s = s & " With Target" & vbLf
s = s & " If .Row > 54 And .Row < 86 And (.Column = 4 Or .Column = 7 Or
.Column = 10 Or
.Column = 13) Then" & vbLf
s = s & " c = .Column" & vbLf
s = s & " r = .Row" & vbLf
s = s & " MsgBox c & "" "" & r" & vbLf
s = s & " End If" & vbLf
s = s & " End With" & vbLf
s = s & "End Sub"
With ThisWorkbook.VBProject.VBComponents(page.CodeName).CodeModule
.AddFromString s
End With
s = ""
End Sub
'----------------------------------------