VBA Codes dans excel
cbg573
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, je travaille depuis plus de 48 heures sur un projet pour faire un "reset" de mon fichier pour la prochaine année.
À chaque fois que j'avais, il m'arrive autre chose et je plante.
Merci de bien vouloir m'aider
Mon fichier à 14 feuilles.
La première s'appelle "Dates". Dans cette feuille, 3 cellules sont importantes:
- C1 où la saisie se fait par l'usager. Cette saisie affecte toutes les autres cellules de cette feuille.
- La valeur de la cellule D1 est reportée dans la feuille "1" cellule B5 avec la formule en B5 =Dates!D1.
- La valeur de la cellule D13 est reportée dans la feuille "13" cellule B5 avec la formule en B5 =Dates!D13.
Les autres feuilles sont numérotées de 1 à 13.
dans la feuille 1, les lignes 6 à 45 sont numérotées dans la colonne A (colonne cachée) de 1 à 40. je dois être capable de masquer les lignes 6 à 45 quand leur numéro de la colonne A est plus grand que la valeur de la cellule B5 et les démasquer lorsque leur numéro n'est pas plus grand que la cellule B5 (donc < ou = à B5). JE crois avoir réussi à le faire ici
Les feuilles 2 à 12 ne sont pas affectées par le masquage de rangée.
Pour la feuille 13, c'est la même chose que la feuille 1, sauf que la valeur de la cellule B5 n'est pas la même. Mais ça ne marche pas ici
Voici les codes que j'ai écris et qui ne fonctionnent pas totalement:
À chaque fois que j'avais, il m'arrive autre chose et je plante.
Merci de bien vouloir m'aider
Mon fichier à 14 feuilles.
La première s'appelle "Dates". Dans cette feuille, 3 cellules sont importantes:
- C1 où la saisie se fait par l'usager. Cette saisie affecte toutes les autres cellules de cette feuille.
- La valeur de la cellule D1 est reportée dans la feuille "1" cellule B5 avec la formule en B5 =Dates!D1.
- La valeur de la cellule D13 est reportée dans la feuille "13" cellule B5 avec la formule en B5 =Dates!D13.
Les autres feuilles sont numérotées de 1 à 13.
dans la feuille 1, les lignes 6 à 45 sont numérotées dans la colonne A (colonne cachée) de 1 à 40. je dois être capable de masquer les lignes 6 à 45 quand leur numéro de la colonne A est plus grand que la valeur de la cellule B5 et les démasquer lorsque leur numéro n'est pas plus grand que la cellule B5 (donc < ou = à B5). JE crois avoir réussi à le faire ici
Les feuilles 2 à 12 ne sont pas affectées par le masquage de rangée.
Pour la feuille 13, c'est la même chose que la feuille 1, sauf que la valeur de la cellule B5 n'est pas la même. Mais ça ne marche pas ici
Voici les codes que j'ai écris et qui ne fonctionnent pas totalement:
Sub NewYear_4eO() Dim var As Variant Dim varArr() As Variant With Application .ScreenUpdating = False .EnableEvents = False End With With Sheets("1") .Range("c6:at45").ClearContents .Range("b51:at76").ClearContents End With varArr = Array("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12") For Each var In varArr With Sheets(CStr(var)) .Range("b6:As33").ClearContents .Range("a39:AS64").ClearContents End With Next var Erase varArr With Sheets("13") .Range("c6:at45").ClearContents .Range("b51:at76").ClearContents End With Call HideRows1 Call HideRows13 With Application .EnableEvents = True .ScreenUpdating = True End With End Sub Sub HideRows1() With Sheets("1") Dim NumWeeks As Integer NumWeeks = Worksheets("1").Range("b5").Value .Unprotect ("levesque") BeginRow = 26 EndRow = 45 ChkCol = 1 For RowCnt = BeginRow To EndRow If Cells(RowCnt, ChkCol).Value > NumWeeks Then Cells(RowCnt, ChkCol).EntireRow.Hidden = True Else Cells(RowCnt, ChkCol).EntireRow.Hidden = False End If Next RowCnt .Protect ("levesque") End With End Sub Sub HideRows13() With Sheets("13") Dim NumWeeks2 As Integer NumWeeks2 = Worksheets("13").Range("b5").Value .Unprotect ("levesque") BeginRow = 26 EndRow = 45 ChkCol = 1 For RowCnt = BeginRow To EndRow If Cells(RowCnt, ChkCol).Value > NumWeeks2 Then Cells(RowCnt, ChkCol).EntireRow.Hidden = True Else Cells(RowCnt, ChkCol).EntireRow.Hidden = False End If Next RowCnt .Protect ("levesque") End With End Sub
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- VBA Codes dans excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
2 réponses
Bonjour
si la feuille 13 n'est pas active, il faut des points devant "cells"
( apparemment tu semblerait déclencher la macro sur la feuille "dates" ?)
si la feuille 13 n'est pas active, il faut des points devant "cells"
( apparemment tu semblerait déclencher la macro sur la feuille "dates" ?)