macro ou formule ?

M

mag

Guest
bonsoir le forum

je voudrais écrire une formule ou une macro en fonction de la colonne b8 à b47.

Si COLONNE B8=''alors masquer la Ligne;sinon rien
Si COLONNE B9=''alors masquer la Ligne;sinon rien
.......
SI Choix formule, la formule doit etre en A8,A9,....
Masquer la ligne = Hauteur de ligne

MERCI DE VOTRE AIDE
 

Jacques87

XLDnaute Accro
Bonsoir,

Il y a un problème dans la formulation de ta question :

colonne b8 à b47, je suppose qu'il s'agit des cellules B8 à B47

alors dans ce cas voila une proposition de macro

Dim I As Integer
For I = 8 To 47
If Range('B' & I).Value = '' Then
Rows(I).EntireRow.Hidden = True
Next I

Bonne soirée
 

Jacques87

XLDnaute Accro
En effet cette macro peut être déclenchée par un bouton, sinon elle peut l'être également par une procédure évennementielle (exemple, ouverture d'une feuille, modification dans une feuille, calcul dans une feuille, clic sur une cellule, etc ...).
Il faudrait donc que tu précises comment tu veux déclencher cette macro afin qu'on puisse l'automatiser.

A+
 
M

MAG

Guest
SALUT JACQUES87


Concernant ta question, je souhaiterais que la macro fonctionne quand je change le parametre d'une cellule situé dans une feuille appelé intro, cellule a5 (Feuille qui est differente des données de la macro)

Merci de ta réponse

A+
 

Jacques87

XLDnaute Accro
Bonjour Mag

voici la procédure qui répondra à ta question, elle est à placer dans la feuille appelée 'Intro' :
ALT+F11 ensuite CTRL+R double clic sur Feuil(Intro) et coller ce code

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim I As Integer
Application.ScreenUpdating = False
For I = 8 To 47
If WorkSheets('toto').Range('B' & I).Value = '' Then
WorkSheets('toto').Rows(I).EntireRow.Hidden = True
Next I

End Sub
remarque : 'toto' est le nom de la feuille où se trouvent les lignes à cacher

Bonne journée
 

Jacques87

XLDnaute Accro
J'avais oublié de sélectionner la feuille considérée, l'erreur doit venir de la, sinon je ne vois pas car il n'y a aucune anomalie, selon moi, dans le code

ajoute donc la ligne en rouge

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim I As Integer
Application.ScreenUpdating = False
WorkSheets('toto').Select
For I = 8 To 47
If WorkSheets('toto').Range('B' & I).Value = '' Then
WorkSheets('toto').Rows(I).EntireRow.Hidden = True
Next I

End Sub
 

Gael

XLDnaute Barbatruc
Bonjour Mag, bonjour Jacques,

S'agissant de déclencher la procédure en modifiant la cellule A5, j'aurais plutôt mis en début de procédure:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Application.Intersect(Target, Range('A5')) Is Nothing Then Exit Sub
...

Attention: Worksheet_Change au lieu de Worksheet_selectionChange

@+

Gael
 
M

Mag

Guest
Salut gael, salut jacques

La macro marche mais quand je change la valeur dans la cellule a5, certaine ligne reste masque alors que je voudrais quel apparaissent car elle ne sont plus vide.
En a5, j'ai une liste qui contient des années.
je reste à votre disposition
a+
 

Jacques87

XLDnaute Accro
c'est évident puisque tu as demandé à les masquer au préalable, il faut donc compléter ta procédure afin que si entre temps les cellules concernées ne sont plus vides, les lignes doivent être afficher

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim I As Integer
Application.ScreenUpdating = False
WorkSheets('toto').Select
For I = 8 To 47
If WorkSheets('toto').Range('B' & I).Value = '' Then
WorkSheets('toto').Rows(I).EntireRow.Hidden = True
else :
WorkSheets('toto').Rows(I).EntireRow.Hidden = False
end if
Next I

End Sub
 
M

mag

Guest
Jacques87 merci sa marche super ; Tu es fantastique.

Si cette macro je veux l'appliquer à des feuilles identiques avec le même déclanchement en A5, comment doit je faire pour ajouter ces feuilles dans cette macro ?

Enfin, si je protège mon classeur quelle code je doit mettre en amont et en aval de la macro

Merci

A+
 

Gael

XLDnaute Barbatruc
Rebonjour à tous,

J'aimerai avoir un complément d'information.

si j'ai bien compris mon début en VBA, la macro que tu proposes, Jacques, va s'exécuter chaque fois que l'on sélectionne une nouvelle cellule ou une nouvelle plage dans la feuille Intro.

En mettant en en-tête les 2 lignes de mon post précédent, la macro ne se lancera que si la valeur de la cellule A5 est modifiée. Toute autre action de sélection, modif d'une autre cellule ou recalcul ne déclenchera pas le lancement de la macro.

pourrais-tu me confirmer si c'est bien ça? j'ai quelques doutes puisque Mag parle bien d'un déclenchement en A5 et du coup je suis un peu perdu.

Merci.

@+

Gael
 

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 501
dernier inscrit
talebafia