OVH Cloud OVH Cloud

macro - modif affichage onglets

11 réponses
Avatar
j-pascal
Bonjour à tous,

J'ai un classeur avec 14 onglets, dont les 12 premiers sont :

jan 06
fév 06
mar 06
avr 06
etc.

Est-il possible de faire une macro, qui à partir d'une nouvelle date dans
une cellule (de l'onglet n° 13 par ex.), modifierait tous les onglets comme
:

jan 07
fév 07
mars 07
etc.

?

Question 2 : comment fait-on pour avoir une liste de tous les noms d'onglets
? Dans l'onglet 13, puis-je avoir une liste qui m'affiche :
Feuille 1 : jan 06
Feuille 2 : fév 06
Feuille 3 : mar 06
etc.

?

Un grand merci d'avance à ceux qui veulent bien m'aider.

JP

1 réponse

1 2
Avatar
Jacky
Re.. Avec retard
Je ne comprends pas la forme :
[a1] = "Liste des onglets de ce classeur"


[a1]= l'équivalant de Range("a1")
Dans ce cas, l'écriture de "Liste des onglets de ce classeur" dans la
cellule A1, puisque celle-ci est effacer par [a:a] = "" à chaque fois que la
liste des feuilles est demandé.

x = 2
x=la ligne d'écriture dans la boucle, incrémenté par x=x+1

1er écriture x=2 nom de la première feuille en ligne 2 par Range("a" & x)
= sh.Name
puis x=x+1
2ème écriture en ligne x , donc 3
etc...
----------
mes mois s'affichent sous différentes formes
Pour éviter ce problème, on peut forcé le format (texte) de la colonne A

par:
[a:a].NumberFormat = "@"
'----------
Ce qui modifie le code proposé de cette façon:
'---------
Sub jj2()
[a:a] = "" '****efface colonne A
[a:a].NumberFormat = "@" '****Format colonne A en texte
Dim sh As Worksheet '****declare la variable sh comme feuille
[a1] = "Liste des onglets de ce classeur" '****ecrit dans la cellule A1
x = 2
For Each sh In ThisWorkbook.Sheets '****Début de la boucle
If sh.Name <> ActiveSheet.Name Then '**** évite l'inscription de la
feuille en cours
Range("a" & x) = sh.Name '****Ecrit le nom de la feuille dans la cellule
Ax
x = x + 1 '****Incrément la ligne d'écriture
End If
Next
End Sub
'----------
Salutations
JJ

"j-pascal" a écrit dans le message de
news:
Bonsoir Jacky et merci pour ta réponse.

Ca marche (plutôt) très bien !
Je ne comprends pas la forme :

[a1] = "Liste des onglets de ce classeur"
x = 2

Est-ce cet entête qui conditionne la fait que le résultat s'affiche dans
la

feuille qui comprend ce titre ? J'ai exécuté la macro une première fois
sans

ce titre ; il s'est inscrit dans la feuille active, mais pour autant le
contenu des différentes feuilles ne s'est pas affiché en dessous ! Ma
question est probablement stupide, désolé !

Lorsque je crée une nouvelle feuille avec ce titre, tout va bien, sauf que
mes mois s'affichent sous différentes formes : janv 06, août 06, ou encore
1/11/06. Ca correspond à mon affichage initial "août 06" n'existe pas au
format excel donc il ne le convertit pas en 1/08/06 ce qui me donne soit
du

format texte ou du format date... Le fait de changer le format de cette
colonne ne change évidemment rien ! Puis-je conserver le format de mes
onglets ?

A bientôt peut-être ?

JP


Bonjour,
Regarde ici, si cela convient
http://cjoint.com/?fgjCQdxwB7

'--------
Sub jj()
Anne_en_cours = InputBox("Entrez les deux derniers chiffres des
fichiers en cours:", "Changement de nom des feuilles")
If Anne_en_cours = "" Then Exit Sub
an = InputBox("Entrez l'année souhaitée:", "Changement de nom des
feuilles") If an = "" Then Exit Sub
Dim sh As Worksheet
For Each sh In ThisWorkbook.Sheets
If Right(sh.Name, 2) = Anne_en_cours Then
sh.Name = Mid(sh.Name, 1, Len(sh.Name) - 2) & an
End If
Next
End Sub
Sub jj2()
[a:a] = ""
Dim sh As Worksheet
[a1] = "Liste des onglets de ce classeur"
x = 2
For Each sh In ThisWorkbook.Sheets
If sh.Name <> ActiveSheet.Name Then
Range("a" & x) = sh.Name
x = x + 1
End If
Next
End Sub
'----------
Salutations
JJ

"j-pascal" a écrit dans le message de
news:
Bonjour à tous,

J'ai un classeur avec 14 onglets, dont les 12 premiers sont :

jan 06
fév 06
mar 06
avr 06
etc.

Est-il possible de faire une macro, qui à partir d'une nouvelle date
dans une cellule (de l'onglet n° 13 par ex.), modifierait tous les
onglets comme



jan 07
fév 07
mars 07
etc.

?

Question 2 : comment fait-on pour avoir une liste de tous les noms
d'onglets ? Dans l'onglet 13, puis-je avoir une liste qui m'affiche :
Feuille 1 : jan 06
Feuille 2 : fév 06
Feuille 3 : mar 06
etc.

?

Un grand merci d'avance à ceux qui veulent bien m'aider.

JP








1 2