IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Commande VBA pour Lancer le Menu "Renommer/Feuille" (Excel)


Sujet :

Macros et VBA Excel

  1. #21
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 57
    Par défaut
    Re bbil,

    F1 je connais ......

    de plus voilà ce que me dit F1 quand je suis tes conseils .... :



    En fait je vais souvent dans l'explorateur d'objets..

    Mais pour commandBar, c.Enabled, c.OnAction, c.Visible et autre, trop peu de choses

    C'est donc pour cette raison que je demande.
    J'ai pas mal cherché... peut être mal mais je l'ai fait ..

    et pas trouvé de choses précises...
    c'est la raison pourquoi je réitère..

    Enfin. ta soluc avec InputBox, ce n'active pas le menu, c'est un paliatif..

    Pour le Renommage.....
    Quand On fait sur Une Feuille "Clic droit/Renommer" :
    On obtient Ceci (Ecriture Blanche su Fond noir)

    j'aurais souhaité connaître la commande qui permette d'aboutir à avoir un Onglet de Feuille ainsi sélectionné :


    Cela redonne la main à l'utilisateur afin de lui proposer de renommer en mode "manuel"

    Il ne devrait pas y avoir besoin de InputBox ou autre chose....puisque le Menu de Excel Existe, il doit bien être lançable via VBA...

    Comprends tu ce que je veux dire et ce que je voudrais faire ?

    @mercatog,

    J'ai recopié ton code dans "Thisworkbook" comme tu as indiqué, et ai placé une simulation avec un bouton sur une feuille qui constitue un menu.

    cette macro démasque un modèle, la copie et la renumérote, la remasque et copie des valeurs de cellule entre le menu et la nouvelle feuille créée...

    pb au moment du démasquage ....
    blocage du code....
    je te joins le fichier...

    http://cjoint.com/?0BmvwIxg73Y

  2. #22
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Le code proposé précédemment était purement pédagogique.

    Pour ton fichier, il te faut:

    1. Dans un module standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
    Public Const MdP As String = "toto"
     
    Sub Proteger()
     
    ThisWorkbook.Protect Password:=MdP, Structure:=True
    End Sub
     
    Sub Deproteger()
     
    ThisWorkbook.Unprotect Password:=MdP
    End Sub
    2. Dans le module ThisWorkbook
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Option Explicit
     
    Private Sub Workbook_Open()
     
    Feuil1.Activate
    End Sub
     
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
     
    If Sh.Name = "Mon_Menu" Then
        Proteger
    Else
        Deproteger
    End If
    End Sub
    3. Dans le module de ta feuille Mon_Menu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub MonBouton_Click()
    Dim Menu As String, Modele_Utilise As String, Nouveau_Nom As String
     
    Application.ScreenUpdating = False
    Menu = "Mon_Menu"
    Modele_Utilise = "Modele1"
     
    Deproteger                                       'Deprotection
    With Worksheets(Modele_Utilise)
        .Visible = True
        .Copy After:=Worksheets(Worksheets.Count)
        .Visible = False
    End With
    Nouveau_Nom = Modele_Utilise & " " & "(" & Worksheets.Count + 1 & ")"
    ActiveSheet.Name = Nouveau_Nom
    Worksheets(Nouveau_Nom).Range("A3:I3").Value = Feuil1.Range("A3:I3").Value
    End Sub
    PS: Attention au niveau du nom donnée à la nouvelle feuille

  3. #23
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 57
    Par défaut
    Re mercatog,

    Je viens de tester, cela fonctionne Ok.

    On Protège/Déprotège Alternativement dans le Code VBA quand on en a besoin...

    Cela permet de Masquer/Démasquer, créer et copier des Feuilles.

    Remarque 1 :
    Si il n'y a qu'une Feuille (Celle qui se nomme "Mon_Menu")
    => On ne peut pas insérer de nouvelle Feuille (A moins de faire un Bouton..)

    Tu es d'accord sur ce point ?
    Ou y a t-il un autre moyen ?

    Remarque 2 :
    On ne peut pas faire de copie de ce menu si besoin...
    Ou y a t-il un autre moyen ?

    Et enfin, tu dis :
    PS: Attention au niveau du nom donnée à la nouvelle feuille
    Que veux tu dire par là ?

    Merci encore de ton aide.

  4. #24
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Et enfin, tu dis :
    Citation:
    PS: Attention au niveau du nom donnée à la nouvelle feuille
    Que veux tu dire par là ?
    Supposons que tu as 3 feuilles X(1), X(2) et X(3), c'est comme ça que tu nommes tes feuilles créées à partir du modèle
    Supposons que tu supprimes la X(2) et tu crée une nouvelle. Elle serait nommée X(3); hélas la X(3) existe déjà.

  5. #25
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 57
    Par défaut
    @mercatog,

    En effet, je n'avais pas pensé a cela ...
    Aurais tu une préconisation pour palier a ce pb ?

    Par contre, pour les 2 Remarques :

    Remarque 1 :
    Si il n'y a qu'une Feuille (Celle qui se nomme "Mon_Menu")
    => On ne peut pas insérer de nouvelle Feuille (A moins de faire un Bouton..)

    Tu es d'accord sur ce point ?
    Ou y a t-il un autre moyen ?

    Remarque 2 :
    On ne peut pas faire de copie de ce menu si besoin...
    Ou y a t-il un autre moyen ?

    Qu'en dis tu ?

  6. #26
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Si tu n'a qu'une seule feuille, tu crée une nouvelle feuille par bouton.
    Pour copier Mon_Menu, aussi avec bouton


    Pour nommer les feuilles TOTO(X) sans risque de problème, ci-joint une proposition de fonction.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Private Function NewName(ByVal Str As String) As String
    Dim Sortie As Boolean
    Dim Sh As Worksheet
    Dim i As Integer
     
    Do
        i = i + 1
        On Error Resume Next
        Set Sh = Sheets(Str & "(" & i & ")")
        On Error GoTo 0
        If Sh Is Nothing Then
            Sortie = True
            Exit Do
        End If
        Set Sh = Nothing
    Loop While i <= Sheets.Count
     
    NewName = Str & "(" & IIf(Sortie, i, 1) & ")"
    End Function

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Test()
     
    Worksheets.Add before:=Sheets(1)
    ActiveSheet.Name = NewName("TOTO")
    End Sub

Discussions similaires

  1. Problème pour lancer le menu système/quitter
    Par skysee dans le forum Ubuntu
    Réponses: 1
    Dernier message: 02/02/2008, 10h55
  2. Powerpoint 2003: Commande Vba pour Ouvrir le Slide Finder
    Par solipas dans le forum VBA PowerPoint
    Réponses: 0
    Dernier message: 02/08/2007, 15h50
  3. Réponses: 4
    Dernier message: 02/08/2007, 13h14
  4. commande "at" pour lancer un batch: petit souci
    Par mathieu_r dans le forum Windows
    Réponses: 2
    Dernier message: 06/06/2006, 10h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo