[RÉSOLU] Renommer texte bouton sur un classeur entier

un internaute

XLDnaute Impliqué
Bonjour le forum
Me voilà de retour...depuis samedi!!!

1ère question:
Dans le fichier joint serait-il possible de modifier le texte d'un bouton dans tout le classeur => Masquer les lignes Vides par: Onglets Nouvelle Année?

2ème question:

J'ai une macro ci-dessous qui fonctionne bien mais il ne faut pas oublier de modifier l'année
Code:
Sub RenommerOngletsNouvelleAnnee()
    For Each Sh In Worksheets
        Sh.Name = Replace(Sh.Name, "2018", "2019")   'Ne pas oublier de modifier les Années
    Next
End Sub

Si on peut modifier le texte des boutons du classeur ça serait déjà beucoup.
Le reste c'est une fois l'an donc pas très fastidieux

Merci pour vos éventuels retour
Bien cordialement
 

Pièces jointes

  • ESSAI.xls
    267 KB · Affichages: 14

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum, un internaute

@un internaute
En reprenant la macro proposée par job75 dans ton autre fil...
VB:
Sub Renommer()
Dim w As Worksheet, o As Object
For Each w In Worksheets
      For Each o In w.DrawingObjects
         If InStr(1, o.Text, "Vides") > 0 Then o.Text = "toto"
Next o, w
End Sub
Je te laisse remplace "toto" par la chaine de caractère idoine pour renommer tes boutons.

Pour la seconde question, une macro possible
VB:
Sub RenommerOngletsNouvelleAnnee()
Dim AN
AN = InputBox("Année en cours: " & Year(Date) & Chr(13) & Chr(13) _
    & "Valeur par défaut= année en cours + 1", "Changement année", Year(Date) + 1)
    For Each Sh In Worksheets
        Sh.Name = Replace(Sh.Name, CStr(AN - 1), CStr(AN))
    Next
End Sub
 
Dernière édition:

un internaute

XLDnaute Impliqué
Bonjour Ce lien n'existe plus
SUPER pour les 2
Serait-il possible pour le changement de texte du bouton de le mettre sur 2 lignes comme dans le fichier joint (janvier) et si possible aussi en 2 couleurs
Exemple:
Onglets (rouge)
Nouvelle Année (bleu)

Ou inversement c'est moi qui verrait
Merci à toi
A+


 

Pièces jointes

  • ESSAI.xls
    249.5 KB · Affichages: 13

Staple1600

XLDnaute Barbatruc
Re,

Il suffit d'utiliser chr(10)
VB:
Sub Renommer()
Dim w As Worksheet, o As Object
For Each w In Worksheets
      For Each o In w.DrawingObjects
         If InStr(1, o.Text, "toto") > 0 Then o.Text = "titi" & Chr(10) & "tutu"
Next o, w
End Sub
je te laisse remplacer toto,titi et tutu par les chaines de caractères de ton choix
 

un internaute

XLDnaute Impliqué
Re-Ce lien n'existe plus
Tu peux stp en dire plus sur ton code (commentaires en vert ça m'aidera pour d'autres)
Et si je veux mettre par exemple Onglets (rouge)=> police 18
Nouvelle Année (bleu) => police 16
Fichier joint
Merci d'avance
Bien cordialement
 

Pièces jointes

  • ESSAI.xls
    246 KB · Affichages: 21

Staple1600

XLDnaute Barbatruc
Re

@un internaute
Pour tout ce qui est gribouillage, coloriage, voir avec ton enregisteur de macros ;)

Tes macros que j'ai précédemment modifies ne font que deux choses
1) Renommer certains boutons selon condition
2) Renommer les onglets en remplaçant ANNEE par ANNEE + 1 dans la chaine de caractère constituant leur nom.
 

un internaute

XLDnaute Impliqué
Re

@un internaute
Pour tout ce qui est gribouillage, coloriage, voir avec ton enregisteur de macros ;)

Tes macros que j'ai précédemment modifies ne font que deux choses
1) Renommer certains boutons selon condition
2) Renommer les onglets en remplaçant ANNEE par ANNEE + 1 dans la chaine de caractère constituant leur nom.

Bonjour Staple 1600
Je regarde pour les couleurs car hier journée chargée
Merci à toi
Bonne fête
Cordialement
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

@un internaute
Regardes et testes ce petit exemple
Cela devrait t'aider pour ton coloriage ;)
Pour tester insére une forme automatique sur une feuille vierge
Puis lance la macro ci-dessous
VB:
Sub Test_OK()
'testé sur une forme automatique (ici un rectangle)
'syntaxe testé sur un Excel 2003
'NB: la feuille de test ne contient rien d'autre
'qu'une seule forme automatique
Dim sh As Shape, X, Y&, Z&, Intitulé$
Set sh = ActiveSheet.Shapes(1)
'ici juste pour le test
sh.TextFrame.Characters.Text = "Onglets" & Chr(10) & "Nouvelle Année"
Intitulé = sh.TextFrame.Characters.Text
MsgBox Intitulé 'pour vérification
X = Split(sh.TextFrame.Characters.Text, Chr(10))
Y = Len(X(0)): Z = Len(X(1))
With sh.TextFrame
    .Characters(1, Y).Font.ColorIndex = 3
    .Characters(Y + 2, Z).Font.ColorIndex = 5
End With
End Sub
 

Discussions similaires