Utilisation de * dans du VBA

obelix77

XLDnaute Junior
Bonjour,
J'utilise la macro ci-dessous (écrite par , Ce lien n'existe plus, merci à lui) :

Sub Bouton1_Cliquer()
Dim Nom$, L&
Nom = ActiveSheet.Shapes(Application.Caller).Name
Application.DisplayAlerts = False
On Error Resume Next
Worksheets(Nom).Delete
On Error GoTo 0
ActiveSheet.Copy Before:=Sheets(1): ActiveSheet.Name = Nom
With Sheets(Nom)
.Shapes(Nom).Delete
End With

ActiveSheet.ListObjects("pour_tcd").Name = "avec_heure_sup"
End Sub

Cette macro duplique une feuille qui contient une plage nommée (pour_tcd dans l'exemple).
Mon problème : quand le feuille se duplique, la plage nommée devient "pour_tcd" suivi d'un chiffre aléatoire.
Ce qui fait que la ligne qui permet de renommer la plage (en rouge "avec_heure_sup" dans l'exemple) ne fonctionne pas.

J'ai tenté "pour_tcd*" sans succès bien sur.
J'ai aussi essayé tout ce que j'ai pu trouvé avec If , en voulant tester les 8 premiers caractères (ne pas tenir compte du chiffre qui se rajoute), mais sans succès non plus.

Je joins un fichier dans lequel la duplication fonctionne mais le renommage de la plage plante.

Si quelqu'un pouvait me donner un coup de main, ça serait le top.

Merci par avance et bon dimanche
 

Staple1600

XLDnaute Barbatruc
Re

Oui mais le problème pointé est toujours là...
Re
Voici ce fait actuellement la macro
J'ai une feuille A avec le Bouton 1 -> clic
J'obtiens une copie de A avec le Bouton 1
Je modifie la copie de A et je clique sur le Bouton 1 de la copie
J'obtiens une copie de la feuille A qui écrase les modifs de la copie.
Ce qu'il faudrait avoir
Une feuille A+Bouton1->clic
-> Copie de A +Bouton2->clic
-> Copie de Copie de A+Bouton3-clic
etc...
 

Staple1600

XLDnaute Barbatruc
Re

C'est pourtant pas ce que tu disais au départ...
Il s'agit bien de dupliquer des onglets existants
Dans le nouvel onglet, une nouvelle macro qui duplique l'onglet existant avec des modifs
Dans ce cas, quel est le bénéfice de la macro?
Puisque chaque clic sur le bouton écrase les données précédentes

Autant faire clic-droit sur l'onglet-> Copier-> F5->ALT+C->ALT+J->ENTER->SUPPR
 

Staple1600

XLDnaute Barbatruc
Re

@obelix77
Et quitte à mettre des endives ;), autant les utiliser
VB:
Sub Bouton1_Cliquer()
Dim Nom$, L&
Nom = ActiveSheet.Shapes(Application.Caller).Name
Application.DisplayAlerts = False
On Error Resume Next
Worksheets(Nom).Delete
On Error GoTo 0
ActiveSheet.Copy Before:=Sheets(1): ActiveSheet.Name = Nom
With Sheets(Nom)
.Shapes(Nom).Delete: .ListObjects(1).Name = "AvecHeureSup"
End With
End Sub
 

obelix77

XLDnaute Junior
J'utilise la macro de 2 manières : avec effacement des données pour certaines colonnes et sans effacement de données pour d'autres.
Et je dois garder une trace de l'onglet d'origine.
Bien sur que manuellement tout est possible mais cette opération est à faire une fois par jour par des utilisateurs ne connaissant pas du tout Excel.
D'ou la mise en place de macros
 

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 097
Membres
103 116
dernier inscrit
kutobi87