OVH Cloud OVH Cloud

Macro qui se lance une seule fois et se détruit.

1 réponse
Avatar
Martini
Bonsoir.

Je débute en VB pour Excel.

J'utilise Excel 2003, Windows XP Pro

Je voudrais utiliser la macro unique du site « excelabo » :





Private Sub Workbook_Open()

Dim liDeb, NbLi



'exécute une action à l'ouverture

Msg = "La procédure Workbook_Open a été exécutée"

ActiveSheet.Range("A1").Value = Msg



'détruit la procédure

'(l'action ne sera donc exécutée qu'une seule fois)

With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule

liDeb = .ProcStartLine("Workbook_Open", 0)

NbLi = .ProcCountLines("Workbook_Open", 0)

.DeleteLines liDeb, NbLi

End With



End Sub



J'ai copié ce code dans le module « ThisWorkbook » du classeur dans lequel
je voudrai voir disparaître tout ce code et celui que je lui ai ajouté avant
la ligne « 'détruit la procédure »,

Afin qu'après le premier lancement de ce classeur ces codes ne se lancent
plus.



Mais j'ai une erreur sur la ligne :



With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule



« erreur d'exécution '1004' »

« erreur définie par l'application ou par l'objet »





Dans « outils/références » j'ai coché « Microsoft Visual Basic for
Applications Extensibility 5.3 »



Malgré la lecture de multiples sites ou forums, je sèche lamentablement !

Pouvez-vous me donner un coup de main ?

Merci.

1 réponse

Avatar
Patrice Henrio
With ThisWorkbook.VBProject.VBComponents(ThisWorkbook).CodeModule

Supprime les guillemets, il ne s'agit pas d'une chaîne de caractères mais du
nom d'un objet.



"Martini" a écrit dans le message de news:
evcAEdV%
Bonsoir.

Je débute en VB pour Excel.

J'utilise Excel 2003, Windows XP Pro

Je voudrais utiliser la macro unique du site « excelabo » :





Private Sub Workbook_Open()

Dim liDeb, NbLi



'exécute une action à l'ouverture

Msg = "La procédure Workbook_Open a été exécutée"

ActiveSheet.Range("A1").Value = Msg



'détruit la procédure

'(l'action ne sera donc exécutée qu'une seule fois)

With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule

liDeb = .ProcStartLine("Workbook_Open", 0)

NbLi = .ProcCountLines("Workbook_Open", 0)

.DeleteLines liDeb, NbLi

End With



End Sub



J'ai copié ce code dans le module « ThisWorkbook » du classeur dans lequel
je voudrai voir disparaître tout ce code et celui que je lui ai ajouté
avant la ligne « 'détruit la procédure »,

Afin qu'après le premier lancement de ce classeur ces codes ne se lancent
plus.



Mais j'ai une erreur sur la ligne :



With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule



« erreur d'exécution '1004' »

« erreur définie par l'application ou par l'objet »





Dans « outils/références » j'ai coché « Microsoft Visual Basic for
Applications Extensibility 5.3 »



Malgré la lecture de multiples sites ou forums, je sèche lamentablement !

Pouvez-vous me donner un coup de main ?

Merci.