Bonjour,
J'ai un fichier avec un nombre X d'onglet.
Je souhaiterais que chaque onglet s'intitule comme sa cellule L12
Est ce que quelqu'un a une solution?
Merci d'avance
Bonjour,
J'ai un fichier avec un nombre X d'onglet.
Je souhaiterais que chaque onglet s'intitule comme sa cellule L12
Est ce que quelqu'un a une solution?
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 For each Onglet in sheets Onglet.name = Onglet.Range("L12")..Value Next Onglet
merci,
mais j'ai un message d'erreur
Erreur de Compilation:
Erreur de syntaxe
salut il y a un "." de trop à "..value"
il faut mettre ".value"
mais si il n'y a pas de valeur dans la cellule L12 il y aura une erreur....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 For Each Onglet In Sheets Onglet.Name = Onglet.Range("L12").Value Next Onglet
tu peux l'éviter avec un petit test comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 For Each onglet In Sheets If onglet.Range("L12") <> "" Then onglet.Name = onglet.Range("L12").Value Else MsgBox "La cellule L12 de l'onglet " & onglet.Name & " est vide" End If Next onglet
T'es un as,
SUPER
Merci
je voudrais ajouter a cette macro :
- mise en page de toutes les feuilles du classeur : ajuster sur une page
- copier toutes les feuilles dans fichier TEST MACRO
merci davance
Pour l'insérer dans le code qui a déjà été donné, il faut bien sûr remplacer Worksheet par Onglet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Worksheet.PageSetup.FitToPagesTall = 1 Worksheet.PageSetup.FitToPagesWide = 1
Mettre en dehors de la boucle :- copier toutes les feuilles dans fichier TEST MACRO
Code : Sélectionner tout - Visualiser dans une fenêtre à part ThisWorkbook.SaveCopyAs "TEST MACRO"
Dis toi que tu parle à une brèle de la VBA,
mais qui essaye....
j'ai donc mis :
Et ca marche pas....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Sub Misenpage() For Each ONGLET In Sheets ONGLET.Name = ONGLET.Range("L12").Value Next ONGLET ONGLET.PageSetup.FitToPagesTall = 1 ONGLET.PageSetup.FitToPagesWide = 1 End Sub
Bonjour, bonjour !
En fait il y a une erreur de casting dès la ligne n° … Ah zut !
conformément aux règles du forum ‼ (avec même une animation pour les pas doués …)
Comme le disait le philosophe Alain : "Chacun est aussi intelligent qu'il veut".
Sans cautionner une affirmation aussi extrême, je me contenterais de prétendre : "L'aide VBA est accessible à tous".
Je te conseille donc d'éviter de te contenter de recopier ce code mais d'essayer de le comprendre en allant te renseigner dans l'aide VBA au sujet des différents éléments qu'il contient.
Un autre philosophe géographiquement et historiquement plus éloigné, Confucius, a émis une maxime à laquelle je me réfère souvent : "Donne un poisson à un homme, tu le nourris pour la journée. Apprends-lui à pêcher et tu le nourris pour la vie".
Pour en revenir à des considération plus terre-à-terre, la "boucle" dont je parle concerne ce qui va de "For" à "Next". Il faut donc placer les deux nouvelles lignes entre ces deux lignes-là.
Telle qu'il est, ton code ne changera la mise en page que pour le dernier onglet (celui sur lequel pointe la variable "Onglet" une fois la boucle terminée.
Par contre, c'était le bon emplacement pour le SaveCopyAs qui, lui, concerne le classeur tout entier (il se réfère au Workbook) et non à chaque feuilles (Sheet ou Worksheet) individuellement.
Dernier détail : à ta place, je commencerai le code (juste après la ligne du Sub) par une déclaration :
Ca marche très bien sans pour une petite macro comme celle-ci, mais si tu comptes progresser en VBA, autant prendre de bonnes habitudes et déclarer tes variables avec leur type.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dim ONGLET as Sheet
Sheet
Worksheet !
Sinon risque d'erreur de casting …
Partager