Cacher des feuilles Excel avec des macros

Résolu/Fermé
roudiroud Messages postés 31 Date d'inscription mercredi 20 avril 2016 Statut Membre Dernière intervention 7 juin 2016 - 6 mai 2016 à 16:36
roudiroud Messages postés 31 Date d'inscription mercredi 20 avril 2016 Statut Membre Dernière intervention 7 juin 2016 - 9 mai 2016 à 11:03
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
A voir également:

4 réponses

Mike-31 Messages postés 18335 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 septembre 2024 5 095
Modifié par Mike-31 le 6/05/2016 à 16:57
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
roudiroud Messages postés 31 Date d'inscription mercredi 20 avril 2016 Statut Membre Dernière intervention 7 juin 2016
Modifié par roudiroud le 6/05/2016 à 17:09
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
Mike-31 Messages postés 18335 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 septembre 2024 5 095
6 mai 2016 à 17:15
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
roudiroud Messages postés 31 Date d'inscription mercredi 20 avril 2016 Statut Membre Dernière intervention 7 juin 2016
6 mai 2016 à 17:23
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
Mike-31 Messages postés 18335 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 septembre 2024 5 095
6 mai 2016 à 17:27
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
roudiroud Messages postés 31 Date d'inscription mercredi 20 avril 2016 Statut Membre Dernière intervention 7 juin 2016
6 mai 2016 à 17:29
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
roudiroud Messages postés 31 Date d'inscription mercredi 20 avril 2016 Statut Membre Dernière intervention 7 juin 2016
6 mai 2016 à 17:33
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
Modifié par michel_m le 6/05/2016 à 17:34
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
roudiroud Messages postés 31 Date d'inscription mercredi 20 avril 2016 Statut Membre Dernière intervention 7 juin 2016
9 mai 2016 à 11:03
Merci pour ton aide michel_m et Mike-31 :)
0