Masquer une ligne sous conditions [Résolu/Fermé]

Messages postés
5
Date d'inscription
lundi 3 août 2015
Statut
Membre
Dernière intervention
4 août 2015
- - Dernière réponse : Jarra80
Messages postés
5
Date d'inscription
lundi 3 août 2015
Statut
Membre
Dernière intervention
4 août 2015
- 4 août 2015 à 14:08
Bonjour,

Je souhaiterais créer une macro qui me permettrai de masquer une ligne si la réponse à la question précédent est non.

Exemple : dans la cellule B4 j'ai le choix de sélectionner "Oui" ou "Non", Si B4 = "Non" je voudrais que la ligne 5 (en entier) soit masquée.

Problème je ne sais pas créer de macro ... j'ai bien fait des recherches mais je n'y arrive pas ...

Si vous pouviez m'aider, ça m'arrangerait beaucoup !

D'avance merci !
Afficher la suite 

6 réponses

Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
27
0
Merci
Bonjour,

Pour automatiser tout ça :

Sub TEST()

Dim DL As Long, i As Long

DL = Cells(Application.Rows.Count, 1).End(xlUp).Row 'A adapter, 1 est la colonne de référence pour savoir quelle est ta dernière ligne (mettre le numéro de colonne qui est remplie le plus bas du tableau)

For i = 1 To DL 'A adapter également, 1 est le numéro de la ligne où commence le code

If Range("B" & i) = "Non" Then 'Si la cellule B de la ligne i est égale à "Non" alors...

    Rows(i).Hidden = True 'Masquer la ligne concernée (i)

End If

Next i

End Sub


Cordialement.
Messages postés
5
Date d'inscription
lundi 3 août 2015
Statut
Membre
Dernière intervention
4 août 2015
0
Merci
Merci beaucoup Kuartz !
J'ai encore une question, y-a-t-il une solution pour que cela se fasse automatique, c'est à dire que à chaque que je choisisse le "Non" dans ma cellule B4, la ligne se masque et que je n'ai donc pas besoin d'activer la macro ?
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
27 -
Oui bien sûr.

Dans l'éditeur VBA, vous double cliquez sur votre feuille. Vous cliquez ensuite sur (Général) en haut et vous mettez "Worksheet". A droite sera normalement écrit "SelectionChange" sinon, le mettre.

Ensuite, écrire la macro dessous.

Exemple :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim DL As Long, i As Long

DL = Cells(Application.Rows.Count, 1).End(xlUp).Row 'A adapter, 1 est la colonne de référence pour savoir quelle est ta dernière ligne (mettre le numéro de colonne qui est remplie le plus bas du tableau)

For i = 1 To DL 'A adapter également, 1 est le numéro de la ligne où commence le code

If Range("B" & i) = "Non" Then 'Si la cellule B de la ligne i est égale à "Non" alors...

    Rows(i).Hidden = True 'Masquer la ligne concernée (i)

End If

Next i

End Sub


Cordialement.
Messages postés
5
Date d'inscription
lundi 3 août 2015
Statut
Membre
Dernière intervention
4 août 2015
0
Merci
Bonjour,

Merci de votre réponse mais je n'arrive pas à la mettre en application ...
Dans la liste déroulante où il y a (Général) je dois pouvoir choisir (worksheet) ? parce que ça n'apparaît pas, je n'ai d'ailleurs la possibilité que de prendre (Général) ...
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
27 -
Oui normalement vous pouvez choisir (Worksheet). Mais peu importe, double cliquez sur votre feuille (dans le panneau de gauche (Feuil1 normalement)). Ensuite copiez collez le dernier code que je vous ai indiqué dans le cadre du dessous et le tour est joué.
Messages postés
15966
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 novembre 2019
2822
0
Merci
bonjour,

Option Explicit
'-----------------

Private Sub Worksheet_Change(ByVal Target As Range)
'worksheet_change ne réagit que lorsqu'une saisie est effectuée _
contrairement à "slection_change" qui réagit lorsqu'on ckique sur B4

If Target.Address = "$B$4" Then 'limite l'action au changement dans B4
If Range("B4") = "Non" Then Rows(5).Hidden = True 'ligne 5 cachée
If Range("B4") = "Oui" Then Rows(5).Hidden = False
End If
'si B4 vide: aucune action
End If
End Sub


pour installer
copier ce code
sur la feuille concernée clic droit sur le nom d'onglet
visualiser le code
coller le code
Messages postés
5
Date d'inscription
lundi 3 août 2015
Statut
Membre
Dernière intervention
4 août 2015
0
Merci
Merci de vos réponses mais en recopiant vos codes (et les adaptant à mon fichier bien sûr) ça ne fonctionne pas ... Alors que ça fonctionnait avant, même si je devais l'exécuter manuellement ...

A quoi cela peut-il être du ?
Quand j'ouvre l'ensemble des macros, ma macro a même disparue ...
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
27 -
La macro n'a pas disparu. Il ne s'agit pas d'une macro, en fait pas d'un module. Il s'agit d'un code exécuté à chaque changement de sélection sur la feuille.

Dans l'onglet "Développeur", cliquer sur "Visual Basic". Double cliquez sur votre feuille dans le panneau de gauche en haut. En dessous de Microsoft Excel Objects (Feuil 1 normalement).

Copier le code suivant :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim DL As Long, i As Long

DL = Cells(Application.Rows.Count, 1).End(xlUp).Row 'A adapter, 1 est la colonne de référence pour savoir quelle est ta dernière ligne (mettre le numéro de colonne qui est remplie le plus bas du tableau)

For i = 1 To DL 'A adapter également, 1 est le numéro de la ligne où commence le code

If Range("B" & i) = "Non" Then 'Si la cellule B de la ligne i est égale à "Non" alors...

    Rows(i).Hidden = True 'Masquer la ligne concernée (i)

End If

Next i

End Sub


Le coller dans la partie blanche de droite.

Sortir et essayer. (le code s'exécute à chaque fois que vous sélectionnez n'importe quelle cellule de la feuille).

Cordialement.
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
27 -
Si ca ne marche pas, je vous propose de m'envoyer un fichier anonymé via le site www.cjoint.com.

Cordialement.
michel_m
Messages postés
15966
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 novembre 2019
2822 -
je ne sais pas si c'est à moi que tu répondais (bonjour, michel?)
j'ai rectifié un truc ou deux (end if supprimé) mais je viens de tester avec succès ma proposition suivant ta demande:
dans la cellule B4 j'ai le choix de sélectionner "Oui" ou "Non", Si B4 = "Non" je voudrais que la ligne 5 (en entier) soit masquée.
le code modifié
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$B$4" Then 'limite l'action au changement dans B4
    If Target = "Non" Then Rows(5).Hidden = True 'ligne 5 cachée
    If Target = "Oui" Then Rows(5).Hidden = False
    'si B4 vide: aucune action
End If
End Sub
Messages postés
5
Date d'inscription
lundi 3 août 2015
Statut
Membre
Dernière intervention
4 août 2015
0
Merci
Bonjour et merci Kuartz et Michel,
mon problème semble résolu ! (pour l'instant!)

J'essaye d'appliquer cela dans mes différentes situations !
Merci encore