Integration de bouton fonction d'une autre feuille

Eddy959 Messages postés 8 Statut Membre -  
Eddy959 Messages postés 8 Statut Membre -
Bonjour,
je travaille actuellement avec un calendrier et une feuille "modèle";

lorsque je clique sur une date, il se crée une nouvelle feuille (identique au modèle) avec cette date et diverses autre info.
Sur mon modèle, j'ai crée 2 boutons utilisant des fonctions (zone impression, mise en page spécifique)

mon problème: lors de la création de ma nouvelle feuille, mes boutons ne suivent pas...

j'ai pensé au basique copier/coller, mais je n'arrive pas a lui dire de revenir a la feuille précédente, le nom de celle ci n’étant jamais identique .

mon code actuelle:

Sub Macro6()
ActiveCell.Select
Sheets("Modele").Select
ActiveSheet.Shapes.Range(Array("CommandButton4")).Select
ActiveSheet.Shapes.Range(Array("CommandButton4", "CommandButton3")).Select
Selection.Copy
Sheets("Jour 52").Select
ActiveSheet.Paste
ActiveSheet.Shapes.Range(Array("CommandButton1")).Select
ActiveSheet.Shapes.Range(Array("CommandButton1", "CommandButton2")).Select
ActiveSheet.Shapes.Range(Array("CommandButton3")).Select
ActiveCell.Offset(0, -6).Range("A1").Select
End Sub


merci pour votre aide

6 réponses

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour Eddy

    Comment ta macro copie ta feuille modèle ?

    Normalement avec une macro de ce type, les boutons et les codes associés sont forcément copiés également :
    Sub nouvelle_feuille()
        Sheets("MODELE").Select
        Sheets("MODELE").Copy After:=Sheets("MODELE")
      End Sub


    Cdlmnt
    Via
    0
  2. Eddy959 Messages postés 8 Statut Membre
     
    Bonsoir et merci de ta reponse,

    pour la creation de mon nouvel onglet j'ai cette fonction:

    Public Sub CreerOnglet(psSemaine As String, pdtDate As Date, piJour As Integer)

    Dim oShNew As Worksheet

    Set oShNew = Worksheets.Add
    Worksheets("Modele").Cells.Copy
    oShNew.Select
    oShNew.Paste
    oShNew.Range("A4").Value = psSemaine
    oShNew.Range("A3").Value = pdtDate
    oShNew.Range("A5").Value = "Jour " & piJour
    oShNew.Range("A1").Select
    oShNew.Name = "Jour " & piJour
    oShNew.Visible = xlSheetVisible
    oShNew.Select
    Set oShNew = Nothing


    mais de cette manière, et je ne comprends pas pourquoi, mes boutons de fonction ne reste pas!
    0
  3. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Re,

    Normal ! Au lieu de copier la feuille comme je le fais dans ma macro, dans la tienne tu crées une nouvelle feuille, tu copies les cellules de la feuille modèle (Worksheets("Modele").Cells.Copy) et tu les colles dans la nouvelle feuille mais pas les boutons !

    Procède donc plutôt par copie de la feuille modèle (sans créer une nouvelle feuille avant), puis tu renommes cette copie et tu remplis les cellules A5 etc

    Cdlmnt
    Via

    "L'imagination est plus importante que le savoir."    A. Einstein
    0
  4. Eddy959 Messages postés 8 Statut Membre
     
    merci pour ton explication, mais tres franchement je suis un newbies dans le Vba, j'essaie de comprendre et de manipuler les macros que je trouve pour atteindre mes objectifs... de véritable usine a gaz !!

    j'ai essayé avec ta fonction, mais là ce soir, que des bug et surtout pas de résultat... je te joins mon fichier, si le cœur t'en dit, jette un coup d’œil histoire de peut être me guider...

    http://www.cjoint.com/c/FEAvA60JEd8

    je t'en remercie
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Re,

    Voilà avec macro pour copier la feuille modèle avec ses boutons, il n'y a pas besoin de plus

    http://www.cjoint.com/c/FEAwWevKs3z

    Pour l'instant il n'y a pas de macros associée aux boutons 3 et 4 de ta feuille modèle, ce que je te conseille pou éviter que ces macros se retrouvent dans toutes les feuilles créées c'est de créer ces macros dans un module et de les nommer par ex action_bouton3 et action_bouton4
    Ensuite dans la feuille modèle dans le code associé au bouton3 tu mets juste action_bouton3 pour lancer la macro correspondante, idem pour l'autre bouton bien sûr
    Ainsi chaque feuille copiée n'aura qu'une ligne de code associée au lieu de plusieurs lignes

    Enfin si les 2 boutons sont bien comme je pense pour imprimer simplement le haut ou le bas de la page, pas besoin de 10 000 lignes il suffit :

    - d'une ligne pour définir la zone d'impression
    ActiveSheet.PageSetup.PrintArea = "$A$1:$F$7"
    - éventuellement de lignes pour fixer les marges
    With ActiveSheet.PageSetup
    .LeftMargin = Application.InchesToPoints(0.708661417322835)
    .RightMargin = Application.InchesToPoints(0.708661417322835)
    .TopMargin = Application.InchesToPoints(0.748031496062992)
    .BottomMargin = Application.InchesToPoints(0.748031496062992)
    End with
    - d'une ligne pour lancer l'impression en indiquant éventuellement le nombre de copies
    ActiveSheet.PrintOut Copies:=1

    Et c'est tout, pas d'usine à gaz

    Cdlmnt
    Via
    0
  7. Eddy959 Messages postés 8 Statut Membre
     
    ça c'est du rapide !!!

    ça marche nickel, par contre en ce qui concerne l'impression...
    Est ce que tu connaitrais une ligne de commande pour faire la mise en page automatique sur TouS les onglets comportant le terme "Jour" sachant que la zone impression n'est compatible que onglet par onglet.... ce qui me permettrait de n'avoir qu'une ou macros sur le global
    0
    1. Eddy959 Messages postés 8 Statut Membre
       
      Petit souci détecter ... si je masque la feuille "modèle" ça bug... il ne la trouve pas...
      0
    2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > Eddy959 Messages postés 8 Statut Membre
       
      Bonjour Eddy

      Pour la feuille modèle masquée il faut en début de macro la démasquer avec la commande Sheets("Modèle").Visible = True puis la remasquer en fin de macro avec Sheets("Modèle").Visible = False

      Pour faire une action sur tous les onglets commençant par jour tu fais une boucle sur toutes les feuilles :

      For n= 1 to Sheets.Count 
      If  Left(Sheets(n).Name,4)="Jour" then
      'ici tes lignes de commande de mise en page
      End If
      Next n


      Cdlmnt
      Via
      0
    3. Eddy959 Messages postés 8 Statut Membre
       
      bonjour Via

      pour la boucle, pas de resultat... la mise en page se fait bien sur la page ou je lance la macro, mais pas sur les autres...

      Sub Macro1()
      '
      ' Macro1 Macro

      For n = 1 To Sheets.Count
      If Left(Sheets(n).Name, 4) = "Jour" Then
      Range("A9:F15").Select
      ActiveSheet.PageSetup.PrintArea = "$A$9:$F$15"
      End If
      Next n

      End Sub
      0
    4. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > Eddy959 Messages postés 8 Statut Membre
       
      Re,

      Il faut d'abord selectionner chaque feuille dans ta boucle
      For n = 1 To Sheets.Count
      If Left(Sheets(n).Name, 4) = "Jour" Then
      With Sheets(n)
      .Select
      .Range("A9:F15").Select
      .PageSetup.PrintArea = "$A$9:$F$15"
      End With
      End If
      Next 


      Cdlmnt
      Via
      0
    5. Eddy959 Messages postés 8 Statut Membre > via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention  
       
      je te remercie Via, mais je vais pas pouvoir tester tes écrits....
      j'ai mon excel qui m’éjecte quand je lui lance une macro... alors que ce fonctionne très bien sur un autre pc!!

      J'installe 2016 pour voir si ca continue...

      Merci encore de ta patience et ton amabilité
      0