VBA Excel. Utilisation du codename.
Résolu/Fermé
wire less
Messages postés
210
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
29 août 2018
-
8 sept. 2015 à 11:24
wire less Messages postés 210 Date d'inscription lundi 5 octobre 2009 Statut Membre Dernière intervention 29 août 2018 - 15 sept. 2015 à 11:13
wire less Messages postés 210 Date d'inscription lundi 5 octobre 2009 Statut Membre Dernière intervention 29 août 2018 - 15 sept. 2015 à 11:13
A voir également:
- Codename vba
- Mkdir vba ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba dépassement de capacité ✓ - Forum Excel
- Vba range avec variable ✓ - Forum VB / VBA
9 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
8 sept. 2015 à 11:40
8 sept. 2015 à 11:40
bonjour
activesheet.name="azerty"
activesheet.name="azerty"
f894009
Messages postés
17206
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 novembre 2024
1 711
8 sept. 2015 à 13:19
8 sept. 2015 à 13:19
Bonjour,
trouve sur
https://www.developpez.net/forums/d859285/logiciels/microsoft-office/excel/macros-vba-excel/modifier-codename/
trouve sur
https://www.developpez.net/forums/d859285/logiciels/microsoft-office/excel/macros-vba-excel/modifier-codename/
Sub test() i = 0 For Each ws In ActiveWorkbook.Worksheets i = i + 1 On Error Resume Next ws.Parent.VBProject.VBComponents(ws.CodeName).Properties("_CodeName") = "XXX" & i On Error GoTo 0 Next ws End Sub
wire less
Messages postés
210
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
29 août 2018
5
8 sept. 2015 à 14:10
8 sept. 2015 à 14:10
Erreur d'exécution '1004' :
L'accès par programme au proget Visual Basic n'est pas fiable
:-/ Apparemment on ne peut pas modifier le codename par ce chemin :'-(
ActiveSheet.Parent.VBComponents(ActiveSheet.CodeName).Properties("_CodeName") = "Toto" Arghhhh , ça non plus ça ne marche pas :'-(
L'accès par programme au proget Visual Basic n'est pas fiable
:-/ Apparemment on ne peut pas modifier le codename par ce chemin :'-(
ActiveSheet.Parent.VBComponents(ActiveSheet.CodeName).Properties("_CodeName") = "Toto" Arghhhh , ça non plus ça ne marche pas :'-(
f894009
Messages postés
17206
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 novembre 2024
1 711
Modifié par f894009 le 8/09/2015 à 14:31
Modifié par f894009 le 8/09/2015 à 14:31
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
8 sept. 2015 à 14:31
8 sept. 2015 à 14:31
Bonjour,
Voici une solution
2 commandbutton:
voici le code:
cliquer sur le bouton 1 et fermer l'UserForm
Ensuite ouvrir et cliquer sur le bouton 2
Si on le fait en même temps ça debug!
Voici une solution
2 commandbutton:
voici le code:
Option Explicit Private Sub CommandButton1_Click() Application.DisplayAlerts = False Feuil2.Delete Application.DisplayAlerts = True Sheets.Add After:=Feuil1 ActiveSheet.Name = "Feuil2" End Sub Sub RenommerCodeName() Dim Ws As Worksheet 'Spécifie la 1ere feuille dans le classeur contenant cette macro. Set Ws = ThisWorkbook.Sheets(2) 'Attention: le nouveau nom ne doit pas contenir d'espace. ThisWorkbook.VBProject.VBComponents(Ws.CodeName).Name = "Feuil2" End Sub Private Sub CommandButton2_Click() RenommerCodeName End Sub
cliquer sur le bouton 1 et fermer l'UserForm
Ensuite ouvrir et cliquer sur le bouton 2
Si on le fait en même temps ça debug!
f894009
Messages postés
17206
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 novembre 2024
1 711
8 sept. 2015 à 14:43
8 sept. 2015 à 14:43
Bonjour,
Il a oublie une partie de la ligne d'instruction
ActiveSheet.Parent.VBComponents(ActiveSheet.CodeName).Properties("_CodeName") = "Toto"
ActiveSheet.Parent.VBProject.VBComponents(ActiveSheet.CodeName).Properties("_CodeName") = "Toto"
Il a oublie une partie de la ligne d'instruction
ActiveSheet.Parent.VBComponents(ActiveSheet.CodeName).Properties("_CodeName") = "Toto"
ActiveSheet.Parent.VBProject.VBComponents(ActiveSheet.CodeName).Properties("_CodeName") = "Toto"
wire less
Messages postés
210
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
29 août 2018
5
Modifié par wire less le 8/09/2015 à 15:10
Modifié par wire less le 8/09/2015 à 15:10
Sub lolo() Application.DisplayAlerts = False Feuil4.Delete Application.DisplayAlerts = True Sheets.Add After:=Feuil1 ActiveSheet.Name = "Feuil2" ActiveSheet.Parent.VBProject.VBComponents(ActiveSheet.CodeName).Properties("_CodeName") = "Feuil2" End Sub
Erreur d'exécution '1004' : l'accès par programme au projet visual basic n'est pas fiable
Arghhhh ... Bug au niveau de la ligne ActiveSheet.Parent.VBProject.VBComponents ...
C'est un problème de version de Excel ?
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
>
wire less
Messages postés
210
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
29 août 2018
8 sept. 2015 à 15:17
8 sept. 2015 à 15:17
As-tu lu ma réponse!
wire less
Messages postés
210
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
29 août 2018
5
8 sept. 2015 à 15:24
8 sept. 2015 à 15:24
J'avoue que je m'y perd un peu ...
Donc si on le fait en même temps ... ça beug :-/
Ok.
Donc si on a besoin de le faire en même temps ... c'est mort ... c'est bien ça ???
Donc si on le fait en même temps ... ça beug :-/
Ok.
Donc si on a besoin de le faire en même temps ... c'est mort ... c'est bien ça ???
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
>
wire less
Messages postés
210
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
29 août 2018
8 sept. 2015 à 16:02
8 sept. 2015 à 16:02
Mais d'un coté supprimé une Feuil2 pour en remettre une du même nom, je m'interroge sur l'utilité d'une telle manoeuvre!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
f894009
Messages postés
17206
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 novembre 2024
1 711
8 sept. 2015 à 15:26
8 sept. 2015 à 15:26
wire less
Messages postés
210
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
29 août 2018
5
8 sept. 2015 à 16:01
8 sept. 2015 à 16:01
https://www.youtube.com/watch?v=CWCycC0P5AM&feature=youtu.be&t=57s
Merci F894009 !!!!
ça marche :-D !!
MERRRRCCCCIIIIIIIIIII :-DDDDD
Merci F894009 !!!!
ça marche :-D !!
MERRRRCCCCIIIIIIIIIII :-DDDDD
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
8 sept. 2015 à 15:57
8 sept. 2015 à 15:57
Chez moi, c'est comme cela, mais comme je l'ai expliqué cela bug si on fait les 2 opérations en même temps.
Certainement qu'Excel a besoin de reprendre la main
Certainement qu'Excel a besoin de reprendre la main
f894009
Messages postés
17206
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 novembre 2024
1 711
Modifié par f894009 le 8/09/2015 à 16:43
Modifié par f894009 le 8/09/2015 à 16:43
Bonjour,
Oui, surement, car Excel a souvent des reactions surprenantes, mais dans le cas present la feuille supprimee n'est pas celle qui est ajoutee suivant
Au temps pour moi, c'est la meme
Oui, surement, car Excel a souvent des reactions surprenantes, mais dans le cas present la feuille supprimee n'est pas celle qui est ajoutee suivant
Au temps pour moi, c'est la meme
wire less
Messages postés
210
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
29 août 2018
5
8 sept. 2015 à 16:49
8 sept. 2015 à 16:49
Oupsss ... j'ai crié victoire trop tôt !!
Sur la feuille que j'essais de supprimer ... il y a 4 graphiques.
J'efface ma page...
Je supprime ma page ...
je recrée ma page ...
Je renomme ma page ... (ActiveSheet.Parent.VBProject.VBComponents(ActiveSheet.CodeName).Properties("_CodeName") = "Feuil2")
Et la : J'ai le message : "impossible d'entrer en mode arrêt maintenant"
Ma macro se ré-exécute depuis je ne sais ou ... et tout les graph que j'avais supprimé se sont recréé ... et ma page n'est pas renommé :-C
Bon ... j'y reviendrais demain après midi . Là faut que je boucle autre chose :'-c
Merci pour tout les gars !!
Sur la feuille que j'essais de supprimer ... il y a 4 graphiques.
J'efface ma page...
Je supprime ma page ...
je recrée ma page ...
Je renomme ma page ... (ActiveSheet.Parent.VBProject.VBComponents(ActiveSheet.CodeName).Properties("_CodeName") = "Feuil2")
Et la : J'ai le message : "impossible d'entrer en mode arrêt maintenant"
Ma macro se ré-exécute depuis je ne sais ou ... et tout les graph que j'avais supprimé se sont recréé ... et ma page n'est pas renommé :-C
Bon ... j'y reviendrais demain après midi . Là faut que je boucle autre chose :'-c
Merci pour tout les gars !!
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
8 sept. 2015 à 17:13
8 sept. 2015 à 17:13
A lire, il y a une référence à cocher:
https://silkyroad.developpez.com/VBA/FeuilleDeCalcul/#LII-B-6
https://silkyroad.developpez.com/VBA/FeuilleDeCalcul/#LII-B-6
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
8 sept. 2015 à 17:46
8 sept. 2015 à 17:46
wire less
Messages postés
210
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
29 août 2018
5
14 sept. 2015 à 10:01
14 sept. 2015 à 10:01
Arghhh ...
Re-bonjour ...
C'est compliqué.
En faite j'ai des conflits avec mes noms de graphiques.
Donc, premières infos :
Quand on supprime le contenu d'une page avec
( ce qui correspond à un "Ctrl+A" + "Suppr" )
ET que l'on fait aussi :
Ben !! On ne supprime pas les differents objets Graph présent sur la page !!
Du coup, lorsque la page est recréer, les objets graphes reprenne net leur place :-/
Ensuite, si je veux supprimer mes différents graphiques et que j'utilise l'éditeur de code d'excel pour les identifier,
L'éditeur de code me donne indifféremment comme nom de graphique :
Y aurait-il une façon différente de nommer les graphique afin de pouvoir les identifier individuellement ... (un peu comme les "name" et "codename" des feuilles excel )
???
Merci
Re-bonjour ...
C'est compliqué.
En faite j'ai des conflits avec mes noms de graphiques.
Donc, premières infos :
Quand on supprime le contenu d'une page avec
Feuil2.Select Cells.Select Selection.Delete Shift:=xlUp
( ce qui correspond à un "Ctrl+A" + "Suppr" )
ET que l'on fait aussi :
Feuil2.Delete
Ben !! On ne supprime pas les differents objets Graph présent sur la page !!
Du coup, lorsque la page est recréer, les objets graphes reprenne net leur place :-/
Ensuite, si je veux supprimer mes différents graphiques et que j'utilise l'éditeur de code d'excel pour les identifier,
L'éditeur de code me donne indifféremment comme nom de graphique :
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveSheet.ChartObjects("Graphique 1").Activate
Y aurait-il une façon différente de nommer les graphique afin de pouvoir les identifier individuellement ... (un peu comme les "name" et "codename" des feuilles excel )
???
Merci
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
14 sept. 2015 à 10:43
14 sept. 2015 à 10:43
Je me suis servi de l'enregistreur de macro et j'ai obtenu ce code qui fonctionne très bien:
Sub Macro1() Sheets("Feuil2").Select ActiveWindow.SelectedSheets.Delete Sheets.Add After:=Sheets(Sheets.Count) End Sub
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
14 sept. 2015 à 10:47
14 sept. 2015 à 10:47
Y aurait-il une façon différente de nommer les graphique afin de pouvoir les identifier individuellement ... (un peu comme les "name" et "codename" des feuilles excel )
Quand je lit cela, j'ai l'impression que tu n'as pas consulté le site que je t'ai indiquer!!!!!!!!
https://silkyroad.developpez.com/VBA/FeuilleDeCalcul/#LII-A-4
Quand je lit cela, j'ai l'impression que tu n'as pas consulté le site que je t'ai indiquer!!!!!!!!
https://silkyroad.developpez.com/VBA/FeuilleDeCalcul/#LII-A-4
wire less
Messages postés
210
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
29 août 2018
5
14 sept. 2015 à 12:10
14 sept. 2015 à 12:10
Ok !! Merci !!
J'ai trouvé tout ce dont j'avais besoin pour avancer :-)
Dsl pour d'avoir survoler ton lien !!
Il faut interroger la propriété .index de mon ActiveSheet.ChartObjects !!
Oufff ... c'est compliqué !
Je ferais un essai c't'aprem et je clôturerais le sujet !
Merci vraiment à tous !!
J'ai trouvé tout ce dont j'avais besoin pour avancer :-)
Dsl pour d'avoir survoler ton lien !!
Il faut interroger la propriété .index de mon ActiveSheet.ChartObjects !!
Oufff ... c'est compliqué !
Je ferais un essai c't'aprem et je clôturerais le sujet !
Merci vraiment à tous !!
wire less
Messages postés
210
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
29 août 2018
5
8 sept. 2015 à 11:59
8 sept. 2015 à 11:59
Erreur d'exécution '1004'
Impossible de renommer une feuille comme une autre feuille, une bibliothèque d'objets référencée ou un classeur référencé par Visual Basic.
Je précise quand même que moi, je souhaite modifier le "codename" et non pas le "name".
Name renvoie au nom de "l'onglet visible" classique de Excel, le codename est le nom de la feuille indépendamment du nom de l'onglet
(Dans propriétée Feuil, il y a le (name) et le name :-/ désolé pour ceux qui ne comprendraient pas ... en gros, (name) c'est le nom, et name c'est le caption ... :-/ )
Impossible de renommer une feuille comme une autre feuille, une bibliothèque d'objets référencée ou un classeur référencé par Visual Basic.
Application.DisplayAlerts = False Feuil2.Delete Application.DisplayAlerts = True Sheets.Add After:=Feuil1 ActiveSheet.Name = "Feuil2"
Je précise quand même que moi, je souhaite modifier le "codename" et non pas le "name".
Name renvoie au nom de "l'onglet visible" classique de Excel, le codename est le nom de la feuille indépendamment du nom de l'onglet
(Dans propriétée Feuil, il y a le (name) et le name :-/ désolé pour ceux qui ne comprendraient pas ... en gros, (name) c'est le nom, et name c'est le caption ... :-/ )
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
Modifié par PlacageGranby le 14/09/2015 à 14:20
Modifié par PlacageGranby le 14/09/2015 à 14:20
Bonjour,
Worksheet.CodeName, propriété
Renvoie le nom de code pour l'objet. En lecture seule chaîne.
https://docs.microsoft.com/fr-fr/office/vba/api/excel.worksheet.codename?redirectedfrom=MSDN
Donc, impossible de le modifier directement.
Il semble y avoir des moyens pour le modifier en passant par VBcomponent mais je crois qu'on t'a déjà donné les info dans les msg précédent.
Si tu y tiens mordicus, alors regarder les exemple de changement via VBComponent et cherche d'autre exemple de ca sur google, tu finiras peut-être par trouver un exemple qui fonctionne avec ton code.
Worksheet.CodeName, propriété
Renvoie le nom de code pour l'objet. En lecture seule chaîne.
https://docs.microsoft.com/fr-fr/office/vba/api/excel.worksheet.codename?redirectedfrom=MSDN
Donc, impossible de le modifier directement.
Il semble y avoir des moyens pour le modifier en passant par VBcomponent mais je crois qu'on t'a déjà donné les info dans les msg précédent.
Si tu y tiens mordicus, alors regarder les exemple de changement via VBComponent et cherche d'autre exemple de ca sur google, tu finiras peut-être par trouver un exemple qui fonctionne avec ton code.
wire less
Messages postés
210
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
29 août 2018
5
15 sept. 2015 à 11:13
15 sept. 2015 à 11:13
C'est bon !!
Tout marche impeccablement.
Pour renommer un codename il faut faire :
ActiveSheet.Parent.VBProject.VBComponents(ActiveSheet.CodeName).Properties("_CodeName") = "Feuil2"
:-/ ... oui je sais, c'est compliqué !!
Pour cela, il faut aussi paramétrer ces droits en écriture de macro (voir la réponse de f894009 (paramètre des macro -> accès approuvé au modèle d'objet du projet VBA ) )
Moi, il me resté des conflits avec des objets graph "fantôme" qui étaient invisible.
J'ai résolu le problème avec un
Merci à tout le monde pour votre aide.
Je clôture le sujet :-D !!
Tout marche impeccablement.
Pour renommer un codename il faut faire :
ActiveSheet.Parent.VBProject.VBComponents(ActiveSheet.CodeName).Properties("_CodeName") = "Feuil2"
:-/ ... oui je sais, c'est compliqué !!
Pour cela, il faut aussi paramétrer ces droits en écriture de macro (voir la réponse de f894009 (paramètre des macro -> accès approuvé au modèle d'objet du projet VBA ) )
Moi, il me resté des conflits avec des objets graph "fantôme" qui étaient invisible.
J'ai résolu le problème avec un
For Each Ch In Feuil2.ChartObjects Ch.Delete Next Ch
Merci à tout le monde pour votre aide.
Je clôture le sujet :-D !!