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
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
A voir également:
- Cacher des feuilles Excel avec des macros
- Liste déroulante excel - Guide
- Excel additionner des cellules - Guide
- Application pour cacher des applications - Guide
- Si et excel - Guide
- Fusionner feuilles excel - Guide
4 réponses
Mike-31
Messages postés
18345
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
8 novembre 2024
5 104
Modifié par Mike-31 le 6/05/2016 à 16:57
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.
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.
Mike-31
Messages postés
18345
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
8 novembre 2024
5 104
6 mai 2016 à 17:15
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]
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]
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
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é
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é
Mike-31
Messages postés
18345
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
8 novembre 2024
5 104
6 mai 2016 à 17:27
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
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
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
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 ?
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
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
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 6/05/2016 à 17:34
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
qui appelle la macro "tester_caché" dans le module 1
dans le module 1
Michel
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
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
9 mai 2016 à 11:03
Merci pour ton aide michel_m et Mike-31 :)
Modifié par roudiroud le 6/05/2016 à 17:09