Modifier macro suivant le nom de l'onglet

GBR

XLDnaute Junior
Bonjour à tous,

Voici un bout de ma macro


Sub MiseEnPage()
'
' Mise en page Macro
' Macro enregistrée le 08/03/2010
'
Sheets("sem18").Select
ActiveWindow.SmallScroll Down:=-129
Columns("A:A").Select
Selection.EntireColumn.Hidden = True
Columns("R:V").Select
Range("R2").Activate
Selection.EntireColumn.Hidden = False
Range("AB12:AD12").Select
ActiveWindow.SmallScroll Down:=-21
Range("Y14:AA14,AE14:AG14,V20:AJ20").Select
Range("V20").Activate

End Sub ()

Comment pouvoir choisir et integrer automatiquement dans la macro ....Sheets("sem18").Select.... le nom de l'onglet ex sem18 ou sem 19 ou sem 20 etc..sans être obligé de modifier lma macro chaques semaines

Merci pour votre aide
 

CBernardT

XLDnaute Barbatruc
Re : Modifier macro suivant le nom de l'onglet

Bonjour GBR,

Sous réserve d'avoir bien compris ta question, essaye cette syntaxe :

Sub MiseEnPage()
Dim NomSem As String

NomSem = ActiveSheet.Name
Sheets(NomSem).Select

End Sub
 

GBR

XLDnaute Junior
Re : Modifier macro suivant le nom de l'onglet

Merci Bernard pour ton aide,

Mais je souhaite grace à un userform ou autre inclure dans la macro le nom de l'onglet que je souhaite mettre en forme (nom onglets: sem18 ou sem19 ou autre)
 

Efgé

XLDnaute Barbatruc
Re : Modifier macro suivant le nom de l'onglet

Bonjour GBR, CBernardT,

Une proposition, mais attention si le nom saisi n'existe pas, la macro telle qu'elle est, plantera :
Code:
Sub MiseEnPage()
Dim Var As String
Var = InputBox("Saisissez le nom de la feuille")
With Sheets(Var)
    .Columns("A:A").EntireColumn.Hidden = True
    .Columns("R:V").EntireColumn.Hidden = False
End With
End Sub
Cordialement
 

Efgé

XLDnaute Barbatruc
Re : Modifier macro suivant le nom de l'onglet

Re
Une version (commentée)avec validation de la présence de la feuille:
Code:
Sub MiseEnPage()
[COLOR=seagreen]'Déclaration des variables:[/COLOR]
[COLOR=seagreen]'Var pour récupérer le nom saisi[/COLOR]
Dim Var As String
[COLOR=seagreen]'f pour boucler sur toute les feuilles[/COLOR]
Dim f As Worksheet
[COLOR=seagreen]'x pour validation du nom[/COLOR]
Dim x As Integer
[COLOR=seagreen]'Point de retour en cas de nom de feuille non valide[/COLOR]
Deb:
[COLOR=seagreen]'Récupération du nom de la feuille à traiter par une boite de dialogue[/COLOR]
Var = InputBox("Saisissez le nom de la feuille")
[COLOR=seagreen]'Si le nom n'est pas renseigné sortie de la macro[/COLOR]
[COLOR=red][B]If Var = "" Then Exit Sub[/B][/COLOR]
[COLOR=seagreen]'Boucle sur toute les feuilles du classeur[/COLOR]
For Each f In ThisWorkbook.Worksheets
    [COLOR=seagreen]'Si une feuille a bien le nom saisi[/COLOR]
    If f.Name = Var Then
        [COLOR=seagreen]'On valide x[/COLOR]
        x = 1
        [COLOR=seagreen]'On sort de la boucle[/COLOR]
        Exit For
   [COLOR=seagreen]'Fin de la condition[/COLOR]
    End If
[COLOR=seagreen]'Prochaine feuille du classeur[/COLOR]
Next f
[COLOR=seagreen]'Si on a validé x[/COLOR]
If x = 1 Then
    [COLOR=seagreen]'On utilise la feuille saisie[/COLOR]
    With Sheets(Var)
        [COLOR=seagreen]'On masque la colonne A[/COLOR]
        .Columns("A:A").EntireColumn.Hidden = True
       [COLOR=seagreen]'On Affiche les colonne R a V[/COLOR]
        .Columns("R:V").EntireColumn.Hidden = False
    [COLOR=seagreen]'On arrete l'utilisation de la feuille saisie[/COLOR]
    End With
[COLOR=seagreen]'Si non (si x n'est pas validé)[/COLOR]
Else
   [COLOR=seagreen]'Boite d'avertissement[/COLOR]
    MsgBox "Vous devez saisir un nom de feuille valide"
  [COLOR=seagreen]  'Retour a notre point de départ[/COLOR]
    GoTo Deb
[COLOR=seagreen]'Fin de la condition[/COLOR]
End If
End Sub
Il y a certainement mieux mais "ça tourne"
Cordialement

Edit en rouge
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Modifier macro suivant le nom de l'onglet

Bonjour le fil, bonjour le forum,

Basé sur l'idée d'Efgé avec une gestion d'erreur à la place de la boucle sur tous les onglets :
Code:
Sub MiseEnPage()
'Var pour récupérer le nom saisi
Dim Var As String
 
'Point de retour en cas de nom de feuille non valide
Deb:
 
'Récupération du nom de la feuille à traiter par une boite de dialogue
Var = InputBox("Saisissez le nom de la feuille")
If Var = "" Then Exit Sub 'si la boîte n'est pas renseignée, sort de la procédure
On Error Resume Next 'en cas d'erreur passe à la ligne suivante
With Sheets(Var) 'provoque une erreur si l'onglet n'existe pas
If Err <> 0 Then GoTo suite 'si il y a une erreur va à l'étiquette "suite"
    'On masque la colonne A
    .Columns("A:A").EntireColumn.Hidden = True
   'On Affiche les colonne R a V
    .Columns("R:V").EntireColumn.Hidden = False
'On arrete l'utilisation de la feuille saisie
End With
Exit Sub 'sort de la procédure
 
suite: 'étiquette
    'Boite d'avertissement
    MsgBox "Vous devez saisir un nom de feuille valide"
    'Retour a notre point de départ
    GoTo Deb
End Sub
 

Efgé

XLDnaute Barbatruc
Re : Modifier macro suivant le nom de l'onglet

Re à tous, Bonsoir Robert,
Merci Robert pour votre exemple nettement plus présentable et surtout adaptable que ma boucle . (En plus j'avais oublié If Var = "" Then Exit Sub :eek:)
Cordialement
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Modifier macro suivant le nom de l'onglet

Bonsoir le fil, bonsoir le forum,

Bravo Robert, bravo Robert... Tout le mérite revient quand même à Efgé dont la base était excellente. Après, il est toujours facile de proposer mieux ou tout simplement différent.

Efgé, si cela vous est possible, je préfèrerais que vous me tutoyiez. Mais si, comme le grand Roger qui sévit ici, cela vous semble incongru, je prendrais soin de vous vouvoyer également.
 

Discussions similaires

Statistiques des forums

Discussions
312 510
Messages
2 089 147
Membres
104 050
dernier inscrit
Pepito93100