Cacher des feuilles Excel avec des macros

Résolu
roudiroud Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -  
roudiroud Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -
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 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
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   Statut Membre Dernière intervention  
 
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 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
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   Statut Membre Dernière intervention  
 
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 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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   Statut Membre Dernière intervention  
 
Merci pour ton aide michel_m et Mike-31 :)
0