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 :

Créer bouton fermer [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    sécurité
    Inscrit en
    Septembre 2012
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : sécurité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2012
    Messages : 197
    Par défaut Créer bouton fermer
    Bonjour le forum

    De retour pour un peu d'aide, svp.

    Comme indiqué dans le titre j'aimerai créer un bouton à l'ouverture des certaines feuilles afin de pouvoir les re masquer.

    Je résume ce que je voudrai:
    Sur ma feuille "Recherche" quand je click sur un n° de fiche grace à un lien, la feuille correspondante à ce n° s'ouvre.
    C'est à ce moment que j'ai besoin de vos lumières.
    j'aimerai à l'ouverture de ces feuilles (fiche n° xx-xxx) qu'un bouton soit crée afin de pouvoir la remasquer et revenir sur la feuille "Recherche".
    j'ai bien trouvé un modèle de macro mais n'arrive à me l'adapter
    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
    36
    37
    Sub Macro1() 'création d'un bouton pour fermer les onglets sauvegardés
     
        Charts.Add
     '   ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
     '   ActiveChart.SeriesCollection.NewSeries
     '   ActiveChart.SeriesCollection.NewSeries
     '   ActiveChart.SeriesCollection.NewSeries
     
        'ActiveChart.SeriesCollection(1).Values = "='Feuil2'!$A$2:$A$26"
        'ActiveChart.SeriesCollection(1).Name = "='Feuil2'!$A$1"
     
        'ActiveChart.SeriesCollection(2).Values = "='Feuil3'!$A$2:$A$26"
        'ActiveChart.SeriesCollection(2).Name = "='Feuil3'!$A$1"
     
        'ActiveChart.SeriesCollection(3).Values = "='Feuil3'!$B$2:$B$26"
        'ActiveChart.SeriesCollection(3).Name = "='Feuil3'!$B$1"
     
     '   ActiveChart.Location Where:=xlLocationAsNewSheet
     '   With ActiveChart
     '       .HasTitle = True
     '       .ChartTitle.Characters.Text = "Résultat"
     '       .Axes(xlCategory, xlPrimary).HasTitle = False
     '       .Axes(xlValue, xlPrimary).HasTitle = False
     '   End With
     
        'Création du bouton
        ActiveSheet.Buttons.Add(590.4, 7.8, 130.8, 26.4).Select
        Selection.OnAction = "ThisWorkbook.efface_feuil_active"
        ActiveSheet.Shapes("Bouton 1").Select
        Selection.Characters.Text = "Fermer l'onglet"
        With Selection.Characters(Start:=1, Length:=19).Font
            .Name = "Arial"
            .FontStyle = "Gras"
            .ColorIndex = 3
        ActiveChart.ChartArea.Select
        End With
    End Sub

    Grand merci à vous
    Cdlt

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, pourquoi ne pas utiliser Worksheet_Deactivate pour masquer la feuille en xlveryhidden ?

  3. #3
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.

    Voici une suggestion avec Worksheet_Activate

    Dans 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
    16
    17
    18
    19
    20
    21
    22
    23
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
     
     If Sh.Name <> "Recherche" Then
     
      Dim btn As Button
     
      ActiveSheet.Buttons.Delete
      Dim r As Range
     
        Set r = ActiveSheet.Range(Cells(1, 2), Cells(1, 2))
        Set btn = ActiveSheet.Buttons.Add(r.Left, r.Top, r.Width, r.Height)
        With btn
          .OnAction = "Thisworkbook.Afficher_Recherche"
          .Caption = "Recherche"
          .Name = "Recherche"
        End With
     
      End If
    End Sub
     
    Sub Afficher_Recherche()
     ThisWorkbook.Worksheets("Recherche").Activate
    End Sub

  4. #4
    Membre confirmé
    Homme Profil pro
    sécurité
    Inscrit en
    Septembre 2012
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : sécurité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2012
    Messages : 197
    Par défaut
    Bonjour kiki29, Docmarti

    kiki29, désolé mais je ne vois pas trop le sens du fonctionnement de ta proposition, peux tu m'expliqué plus en détails, stp ?

    Docmarti, ta proposition va bien dans le sens que je l'imaginai, mais erreur de ma part, j'ai oublié de préciser qu'il n'y avais pas que la feuille "Recherche" ou il ne fallai pas de bouton. DESOLE.

    Je résume, il y a 5 feuilles ou il ne faut pas le bouton
    * feuille "Accueil"
    * feuille "Note"
    * feuille "Prix km"
    * feuille "Param"
    * feuille "Recherche"
    Toutes les autres feuilles sont nommées n° 15-001, n° 15-002, ect…. Puis au changement d'année on repart n° 16-001, n°16-002, ect…
    C'est donc ces feuilles la ou il faut le bouton. sincèrement désolé.
    est il possible d'améliorer cela ?


    PS : j'ai mis ta macro dans ThisWorkbook, c'est bien ça ?

    Grand merci à vous
    Cdlt

  5. #5
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Citation Envoyé par Pompaero Voir le message
    PS : j'ai mis ta macro dans ThisWorkbook, c'est bien ça ?
    Oui, c'est bien ca. La macro Afficher_Recherche doit etre dans ThisWorkbook. Si tu veux la mettre dans un module standard,
    remplace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .OnAction = "Thisworkbook.Afficher_Recherche"
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .OnAction = "Afficher_Recherche"



    Je résume, il y a 5 feuilles ou il ne faut pas le bouton
    * feuille "Accueil"
    * feuille "Note"
    * feuille "Prix km"
    * feuille "Param"
    * feuille "Recherche"
    Toutes les autres feuilles sont nommées n° 15-001, n° 15-002, ect…. Puis au changement d'année on repart n° 16-001, n°16-002, ect…
    C'est donc ces feuilles la ou il faut le bouton. sincèrement désolé.
    est il possible d'améliorer cela ?

    Technique 1 :

    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
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
     
     Dim OK
     'Verifier que le nom de la feuille est compose de 2 elements numeriques separes par -
     t = Split(Sh.Name, "-")
     If UBound(t) = 1 Then
      If IsNumeric(t(0)) Then
       If IsNumeric(t(1)) Then
        OK = True
       End If
      End If
     End If
     If OK = True Then
     
      Dim btn As Button
     
      ActiveSheet.Buttons.Delete
      Dim r As Range
     
        Set r = ActiveSheet.Range(Cells(1, 2), Cells(1, 2))
        Set btn = ActiveSheet.Buttons.Add(r.Left, r.Top, r.Width, r.Height)
        With btn
          .OnAction = "Thisworkbook.Afficher_Recherche"
          .Caption = "Recherche"
          .Name = "Recherche"
        End With
     End If
     
    End Sub
    Une autre technique :

    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
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
     
     Dim OK
     'Verifier qu'il ne s'agit pas d'une de ces 5 feuilles
     t = Array("Accueil", "Note", "Prix km", "Param", "Recherche")
     For i = LBound(t) To UBound(t)
      If t(i) = Sh.Name Then OK = True: Exit For
     Next
     If OK = False Then
     
      Dim btn As Button
     
      ActiveSheet.Buttons.Delete
      Dim r As Range
     
        Set r = ActiveSheet.Range(Cells(1, 2), Cells(1, 2))
        Set btn = ActiveSheet.Buttons.Add(r.Left, r.Top, r.Width, r.Height)
        With btn
          .OnAction = "Thisworkbook.Afficher_Recherche"
          .Caption = "Recherche"
          .Name = "Recherche"
        End With
     End If
     
    End Sub

  6. #6
    Membre confirmé
    Homme Profil pro
    sécurité
    Inscrit en
    Septembre 2012
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : sécurité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2012
    Messages : 197
    Par défaut
    Re

    Merci pour les conseils .

    Je viens de tester tes macros mais erreur à la même place pour les 2

    ça me dit pour le t = (variable non définie) est ce normal ?

    par la même occasion j'aimerai mettre le texte du bouton en rouge, gras.
    Donc après
    .Name="Recherche" j'ai ajouté
    .FontStyle="Gras"
    .ColorIndex="3" mais ne marche pas.



    je viens de retester puis ajouter les variables à la suite de Dim OK, t, i et ça à l'air de fonctionner.
    Cdlt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bouton fermer d'une fenêtre
    Par ANOVA dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/11/2005, 17h01
  2. Réponses: 3
    Dernier message: 30/06/2005, 12h50
  3. [VB.NET] Comment créer boutons windows???
    Par fdiedler dans le forum Windows Forms
    Réponses: 11
    Dernier message: 21/02/2005, 18h57
  4. Désactiver le bouton "fermer fomulaire"
    Par 973thom dans le forum IHM
    Réponses: 10
    Dernier message: 03/02/2005, 20h26

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