Bouton inséré dans le frame d'une feuille Excel ne réagit pas
Résolu/Fermé
Ein85
Messages postés
32
Date d'inscription
jeudi 10 décembre 2015
Statut
Membre
Dernière intervention
2 mars 2016
-
12 déc. 2015 à 14:08
Ein85 Messages postés 32 Date d'inscription jeudi 10 décembre 2015 Statut Membre Dernière intervention 2 mars 2016 - 14 déc. 2015 à 16:01
Ein85 Messages postés 32 Date d'inscription jeudi 10 décembre 2015 Statut Membre Dernière intervention 2 mars 2016 - 14 déc. 2015 à 16:01
A voir également:
- Bouton inséré dans le frame d'une feuille Excel ne réagit pas
- Liste déroulante excel - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Insérer une vidéo dans powerpoint - Guide
- Déplacer une colonne excel - Guide
- Aller à la ligne dans une cellule excel - Guide
2 réponses
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
12 déc. 2015 à 16:35
12 déc. 2015 à 16:35
Bonjour,
Le problème est que ton bouton fait partie intégrante de la Frame.
Deux solutions, tu mets ton bouton en dehors de la Fame ou alors tu supprimes tout. Frame et bouton.
Pour supprimer la Frame et garder le bouton qui en dehors:
Pour tout supprimer:
Voilà!
Le problème est que ton bouton fait partie intégrante de la Frame.
Deux solutions, tu mets ton bouton en dehors de la Fame ou alors tu supprimes tout. Frame et bouton.
Pour supprimer la Frame et garder le bouton qui en dehors:
Sub EffaceShapesSaufBoutons() Dim i For Each i In ActiveSheet.Shapes If i.Type <> 8 And i.Type <> 12 Then ActiveSheet.Shapes(i.Name).Delete End If Next i End Sub
Pour tout supprimer:
Sub EffaceShapesSaufBoutons() Dim i For Each i In ActiveSheet.Shapes ActiveSheet.Shapes(i.Name).Delete Next i End Sub
Voilà!
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
13 déc. 2015 à 08:55
13 déc. 2015 à 08:55
Ton bouton n'est pas reconnu en tant que tel. Mets toi en mode Création et double cliques sur ton bouton, que vois-tu:
Private Sub FrameTest_Click()
End Sub
c'est ta Frame et c'est pour cela que ça ne fonctionne pas.
Voici un code avec avec un bouton indépendant:
Private Sub FrameTest_Click()
End Sub
c'est ta Frame et c'est pour cela que ça ne fonctionne pas.
Voici un code avec avec un bouton indépendant:
Dim Frm As Object Dim Del As Object Dim ButtonMacro As String Dim x As Integer 'Crée un frame Set Frm = Worksheets(1).OLEObjects.Add(ClassType:="Forms.Frame.1", Left:=57, Top:=540, Width:=300, Height:=200.25) With Frm .Name = "FrameTest" End With 'crée le bouton Set Del = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _ Link:=False, DisplayAsIcon:=False, Left:=200, Top:=100, Width:=100, Height:=35) Del.Name = "FrameDelete" ActiveSheet.OLEObjects(2).Object.Caption = "Delete" 'assigne le code au bouton "Delete" ButtonMacro = "Sub FrameDelete_Click()" & vbCrLf ButtonMacro = ButtonMacro & "ActiveSheet.Shapes(""FrameTest"").Delete" & vbCrLf ButtonMacro = ButtonMacro & "End Sub" With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule x = .CountOfLines + 1 .InsertLines x, ButtonMacro End With
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
13 déc. 2015 à 09:50
13 déc. 2015 à 09:50
si tu veux que ton bouton est la même position que dans ton code (dans le Frame), tu mets:
Voilà!!!!
'crée le bouton Set Del = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _ Link:=False, DisplayAsIcon:=False, Left:=60, Top:=700, Width:=100, Height:=35)
Voilà!!!!
Ein85
Messages postés
32
Date d'inscription
jeudi 10 décembre 2015
Statut
Membre
Dernière intervention
2 mars 2016
13 déc. 2015 à 14:04
13 déc. 2015 à 14:04
Ok, j'espérais éviter de séparer le bouton du frame mais si ce n'est pas possible, je vais créer un bouton indépendant. Merci pour ton aide!
Ein85
Messages postés
32
Date d'inscription
jeudi 10 décembre 2015
Statut
Membre
Dernière intervention
2 mars 2016
>
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
13 déc. 2015 à 17:06
13 déc. 2015 à 17:06
Par contre, mon bouton est derrière le frame et je n'arrive pas à le faire réapparaître. Si j'utilise Del.Activate, je vois le bouton mais celui-ci est désactivé et si j'utilise Del.SetFocus, j'ai une erreur de type "Propriété ou méthode non gérée par cet objet". Aurais-tu une idée?
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
13 déc. 2015 à 18:44
13 déc. 2015 à 18:44
Je me suis amusé à supprimer le code dans la feuille1 en même temps que le Frame et le bouton. Avec le code suivant on voit le bouton dans le Frame:
Dim Frm As Object Dim Del As Object Dim ButtonMacro As String Dim x As Integer 'Crée un frame Set Frm = Worksheets(1).OLEObjects.Add(ClassType:="Forms.Frame.1", Left:=57, Top:=540, Width:=300, Height:=200.25) With Frm .Name = "FrameTest" End With 'crée le bouton Set Del = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _ Link:=False, DisplayAsIcon:=False, Left:=60, Top:=700, Width:=100, Height:=35) Del.Name = "FrameDelete" ActiveSheet.OLEObjects(2).Object.Caption = "Delete" 'assigne le code au bouton "Delete" ButtonMacro = "Sub FrameDelete_Click()" & vbCrLf ButtonMacro = ButtonMacro & "ActiveSheet.Shapes(""FrameTest"").Delete" & vbCrLf ButtonMacro = ButtonMacro & "ActiveSheet.Shapes(""FrameDelete"").Delete" & vbCrLf ButtonMacro = ButtonMacro & "With ActiveWorkbook.VBProject.VBComponents (ActiveWorkbook.Sheets(""Feuil1"").CodeName).CodeModule" & vbCrLf 'adapter le nom de la feuille ButtonMacro = ButtonMacro & ".DeleteLines 1, .CountOfLines" & vbCrLf ButtonMacro = ButtonMacro & ".CodePane.Window.Close" & vbCrLf ButtonMacro = ButtonMacro & "End With" & vbCrLf ButtonMacro = ButtonMacro & "End Sub" With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule x = .CountOfLines + 1 .InsertLines x, ButtonMacro End With
Ein85
Messages postés
32
Date d'inscription
jeudi 10 décembre 2015
Statut
Membre
Dernière intervention
2 mars 2016
14 déc. 2015 à 13:36
14 déc. 2015 à 13:36
En fait, ça ne fonctionnait pas à cause d'une ligne de code (Frm.Activate en l'occurence) que j'avais laissé en fin de procédure. Une fois enlevée, ça fonctionne. Sinon, comme tu l'as dit toi même, ton code supprime tout le code de la feuille 1 mais comment fait-on pour ne supprimer que la sub rajoutée dynamiquement (donc Sub FrameDelete_Click())? J'ai en effet d'autres procédures liées à d'autres boutons sur cette feuille que je ne dois pas effacer. Merci d'avance!
12 déc. 2015 à 16:37
12 déc. 2015 à 16:39
Mettre Option Explicit au début de la page
12 déc. 2015 à 20:19
Merci pour ton aide mais le problème ne semble pas venir du code de suppression qui fonctionne très bien lorsque j'utilise le mode pas à pas en debug et qui supprime tout comme prévu. Le problème semble plutôt venir du bouton dont la macro n'est pas déclenchée par l'événement "Click". Lorsque je clique, c'est comme s'il n'y avait aucune macro associée. Que faut-il faire pour que le bouton soit reconnu?