cs_mabrouklepoux
Messages postés84Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention25 juillet 2008
-
9 mars 2007 à 13:18
cs_mabrouklepoux
Messages postés84Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention25 juillet 2008
-
23 mars 2007 à 09:58
bonjour,
j'ai un fichier excel qui crée une feuille excel à l'intérieur de lui meme. trop fou le truc je vous jure (on est vendredi je craque désolé ...)
je voudrais pouvoir mettre une procédure dans le ondoubleclick de cette feuille.
idée ???
un truc du style :
Set cursheet.OnDoubleClick = triData
mais en version "quimarche" plutot qu'en verison qui marche pas ...
par avance merci !!!
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 20223 22 mars 2007 à 21:23
Salut,
Bon si t'es pas spécialiste de VBA ça va être dur mais bon voilà un code que tu peu adapter pour toi.
J'ai pas testé ce code viens de la toile
Sub AddSheet()
'Patrick Molloy, mpep
Dim wb As Workbook
Dim ws As Worksheet
' add a new book with a single sheet
Set wb = Workbooks.Add(xlWBATWorksheet)
Set ws = wb.ActiveSheet
ws.Name = "MyNewSheet"
'create a code module
' Open "MyModule" For Output As #1
' Print #1, "Private Sub Worksheet_BeforeDoubleClick" _
' & "(ByVal Target As Range, Cancel As Boolean)"
' Print #1, " MsgBox ActiveSheet.Name,,Activeworkbook.name"
' Print #1, "End Sub"
' Close #1
'autre méthode (fs) (évite le fichier temporaire "MyModule")
Code = "Private Sub Worksheet_BeforeDoubleClick" _
& "(ByVal Target As Range, Cancel As Boolean)" & vbLf
Code = Code & " MsgBox ActiveSheet.Name,,Activeworkbook.name" & vbLf
Code = Code & "End Sub"
'load the code into the new wb
' wb.VBProject.VBComponents.Item(2).CodeModule.AddFromFile "MyModule"
wb.VBProject.VBComponents.Item(2).CodeModule.AddFromString Code
Set ws = Nothing
Set wb = Nothing
End Sub
Et dessous le code pour créer un bouton et son code puis le détruire
Public Const NomBouton$ = "MonBouton"
Sub CreeBoutonFeuilleEtCode()
Dim Btn As OLEObject, VbCodeMod As Object
Dim i&, Code$
'le bouton
Set Btn = ActiveSheet.OLEObjects.Add _
(ClassType:="Forms.CommandButton.1") '
i = ActiveSheet.OLEObjects.Count
With Btn
.Object.Caption = "Test bouton " & i
.Object.Font.Bold = True
.Top = ActiveCell(1, 2).Top
.Left = ActiveCell(1, 2).Left
.Name = NomBouton & i
.Visible = True
End With
'son code
Set VbCodeMod = ActiveWorkbook.VBProject. _
VBComponents(Btn.Parent.CodeName).CodeModule
Sub NettoieBoutonEtCode()
Dim NomBtn$, Shp As OLEObject, Sht As Worksheet
For Each Sht In ActiveWorkbook.Sheets
For Each Shp In Sht.OLEObjects
NomBtn = Shp.Name
If Left(NomBtn, 9) = NomBouton Then
Shp.Delete
With ActiveWorkbook.VBProject. _
VBComponents(Sht.CodeName).CodeModule
Deb = .ProcStartLine(NomBtn & "_Click", 0)
NbLi = .ProcCountLines(NomBtn & "_Click", 0)
.DeleteLines Deb, NbLi
End With
End If
Next Shp
Next Sht
End Sub
cs_mabrouklepoux
Messages postés84Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention25 juillet 20081 9 mars 2007 à 14:19
j'ai trouvé une parade, qui consiste à mettre mon code dans le worsbook, et à en limiter l'execution à une feuille par le biais d'un range.
donc quand je créé ma feuille, j'y créé aussi un range
dans le code du workbook, sur l'evt doubleclic, je vérifie que la cellule cliquée appartient bien à ce range.
c pas top, mais ca me suffit.
je reste preneur d'une manière de modifier le code d'une feuille qu'on créé ...
cs_mabrouklepoux
Messages postés84Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention25 juillet 20081 9 mars 2007 à 14:19
j'ai trouvé une parade, qui consiste à mettre mon code dans le worsbook, et à en limiter l'execution à une feuille par le biais d'un range.
donc quand je créé ma feuille, j'y créé aussi un range
dans le code du workbook, sur l'evt doubleclic, je vérifie que la cellule cliquée appartient bien à ce range.
c pas top, mais ca me suffit.
je reste preneur d'une manière de modifier le code d'une feuille qu'on créé ...