Cacher des feuilles Excel avec des macros

Résolu
roudiroud Messages postés 36 Statut Membre -  
roudiroud Messages postés 36 Statut Membre -
Bonjour le Forum,

Je voulais savoir si il était possible de cacher les feuilles avec des macros dessus ?

Le problème c'est que lorsque je les caches, les macros ne peuvent plus fonctionner !

Avez-vous une petite solution

4 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Bonjour,

    si je comprends bien ton problème, pour tes macros, ouvre un module et déplace les dans le module

    ensuite deux possibilités pour masquer tes feuilles
    1/ simplement masquée mais visible en simple clic droit sur un onglet et afficher
    2/ invisible et affichage des feuilles masquées uniquement par VBA et mot de passe

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
    1. roudiroud Messages postés 36 Statut Membre
       
      En faite le problème c'est que dès que je les masque je ne peux plus aller chercher les données qui ce trouve dessus avec mes macros :(
      0
  2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    comment as tu écris ton code !
    exemple tu veux rapatrier des données de la cellule F7 d la feuille masquée nommée TITI et les placer dans la feuille TOTO cellule B5

    le code est

    Sheets("TOTO").Range("B5") = Sheets("TITI").Range("F7")

    ou plus court
    Sheets("TOTO").[B5] = Sheets("TITI").[F7]
    0
    1. roudiroud Messages postés 36 Statut Membre
       
      Oui, donc je dois voir mes feuilles pour pouvoir excuter mes macros correctements.

      j'ai fais pas mal de trucs différent pour les masquées, mais à chaque fois j'ai ce message d'erreurs :

      Erreurs d'exécution '1004' :

      la méthode Select de la classe Worksheet à échoué
      0
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    serait il possible d'avoir une copie anonymisé de ton fichier de sorte de voir sa structure que tu peux joindre à partir de ce lien
    1) Clic sur ce lien https://www.cjoint.com/
    2) Clic sur le bouton Parcourir pour sélectionner ton fichier
    3) Clic sur le bouton Créer le lien Cjoint en bas de la page
    4) Au bout de quelques secondes en haut de la page en bleu souligné un lien sera généré, tu le sélectionnes et tu le copies dans une réponse
    0
    1. roudiroud Messages postés 36 Statut Membre
       
      Je suis désolé de te dire non, alors que tu m'apporte ton aide? mais je peut te mettre mon code userform et de mon module ?
      0
    2. roudiroud Messages postés 36 Statut Membre
       
      Module 1 :


      Sub Actualiser()

      '--------------------------------------- Permet de copier les données dans une feuille à l'autre -----------------------------------------
      Dim ShSource As Worksheet
      Dim LigneDeTitreSource As Long
      Dim DerniereLigneSource As Long
      Dim DerniereColonneSource As Long
      Dim AireSource As Range

      Dim ShCible As Worksheet
      Dim DerniereLigneCible As Long

      Set ShSource = Sheets("Base_du_JOUR")
      Set ShCible = Sheets("Préparation")

      With ShSource
      LigneDeTitreSource = 1
      DerniereLigneSource = .Cells(.Rows.Count, 1).End(xlUp).Row
      DerniereColonneSource = .Cells(LigneDeTitreSource, .Columns.Count).End(xlToLeft).Column
      Set AireSource = .Range(.Cells(LigneDeTitreSource + 1, 1), .Cells(DerniereLigneSource, DerniereColonneSource))
      End With

      With ShCible
      DerniereLigneCible = .Cells(.Rows.Count, 1).End(xlUp).Row
      AireSource.Copy .Cells(DerniereLigneCible + 1, 1)
      End With

      Set AireSource = Nothing
      Set ShSource = Nothing
      Set ShCible = Nothing

      '----------------------------- Permet d'actualisé les feuilles "Bases_du_jour" .....-------------------------------------
      Sheets("Base_du_JOUR").Select
      ActiveWorkbook.RefreshAll
      Sheets("Base ENTIERE").Select
      ActiveWorkbook.RefreshAll

      Sheets("Feuil3").Select
      ActiveWorkbook.RefreshAll
      Sheets("TAUX").Select
      ActiveWorkbook.RefreshAll
      Sheets("Menu").Select

      '---------------------------------Permet de filtrer les montant en-dessous de -20 et les écarts qui n'ont pas d'email ---------------------------
      Sheets("Préparation").Select
      Columns("A:M").Select
      Selection.AutoFilter
      ActiveSheet.Range("$A$1:$M$24").AutoFilter Field:=7, Criteria1:=">-20", _
      Operator:=xlAnd
      ActiveSheet.Range("$A$1:$M$24").AutoFilter Field:=13, Criteria1:="<>"
      Selection.ClearContents
      Selection.AutoFilter
      Sheets("Menu").Select

      ' --------------------------------------- Permet de copier et coler des données -------------------------------------
      Sheets("Base_du_JOUR").Select
      Rows("1:1").Select
      Selection.Copy
      Sheets("Préparation").Select
      Rows("1:1").Select
      ActiveSheet.Paste
      Sheets("Menu").Select

      Sheets("Base_du_JOUR").Select
      Range("B2").Select
      Selection.Copy
      Sheets("Feuil3").Select
      Range("A2").Select
      ActiveSheet.Paste
      Sheets("Menu").Select

      Sheets("Préparation").Select
      Rows("1:1").Select
      Selection.AutoFilter
      ActiveSheet.Range("$A$1:$S$6").AutoFilter Field:=13, Criteria1:="="
      ActiveSheet.Range("$A$1:$S$6").AutoFilter Field:=7, Criteria1:=">-10", _
      Operator:=xlAnd
      Range("A3:O7037").Select
      Selection.ClearContents
      Selection.AutoFilter
      Sheets("Menu").Select
      ' -------------------------------- Permet de supprimer les cellules vides dans la colonne A -------------------------------------------

      Sheets("Feuil3").Select
      Range("A2:J2").Select
      Selection.Copy
      Range("A3:J3").Select
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False

      Sheets("Base_du_JOUR").Select
      ActiveWorkbook.RefreshAll
      Sheets("Base ENTIERE").Select
      ActiveWorkbook.RefreshAll
      Sheets("Feuil3").Select
      ActiveWorkbook.RefreshAll
      Sheets("TAUX").Select
      ActiveWorkbook.RefreshAll
      Sheets("Menu").Select
      '--------------------------------------- Permet de copier les données dans une feuille à l'autre -----------------------------------------
      Set ShSource = Sheets("Feuil3")
      Set ShCible = Sheets("TAUX")

      With ShSource
      LigneDeTitreSource = 2
      DerniereLigneSource = .Cells(.Rows.Count, 1).End(xlUp).Row
      DerniereColonneSource = .Cells(LigneDeTitreSource, .Columns.Count).End(xlToLeft).Column
      Set AireSource = .Range(.Cells(LigneDeTitreSource + 1, 1), .Cells(DerniereLigneSource, DerniereColonneSource))
      End With

      With ShCible
      DerniereLigneCible = .Cells(.Rows.Count, 1).End(xlUp).Row
      AireSource.Copy .Cells(DerniereLigneCible + 1, 1)
      End With

      Set AireSource = Nothing
      Set ShSource = Nothing
      Set ShCible = Nothing

      Sheets("Préparation").Select
      Columns("A:A").Select
      Selection.SpecialCells(xlCellTypeBlanks).Select
      Selection.EntireRow.Delete
      Sheets("Menu").Select

      Sheets("Préparation").Select
      Range("N1").Select
      ActiveCell.FormulaR1C1 = "Temps(HH:MM:SS)"
      Sheets("Menu").Select
      0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bonjour

    il faut que la macro de la feuille cachée soit dans un module standard
    la feuille1 est caché

    un petit exemple
    dans la feuille2 visible
    on a le code
    Sub tester_caché()
    Call test_caché
    End Sub

    qui appelle la macro "tester_caché" dans le module 1

    dans le module 1
    Sub test_caché()
    Dim cptr As Byte
    With Sheets(1) 'feuille masquée
    .Range("B2") = "coucou"
    For cptr = 1 To 3
    .Cells(cptr, "C") = cptr
    Next
    .Visible = xlSheetVisible ' pour vetifier si ca a marché
    End With
    End Sub

     Michel
    -1
    1. roudiroud Messages postés 36 Statut Membre
       
      Merci pour ton aide michel_m et Mike-31 :)
      0