Excel 2003 Bouton avec code
Dernière réponse : dans Programmation
Bonjour à tous,
J'ai un bouton dans un onglet d'excel qui m'ouvre un onglet existant et me crée un bouton dessus.
Je voudrais savoir comment faire pour ajouter du code sur ce deuxième bouton qui me permettra d'ouvrir un autre onglet existant.
J'ai donc ce code qui après click sur le premier bouton, fait une recherche et, si elle est fructueuse, m'ouvre un onglet existant et crée un bouton dessus.
Je voudrais donc ajouter du code sur ce bouton, style :
Sheets("Modification").Activate
mais je ne sais pas comment l'appliquer à ce bouton.
Je demande donc votre aide. Merci.
J'ai un bouton dans un onglet d'excel qui m'ouvre un onglet existant et me crée un bouton dessus.
Je voudrais savoir comment faire pour ajouter du code sur ce deuxième bouton qui me permettra d'ouvrir un autre onglet existant.
J'ai donc ce code qui après click sur le premier bouton, fait une recherche et, si elle est fructueuse, m'ouvre un onglet existant et crée un bouton dessus.
Private Sub Chercher_Click()
On Error Resume Next
Sheets(Range("B19").Value).Visible = 1
If Err <> 0 Then
MsgBox "Pas d'invité avec ce nom dans la liste. Faites une autre recherche. Attention à l'orthographe et aux accents.", , "Message Erreur"
End If
Sheets(Range("B19").Value).Activate
ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
, DisplayAsIcon:=False, Left:=183.75, Top:=119.25, Width:=169.5, _
Height:=79.5).Select
ActiveSheet.Shapes("CommandButton1").Select
End Sub
Je voudrais donc ajouter du code sur ce bouton, style :
Sheets("Modification").Activate
mais je ne sais pas comment l'appliquer à ce bouton.
Je demande donc votre aide. Merci.
Autres pages sur : excel 2003 bouton code
Lassé par la pub ? Créez un compte
J'ai trouvé un code un peu similaire qui au lieu d'ouvrir une page comme je le souhaite, supprime les valeurs des cellules.
Quelqu'un saurait comment le modifier pour ouvrir un onglet existant "Modification" ?
Merci.
http://excel.developpez.com/faq/?page=OleObject#AjoutCommandButton
Quelqu'un saurait comment le modifier pour ouvrir un onglet existant "Modification" ?
Merci.
http://excel.developpez.com/faq/?page=OleObject#AjoutCommandButton
Vindiou !!!! Du "vas-y comme je te pousse et si ça plante, je gère". Beurk.
Lis ce petit topic pour améliorer ta programmation. (Si je me suis donné la peine de l'écrire il y a déjà deux ans, c'est que tu n'es pas le seul à faire comme ça. Ça n'empêche que c'est très moche.)
Arrête avec tout ces Select et ces ActiveTruc, c'est mal.
Seul le Activate de la ligne 8 est légitime.
Utilise des variables pour désigner tes objets.
Par exemple, dans mon code, ws est la variable qui désigne la feuille (Worksheet) sur laquelle est ton bouton, et btn est la variable qui désigne ton bouton :
Lis ce petit topic pour améliorer ta programmation. (Si je me suis donné la peine de l'écrire il y a déjà deux ans, c'est que tu n'es pas le seul à faire comme ça. Ça n'empêche que c'est très moche.)
Arrête avec tout ces Select et ces ActiveTruc, c'est mal.
Seul le Activate de la ligne 8 est légitime.
Utilise des variables pour désigner tes objets.
Par exemple, dans mon code, ws est la variable qui désigne la feuille (Worksheet) sur laquelle est ton bouton, et btn est la variable qui désigne ton bouton :
Dim cm As CodeModule Set cm = ws.Parent.VBProject.VBComponents(ws.Name).CodeModule cm.InsertLines cm.CountOfLines + 1, _ "Sub " & btn.Name & "_Click()" & vbCrLf & _ " MsgBox ""HelloBEBER1212""" & vbCrLf & _ "End Sub"
zeb,
La preuve que je débute vraiment : le code que tu me donnes, je ne sais même pas où le mettre pour le tester.
Est ce que je dois créer une macro avec ça ? L'entrer dans VB (mais je ne sais pas après comment le lancer) ?
Je comprends bien que ça doit m'ouvrir un message, mais bon...
Je réessayerai tout ça ce soir.
Merci.
La preuve que je débute vraiment : le code que tu me donnes, je ne sais même pas où le mettre pour le tester.
Est ce que je dois créer une macro avec ça ? L'entrer dans VB (mais je ne sais pas après comment le lancer) ?
Je comprends bien que ça doit m'ouvrir un message, mais bon...
Je réessayerai tout ça ce soir.
Merci.
Bonjour à tous, j'ai eu ma réponse pour faire ce que je souhaitais faire, à savoir un bouton créé automatiquement sur une page, pour en ouvrir une autre.
Le problème se situait dans la ligne :
Il fallait remplacer .Name par .CodeName
Maintenant ça fonctionne.
Pour info, mon code en entier :
Merci pour votre aide.
Le problème se situait dans la ligne :
With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
Il fallait remplacer .Name par .CodeName
Maintenant ça fonctionne.
Pour info, mon code en entier :
Private Sub Chercher_Click()
Dim laMacro As String
Dim x As Integer
On Error Resume Next
Sheets(Range("B19").Value).Visible = 1
Application.ScreenUpdating = False
If Err <> 0 Then
MsgBox "Pas d'invité avec ce nom dans la liste. Faites une autre recherche. Attention à l'orthographe et aux accents.", , "Message Erreur"
Else: Sheets(Range("B19").Value).Activate
With ActiveSheet
.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
, DisplayAsIcon:=False, Left:=183.75, Top:=119.25, Width:=169.5, _
Height:=79.5).Select
.OLEObjects("CommandButton1").Object.Caption = "Modifier"
End With
laMacro = "Sub CommandButton1_Click()" & vbCrLf
laMacro = laMacro & "Sheets(""Modification"").Visible=1" & vbCrLf
laMacro = laMacro & "Sheets(""Modification"").Activate" & vbCrLf
laMacro = laMacro & "End Sub"
With ThisWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
x = .CountOfLines + 1
.InsertLines x, laMacro
End With
Application.ScreenUpdating = True
End If
End Sub
Merci pour votre aide.
Ça marche, c'est l'essentiel.
-------------------
N'empêche que ton code est dégueulasse (*) :
Faire planter exprès l'appli c'est vraiment nul. Je t'ai filé de quoi faire autrement.
Ne pas de servir de variables pour pointer tes objets, ce n'est pas mieux. Ca ne marche que si tu n'as qu'un seul bouton. Et puis utiliser des variables te permettrait de t'affranchir des objets sélectionnés ou pas.
Pour ajouter une référence, clique sur le menu Outils/Références. VBA est modulaire, tous les modules ne sont pas chargés par défaut. Avec la façon dont tu as écrit ton code, tu n'as pas besoin de déclarer le CodeModule.
Tes ScreenUpdating ne sont pas correctement balancés. Tu vas au devant de problèmes.
Enfin, mais c'est pour pinailler, remplace tes Sheets par des Worksheets.
Tout à fait exact. Quand on ne change pas le nom des feuilles, Name = CodeName. Donc ça marche. Mais comme il est légitime de changer le nom des feuilles, il ne faut utiliser CodeName. Cette démonstration vaut surtout parce qu'elle pourrait s'appliquer aux éléments dont je te fais part juste avant.
(*) Pas toi, le code. Si le mot est rude, c'est pour appuyer bien fort.
-------------------
N'empêche que ton code est dégueulasse (*) :
Faire planter exprès l'appli c'est vraiment nul. Je t'ai filé de quoi faire autrement.
Ne pas de servir de variables pour pointer tes objets, ce n'est pas mieux. Ca ne marche que si tu n'as qu'un seul bouton. Et puis utiliser des variables te permettrait de t'affranchir des objets sélectionnés ou pas.
Pour ajouter une référence, clique sur le menu Outils/Références. VBA est modulaire, tous les modules ne sont pas chargés par défaut. Avec la façon dont tu as écrit ton code, tu n'as pas besoin de déclarer le CodeModule.
Tes ScreenUpdating ne sont pas correctement balancés. Tu vas au devant de problèmes.
Enfin, mais c'est pour pinailler, remplace tes Sheets par des Worksheets.
Citation :
Il fallait remplacer .Name par .CodeName(*) Pas toi, le code. Si le mot est rude, c'est pour appuyer bien fort.
Bonjour Zeb,
Effectivement, ça marche c'est l'essentiel, et effectivement mon code est peut-être dégueulasse. Je ne peux pas juger car je ne m'y connais pas assez.
Tu parles du If Err <> 0 Then ... ?
En effet tu m'as donné un truc pour ça, mais comme je n'y connais vraiment rien, je ne sais pas du tout comment l'adapter à mon fichier. D'ailleurs il y a surement beaucoup d'autres choses dedans qui sont "dégueulasses".
Pour me servir de variables, c'est pareil. Je ne sais pas du tout comment m'en servir, ni comment les définir.
Les ScreenUpdating, idem. J'ai vu que ça permettait de ne pas voir les changements de pages et autre, mais je ne sais pas si il y a une façon correcte de les placer.
Voila, pour l'instant je ne sais donc pas comment l'améliorer...
Merci.
Effectivement, ça marche c'est l'essentiel, et effectivement mon code est peut-être dégueulasse. Je ne peux pas juger car je ne m'y connais pas assez.
Citation :
Faire planter exprès l'appli c'est vraiment nulTu parles du If Err <> 0 Then ... ?
En effet tu m'as donné un truc pour ça, mais comme je n'y connais vraiment rien, je ne sais pas du tout comment l'adapter à mon fichier. D'ailleurs il y a surement beaucoup d'autres choses dedans qui sont "dégueulasses".
Pour me servir de variables, c'est pareil. Je ne sais pas du tout comment m'en servir, ni comment les définir.
Les ScreenUpdating, idem. J'ai vu que ça permettait de ne pas voir les changements de pages et autre, mais je ne sais pas si il y a une façon correcte de les placer.
Voila, pour l'instant je ne sais donc pas comment l'améliorer...
Merci.
Voilà ce que je te propose. A étudier
L'utilisation de ce code :
Je ne me traîne pas de clause Else trop longue. Je mets un Exit Sub dès qu'une condition sine qua non est fausse. (Ligne 10) (Je me suis permis de changer un peu ton message
).
Demande à Excel l'aide de la fonction Add() de l'objet OLEObjects. Tu verras que Link et DisplayAsIcon sont inutiles. Je les ai donc virés. (Ligne 16)
Je ne vois pas l'intérêt des ScreenUpdating. Même punition : virés.
Sub Chercher_Click() Dim laMacro As String Dim NomFeuille As String Dim Feuille As Worksheet Dim Bouton As OLEObject NomFeuille = Worksheets("le nom de la feuille de départ").Range("B19").Value If Not WorksheetExists(NomFeuille) Then MsgBox "Pas d'invité du nom de '" & NomFeuille & "' dans la liste. " & vbCrLf & _ "Faites une autre recherche. Attention à l'orthographe et aux accents.", , "Message Erreur" Exit Sub End If Set Feuille = Worksheets(NomFeuille) Feuille.Activate Set Bouton = Feuille.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _ Left:=183.75, Top:=119.25, Width:=169.5, Height:=79.5) Bouton.Object.Caption = "Modifier" Bouton.Name = "MonBouton" ' // <-- Version Luxe. Inutile en fait ;) laMacro = "Sub " & Bouton.Name & "_Click()" & vbCrLf & _ " Sheets(""Modification"" ).Visible=1" & vbCrLf & _ " Sheets(""Modification"" ).Activate" & vbCrLf & _ "End Sub" With ThisWorkbook.VBProject.VBComponents(Feuille.CodeName).CodeModule .InsertLines .CountOfLines + 1, laMacro End With End Sub
L'utilisation de ce code :
te dispense d'avoir à utiliser celui-ci :
With ThisWorkbook.VBProject.VBComponents(Feuille.CodeName).CodeModule .InsertLines .CountOfLines + 1, laMacro End With
Dim cm As CodeModule Set cm = Feuille.Parent.VBProject.VBComponents(Feuille.Name).CodeModule cm.InsertLines cm.CountOfLines + 1, laMacro
Je ne me traîne pas de clause Else trop longue. Je mets un Exit Sub dès qu'une condition sine qua non est fausse. (Ligne 10) (Je me suis permis de changer un peu ton message
).Demande à Excel l'aide de la fonction Add() de l'objet OLEObjects. Tu verras que Link et DisplayAsIcon sont inutiles. Je les ai donc virés. (Ligne 16)
Je ne vois pas l'intérêt des ScreenUpdating. Même punition : virés.
Bonjour Zeb,
Merci pour ta réponse. Effectivement ce code est plus joli.
J'ai un problème avec :
"Sub ou fonction non définie"
J'ai cherché dans l'aide de VB, mais pas de résultat pour "WorksheetExists"... Je ne sais donc pas ce qui cloche.
Merci pour la modif du message d'erreur, je n'aurais pas su y intégrer le nom de la feuille.
A quoi sert la ligne 20, si elle est inutile ?
Merci.
Merci pour ta réponse. Effectivement ce code est plus joli.
J'ai un problème avec :
If Not WorksheetExists(NomFeuille) Then
"Sub ou fonction non définie"
J'ai cherché dans l'aide de VB, mais pas de résultat pour "WorksheetExists"... Je ne sais donc pas ce qui cloche.
Merci pour la modif du message d'erreur, je n'aurais pas su y intégrer le nom de la feuille.
A quoi sert la ligne 20, si elle est inutile ?
Merci.
Dans ce message http://www.presence-pc.com/forum/ppc/Programmation/exce... je te donnais un topic à lire. Tu ne l'as donc pas fait ?
Quand ce sera fait, tu sauras ce qu'est WorksheetExists()
La ligne 20 n'est pas complètement inutile. Elle permet de fixer le nom du contrôle à quelque chose de connu. C'est du luxe dans ce cas.
Quand ce sera fait, tu sauras ce qu'est WorksheetExists()
La ligne 20 n'est pas complètement inutile. Elle permet de fixer le nom du contrôle à quelque chose de connu. C'est du luxe dans ce cas.
Bonjour,
J'avais bien lu à la fois ton post, et le lien que tu m'as montré. Mais je me suis peut être mal expliqué.
Je sais ce qu'est WorksheetExists(), je sais que c'est pour permettre de trouver si une feuille existe dans un WorkBook, sans avoir à toutes les parcourir.
J'ai même essayé d'une autre façon que celle que tu m'as donné, en utilisant ce qu'il y a sur le lien, mais j'ai quand même un problème.
J'ai essayé avec ça :
Même si la page existe j'ai le message d'erreur, mais il l'ouvre quand même et ajoute le bouton...?!?
Je ne sais pas pourquoi j'ai le message d'erreur alors que j'ai "If not"...
Merci.
J'avais bien lu à la fois ton post, et le lien que tu m'as montré. Mais je me suis peut être mal expliqué.
Je sais ce qu'est WorksheetExists(), je sais que c'est pour permettre de trouver si une feuille existe dans un WorkBook, sans avoir à toutes les parcourir.
J'ai même essayé d'une autre façon que celle que tu m'as donné, en utilisant ce qu'il y a sur le lien, mais j'ai quand même un problème.
J'ai essayé avec ça :
Dim NomFeuille As String
Dim Feuille As Worksheet
Dim Bouton As OLEObject
Dim ws As Worksheet
Set wb = ActiveWorkbook
NomFeuille = Worksheets("Recherche").Range("B19").Value
For Each ws In wb.Worksheets
If Not ws.Name = (NomFeuille) Then
MsgBox "Pas d'invité du nom de '" & NomFeuille & "' dans la liste. " & vbCrLf & _
"Faites une autre recherche. Attention à l'orthographe et aux accents.", , "Message Erreur"
Exit For
End If
Next
Même si la page existe j'ai le message d'erreur, mais il l'ouvre quand même et ajoute le bouton...?!?
Je ne sais pas pourquoi j'ai le message d'erreur alors que j'ai "If not"...
Merci.
Mais qu'est-ce que tu fais !?
(*)
Avec ce code, tu parcours toutes les feuilles, et à chaque fois que tu en rencontres une qui n'est pas la bonne, tu auras le message d'erreur, évidemment.
Copie WorksheetExists() telle quelle, et utilise-la dans ton code comme je te le propose.
------------------
(*) J'aime bien quand même le fait que tu ais cherché à comprendre et à modifier à ton profit le code que je te proposais
(*)Avec ce code, tu parcours toutes les feuilles, et à chaque fois que tu en rencontres une qui n'est pas la bonne, tu auras le message d'erreur, évidemment.
Copie WorksheetExists() telle quelle, et utilise-la dans ton code comme je te le propose.
------------------
(*) J'aime bien quand même le fait que tu ais cherché à comprendre et à modifier à ton profit le code que je te proposais
Citation :
Mais qu'est-ce que tu fais !?
(*)
C'est bien ce qui me semblait, que mon code vérifiait toutes les pages, mais je n'étais pas sûr...
Quand tu me dis
Citation :
Copie WorksheetExists() telle quelleJ'ai essayé avec ton code, en remplaçant "le nom de la feuille de départ", par "Recherche" (le nom de la feuille de départ
), mais comme je t'ai dit, j'ai un problème avec :
1. If Not WorksheetExists(NomFeuille) Then
"Sub ou fonction non définie" ...
OK, merci. Je n'avais pas pigé qu'il fallait "lier" les deux. Maintenant ça fonctionne comme je le voulais.
Je vais pouvoir m'attaquer à "comment supprimer le bouton son code" en appuyant sur un autre bouton. Pfiuuu...
Merci.
Edit : P.S : j'ai ajouté la ligne
Merci.
Je vais pouvoir m'attaquer à "comment supprimer le bouton son code" en appuyant sur un autre bouton. Pfiuuu...
Merci.
Edit : P.S : j'ai ajouté la ligne
avant la ligne 15
Feuille.Visible=1
Feuille.Activate
Merci.
Comment supprimer un bouton et son code, sur une feuille qui n'existe pas encore mais qui , une fois créée, aura pour nom : Worksheets("Recherche" ).Range("B19" ).Value
Je m'explique :
Sur une feuille "1", j'ai un bouton qui me crée :
- une feuille "2" que je renomme avec la valeur d'une cellule de la feuille "1", soit Worksheets("1" ).Range("B19" ).Value
- un bouton sur cette feuille "2"
Le bouton créé sur la feuille "2" m'ouvre une feuille "3" (qui existe déjà mais cachée) sur laquelle il existe un bouton qui :
- copie une ligne de la feuille "3" sur la feuille "1"
- supprime le bouton et son code de la feuille "2" qui s'appelle en fait maintenant : Worksheets("1" ).Range("B19" ).Value
Voila. Est-ce plus clair ? De toutes façons je ne sais pas comment l'être plus...
Je m'explique :
Sur une feuille "1", j'ai un bouton qui me crée :
- une feuille "2" que je renomme avec la valeur d'une cellule de la feuille "1", soit Worksheets("1" ).Range("B19" ).Value
- un bouton sur cette feuille "2"
Le bouton créé sur la feuille "2" m'ouvre une feuille "3" (qui existe déjà mais cachée) sur laquelle il existe un bouton qui :
- copie une ligne de la feuille "3" sur la feuille "1"
- supprime le bouton et son code de la feuille "2" qui s'appelle en fait maintenant : Worksheets("1" ).Range("B19" ).Value
Voila. Est-ce plus clair ? De toutes façons je ne sais pas comment l'être plus...
Citation :
Qui n'existe pas encore.Ah, voilà l'explication. C'est clair.
Alors tu te souviens que je te disais que c'était du luxe de nommer tes boutons. Pour ce que nous avions à faire avant, oui. Pour ce que nous avons à faire maintenant, non.
Or donc. Tu vas dans l'éditeur VBA et tu ouvres le menu Option/Références de ton projet. Tu y trouves la ligne VBA Extensibility ou un truc comme ça, et tu coches.
Comment trouver un bouton dans une feuille ?
Souvenons-nous d'abord comment on le crée. Soit ws, une variable pointant sur la feuille (Worksheet) :
Dim btn As OLEObjet
Set btn = ws.OLEObjects.Add("Forms.CommandButton.1")
btn.Name = "le_bouton_de_la_feuille_2_auquel_beber_a_penser_a_donner_un_nom"
Pour le retrouver, facile. Il suffit de l'appeler par son nom que l'on connaît puique c'est nous qui l'avons choisi
Il reste à le supprimer.
Dim btn As OLEObjet
Set btn = ws.OLEObjects("le_bouton_de_la_feuille_2_auquel_beber_a_penser_a_donner_un_nom")
btn.Delete
Srofacile
Bon, maintenant il reste des bouts de code perdu
Alors avant la fatidique ligne Delete, on va ajouter ce code :
Dim Start As Long
Dim Count As Long
Dim cm As CodeModule
Set cm = ws.Parent.VBProject.VBComponents(ws.CodeName).CodeModule
Start = cm.ProcStartLine (btn.Name & "_Click", vbext_pk_Proc)
Count = cm.ProcCountLines(btn.Name & "_Click", vbext_pk_Proc)
cm.DeleteLines Start, Count
En fait j'ai été plus clair
, sauf que je me suis trompé.
Je reprends :
Pas de Changement :
Sur une feuille "1", j'ai un bouton qui me crée :
- une feuille "2" que je renomme avec la valeur d'une cellule de la feuille "1", soit Worksheets("1" ).Range("B19" ).Value
- un bouton sur cette feuille "2"
Changement:
Le bouton créé sur la feuille "2" :
- m'ouvre une feuille "3" (qui existe déjà mais cachée) sur laquelle il existe un bouton qui copie une ligne de la feuille "3" sur la feuille "1"
- supprime le bouton et son code de la feuille "2" qui s'appelle en fait maintenant : Worksheets("1" ).Range("B19" ).Value
C'est le bouton de la feuille "2" qui une fois qu'il a ouvert la feuille "3", se supprime et supprime son code. Je pense donc qu'il ne faut pas supprimer le code avant le bouton (sinon il ne "saura" plus qu'il doit se supprimer).
Je dois donc ajouter les lignes de suppression au code :
J'ai essayé :
Mais il y a un problème à la ligne 13 : Variable objet ou variable de bloc with non définie.
, sauf que je me suis trompé.
Je reprends :
Pas de Changement :
Sur une feuille "1", j'ai un bouton qui me crée :
- une feuille "2" que je renomme avec la valeur d'une cellule de la feuille "1", soit Worksheets("1" ).Range("B19" ).Value
- un bouton sur cette feuille "2"
Changement:
Le bouton créé sur la feuille "2" :
- m'ouvre une feuille "3" (qui existe déjà mais cachée) sur laquelle il existe un bouton qui copie une ligne de la feuille "3" sur la feuille "1"
- supprime le bouton et son code de la feuille "2" qui s'appelle en fait maintenant : Worksheets("1" ).Range("B19" ).Value
C'est le bouton de la feuille "2" qui une fois qu'il a ouvert la feuille "3", se supprime et supprime son code. Je pense donc qu'il ne faut pas supprimer le code avant le bouton (sinon il ne "saura" plus qu'il doit se supprimer).
Je dois donc ajouter les lignes de suppression au code :
laMacro = "Sub " & Bouton.Name & "_Click()" & vbCrLf & _
" Sheets(""Modification"" ).Visible=1" & vbCrLf & _
" Sheets(""Modification"" ).Activate" & vbCrLf & _
"End Sub"
J'ai essayé :
laMacro = "Sub " & Bouton.Name & "_Click()" & vbCrLf & _
" Dim NomFeuille As String" & vbCrLf & _
" Dim Btn As OLEObject" & vbCrLf & _
" Dim Start As Long" & vbCrLf & _
" Dim Count As Long" & vbCrLf & _
" Dim cm As CodeModule" & vbCrLf & _
" Dim ws As Worksheet" & vbCrLf & _
" Sheets(""Recherche"" ).Visible=0" & vbCrLf & _
" Sheets(""Modification"" ).Visible=1" & vbCrLf & _
" Sheets(""Modification"" ).Activate" & vbCrLf & _
" NomFeuille = Worksheets(""Recherche"").Range(""B19"").Value" & vbCrLf & _
" Set Feuille = Worksheets(NomFeuille)" & vbCrLf & _
" Set cm = ws.Parent.VBProject.VBComponents(ws.CodeName).CodeModule" & vbCrLf & _
" Start = cm.ProcStartLine(Btn.Name & ""_Click"", vbext_pk_Proc)" & vbCrLf & _
" Count = cm.ProcCountLines(Btn.Name & ""_Click"", vbext_pk_Proc)" & vbCrLf & _
" cm.DeleteLines Start, Count" & vbCrLf & _
" Set btn = Feuille.OLEObjects(""MonBouton"")" & vbCrLf & _
" btn.Delete" & vbCrLf & _
" End Sub"
Mais il y a un problème à la ligne 13 : Variable objet ou variable de bloc with non définie.
C'est ws qui est inconnu. Et pour cause :
J'ai écris :
Tu as codé :
Ben si tu donnes un nom différent à tes variables, adapte le code que je te propose
Eh, t'aurais pas oublié de déclarer ta variable ,
EDIT:
Tiens en passant, ça prouve que tu n'utilises pas l'Option Explicit (c'est mal).
J'ai écris :
Citation :
Soit ws, une variable pointant sur la feuilleTu as codé :
Set Feuille = Worksheets(NomFeuille)
Ben si tu donnes un nom différent à tes variables, adapte le code que je te propose
Eh, t'aurais pas oublié de déclarer ta variable ,
EDIT:
Tiens en passant, ça prouve que tu n'utilises pas l'Option Explicit (c'est mal).
Au dessus, j'ai :
Et même en essayant :
ça marche pas...
C'est quoi l'Option Explicit ? OK je viens de voir sur le net.
Par contre je viens d'activer l'option "Déclaration des variables obligatoire", mais ça se met apparemment que sur les nouvelles feuilles. Comment je fais pour ajouter l'Option Explicit (Edit: sur une Sub qui existe déjà)?
" Dim ws As Worksheet" & vbCrLf & _
Et même en essayant :
" Set cm = Feuille.Parent.VBProject.VBComponents(Feuille.CodeName).CodeModule" & vbCrLf & _
ça marche pas...
C'est quoi l'Option Explicit ? OK je viens de voir sur le net.
Par contre je viens d'activer l'option "Déclaration des variables obligatoire", mais ça se met apparemment que sur les nouvelles feuilles. Comment je fais pour ajouter l'Option Explicit (Edit: sur une Sub qui existe déjà)?
Lassé par la pub ? Créez un compte
- Contenus similaires :
- articlesExcel 2003 conversion csv
- ForumExcel 2003 problã me de date
- ForumExcel 2003 vba netsend
- ForumExcel 2003 souris folle
- ForumExcel 2003 titre de colonne
- ForumLes macros excel 2003
- ForumConvertisseur excel 2003
- ForumDesinstaller excel 2003
- ForumOffice excel 2003
- ForumDã sinstaller excel 2003
- Voir plus