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 :

Problème avec l'ajout d'un menu contextuel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut Problème avec l'ajout d'un menu contextuel
    Bonjour,

    Je débute avec le VBA excel et je dois travailler sur un projet qui existe déjà et je dois en rajouter des fonctionnalités.

    J'essaye de rajouter un menu contextuel qui me sert de copier le contenu d'une feuille et me le dupliquer dans une autre feuille.

    Pour infos la première feuille est protégée.

    J'ai ajouté le code suivant à mon projet dans la partie initialisation des variables "open" du WorkBook :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Const DupliquerLaFeuille As String = "Dupliquer La Feuille"
    et j'ai rajouté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
       Application.CommandBars("Cell").Reset
     
        With Application.CommandBars("Cell").Controls.Add(msoControlButton)
            .BeginGroup = True
            .Caption = DupliquerLaFeuille
            .OnAction = "DupliquerLaFeuille"
        End With
    J'ai rajouté la fonction "DupliquerLaFeuille" à la fin du module sachant que j'ai un seul module qui contient toutes les fonctions et je ne sais pas si j'ai bien fait ou pas car je voulais pas toucher au code du projet :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Public Sub DupliquerLaFeuille()
     
     
        Dim ongletACopier As String
        Dim nouvelOnglet As String
        Dim derniereColonneTableau As Integer
        Dim derniereLigneTableau As Integer
        Dim ligneCourante As Integer
     
        ongletACopier = ActiveSheet.Name
     
        Sheets(ongletACopier).Select
        Dim sheet As Worksheet
        Set sheet = Sheets.Add
     
        nouvelOnglet = "Feuille Dupliquée " & Sheets.count
     
        sheet.Select
        sheet.Name = nouvelOnglet
        Sheets(ongletACopier).Select
        Cells.Select
     
        Selection.Copy
     
        Range("A1").Select
        Sheets(nouvelOnglet).Select
        Cells.Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Range("A1").Select
     
     
    End Sub
    Le problème est que je ne vois pas le menu contextuel que j'ai ajouté quand je clique droit sur ma feuille et du coup je ne peux dupliquer ma feuille.

    Mais par contre quand je débogue la fonction ça marche j'ai ma feuille dupliquée qui se rajoute dans un nouvel onglet.

    Je débute vraiment dans ce langage là et j'espère avoir votre aide pour résoudre ce problème .

    Merci

  2. #2
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Tu dois avoir une erreur DupliquerLaFeuille est à la fois un string et à la fois un sub !!!

    En modifiant, j'ai bien l'entrée dans le nemu contextuel.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut
    Bonjour,

    Au fait mon code marche bien dans un classeur où y a que cette fonction là .

    Mais moi je souhaite intégrer cette fonction là dans un projet existant qui contient pas mal de fonctions et c'est là où je coince.

    J'ai ajouté la fonction "DupliquerLaFeuille" dans mon projet à la fin du code de mon unique module qui contient la totalité des fonctions .

    Cela dit ça ne marche pas et je ne sais pas ce qui cloche

    Pour info ma première feuille est protégée avec un code est ce que cela empêche de rajouter ce nouveau menu contextuel ?

    Est ce que j'ai bien fait de rajouter la fonction "DupliquerLaFeuille" à la fin du code de mon module ?

    Merci

  4. #4
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour a tous,


    Je ne sais pas si tu as compris ma remarque, dans l'exemple que tu donnes tu as une chaine de caractère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Const DupliquerLaFeuille As String = "Dupliquer La Feuille"
    qui a le même nom que la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Sub DupliquerLaFeuille()
    La ça coince, maintenant si tu as une feuille protégée, il faut que tu la déprotège et reprotège dans ton code, il y a de nombreux exemples sur le forum.

    Pour voir ce qui ne marche pas, rien de tel que de passer par le débogueur et de faire du pas à pas. Difficile d'en dire plus sans voir plus de code ou bien un fichier exemple.

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut
    Oui j'avais bien compris mais ça marchait quand même dans mon classeur de test mais j'ai pris note que je devais changer de nom.

    Je vais regarder dans le forum pour traiter le problème de feuille protégée mais cela dit j'ai pas eu une réponse à la question qui me travaille un peu : est ce que je peux ajouter la fonction où je veux dans le code du projet que j'ai actuellement entre les mains ?

    J'ai un souci aussi coté débogage vu que je suis vraiment débutante dans ce domaine là : pour le moment j'arrive à déboguer des fonctions , je marque l'arrêt sur le nom de la fonction avec "F9" ensuite je clique sur le bouton d'exécution et là je fais des "F8" et j'arrive à voir ce que fait exactement la fonction .

    Cela dit pour déboguer tout le projet de A à Z je ne sais pas comment je dois procéder

    Merci pour tes réponses

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2012
    Messages : 63
    Par défaut
    Bonjour,

    j'ai testé ta fonction, qui fonctionne sans changer le nom de la chaine de caractère ni celui de la fonction...

    place juste la fonction dans un nouveau module et moi ça fonctionne parfaitement...

Discussions similaires

  1. Problème avec l'ajout d'action dans le menu
    Par F0ul dans le forum Débuter
    Réponses: 3
    Dernier message: 31/03/2009, 09h56
  2. Problème avec requête ajout
    Par teffal dans le forum Access
    Réponses: 3
    Dernier message: 29/04/2006, 16h41
  3. Réponses: 8
    Dernier message: 16/03/2006, 07h36
  4. [VB6] Problème avec insertion d'icônes dans menu
    Par marsup54 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 02/03/2006, 21h38
  5. Problème avec requête ajout
    Par mitnick32 dans le forum Access
    Réponses: 1
    Dernier message: 02/02/2006, 18h02

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