Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

effacer contenu d'une colonnes en fonction de son intitulé.

11 réponses
Avatar
david anceau
Bonjour,
Je souhaite pouvoir apr=E8s avoir fait un choix dans un menu d=E9roulant,
effacer le contenu, puis masquer toutes les colonnes qui ne
contiennent pas le nom choisit.

Exemple : Si dans mon menu deroulant je choisit "TOTO" alors le
contenu de toutes les colonnes (contenu dans un "range" donn=E9s) ne
contenant pas en A1 "TOTO" est effac=E9, puis masqu=E9.

Apr=E8s des recherches infructueuse, je poste dans ce groupe.

Merci pour votre aide pr=E9cieuse... ;-)
David

10 réponses

1 2
Avatar
Brunos
"david anceau" nous a écrit
Je souhaite pouvoir après avoir fait un choix dans un menu déroulant,
effacer le contenu, puis masquer toutes les colonnes qui ne
contiennent pas le nom choisit.

Exemple : Si dans mon menu deroulant je choisit "TOTO" alors le
contenu de toutes les colonnes (contenu dans un "range" donnés) ne
contenant pas en A1 "TOTO" est effacé, puis masqué.


Tu peux faire ça facilement avec le filtre automatique, MAIS (il y a un
mais :-() ton tableau doit être organisé différemment.
Il faut transposer ton tableau : mettre tes données en colonnes. Puis
activer le filtre, et masquer les lignes que tu souhaites en fonction du
filtrage.
--
Brunos

Avatar
david anceau
On 4 fév, 11:50, "Brunos" wrote:
"david anceau" nous a écrit

Je souhaite pouvoir après avoir fait un choix dans un menu déroulant ,
effacerle contenu, puis masquer toutes les colonnes qui ne
contiennent pas le nom choisit.

Exemple : Si dans mon menu deroulant je choisit "TOTO" alors le
contenu de toutes les colonnes (contenu dans un "range" donnés) ne
contenant pas en A1 "TOTO" est effacé, puis masqué.


Tu peux faire ça facilement avec le filtre automatique, MAIS (il y a un
mais :-() ton tableau doit être organisé différemment.
Il faut transposer ton tableau : mettre tes données en colonnes. Puis
activer le filtre, et masquer les lignes que tu souhaites en fonction du
filtrage.
--
Brunos


Merci Bruno, malheureusement ce fichier n'est pas modifiable...(il
s'agit d'une sorte de matrice de saisie pour différentes personnes)


Avatar
JB
Bonjour,

http://cjoint.com/?cemtO75VCa

JB
http://boisgontierjacques.free.fr

On 4 fév, 11:28, david anceau wrote:
Bonjour,
Je souhaite pouvoir après avoir fait un choix dans un menu déroulant,
effacer le contenu, puis masquer toutes les colonnes qui ne
contiennent pas le nom choisit.

Exemple : Si dans mon menu deroulant je choisit "TOTO" alors le
contenu de toutes les colonnes (contenu dans un "range" donnés) ne
contenant pas en A1 "TOTO" est effacé, puis masqué.

Après des recherches infructueuse, je poste dans ce groupe.

Merci pour votre aide précieuse... ;-)
David


Avatar
Daniel.C
Bonjour.
Admettons que le menu déroulant soit en A1 (Validation de données), mets
dans le code de la feuille :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Target.Address <> "$A$1" Then Exit Sub
[Plage].Columns.Hidden = False
For Each c In Intersect([Plage], Rows(1))
If c <> Target Then
c.EntireColumn.ClearContents
c.EntireColumn.Hidden = True
End If
Next c
End Sub

"Plage" correspond à ton range de données.
Cordialement.
Daniel
"david anceau" a écrit dans le message de news:

Bonjour,
Je souhaite pouvoir après avoir fait un choix dans un menu déroulant,
effacer le contenu, puis masquer toutes les colonnes qui ne
contiennent pas le nom choisit.

Exemple : Si dans mon menu deroulant je choisit "TOTO" alors le
contenu de toutes les colonnes (contenu dans un "range" donnés) ne
contenant pas en A1 "TOTO" est effacé, puis masqué.

Après des recherches infructueuse, je poste dans ce groupe.

Merci pour votre aide précieuse... ;-)
David
Avatar
Brunos
On 4 fév, 11:50, "Brunos" wrote:
"david anceau" nous a écrit
Je souhaite pouvoir après avoir fait un choix dans un menu
déroulant,
effacer le contenu, puis masquer toutes les colonnes qui ne
contiennent pas le nom choisit.
Exemple : Si dans mon menu deroulant je choisit "TOTO" alors le
contenu de toutes les colonnes (contenu dans un "range" donnés) ne
contenant pas en A1 "TOTO" est effacé, puis masqué.


Tu peux faire ça facilement avec le filtre automatique, MAIS (il y a
un
mais :-() ton tableau doit être organisé différemment.
Il faut transposer ton tableau : mettre tes données en colonnes. Puis
activer le filtre, et masquer les lignes que tu souhaites en fonction
du
filtrage.
--
Brunos


Merci Bruno, malheureusement ce fichier n'est pas modifiable...(il
s'agit d'une sorte de matrice de saisie pour différentes personnes)


Dans ce cas le masquage ne me semble possible qu'en VBA.
Voici comment je ferais:

1. Menu déroulant:
Avec Validation/Données. Le menu peut avoir une liste fixe, ou la liste
peut être alimentée par une plage nommée du classeur.
2. Masquage des colonnes en VBA
- déclencher l'action quand la valeur du filtre change (évènement
Worksheet_Change)
- supprimer le précédent filtre (Cells.EntireColumn.Hidden = False)
- passer en revue les colonnes (boucle for each C in Selection.Columns),
tester la présence du filtre et masquer les colonnes choisies (Hidden =
True).

Bon courage!
--
Brunos



Avatar
david anceau
Merci à tous...
Cependant je bloque encore ;-)

J'ai dans un userform :

1°) ma liste déroulante avec ce code :

Private Sub UserForm_Initialize()

ComboBox1.ColumnCount = 1
ComboBox1.List() = Array("VIL", "SER", "BAI", "HER", "LVB", "PON",
"AUB", "CHE", "CHM", "CRE", "PLA", "NIM", "REN", "IVR", "PGS", "ROS",
"TOB", "NAN", "PRG", "TOC", "ORL", "AMI", "BLO", "PAU", "MON", "GRI",
"BUC", "WIT", "COU", "SML", "TOU", "CER", "PAC", "DEA", "COL", "VEL",
"CAB", "PEL", "ARC", "SQT", "LUL", "LEM", "AVI", "QUI", "ISN", "LOR",
"TRE", "BAR", "GOU", "ROC", "ANG", "GIS", "EXT1", "EXT2", "EXT3",
"EXT4", "EXT5")


End Sub

Le code du bouton de validation dans lequel je souhaite exécuter le
code de Daniel C

Private Sub Valider_Click()
If MsgBox("vous avez choisi : " & ComboBox1.Value & " êtes vous sûr?",
vbOKCancel) = vbOK Then --> c'est là que je voudrai déclencher le code
de Sub efface... Mais avec un "call" cela ne fonctionne pas...

End If
End Sub



Private Sub efface(ByVal Target As Range)
Dim c As Range
If Target.Address <> "HER" Then Exit Sub
Range("A6:N6").Columns.Hidden = False
For Each c In Intersect(Range("A6:N6"), Rows(1))
If c <> Target Then
c.EntireColumn.ClearContents
c.EntireColumn.Hidden = True
End If
Next c
End Sub


Merci d'avance
Avatar
david anceau
Pardon,
lire

If Target.Address <> comboBox.value Then Exit Sub
au lieu de
If Target.Address <> "HER" Then Exit Sub
Avatar
Daniel.C
Private Sub Valider_Click_Click()
If MsgBox("vous avez choisi : " & ComboBox1.Value & " êtes vous sûr?", _
vbOKCancel) = vbOK Then
Dim c As Range
[Plage].Columns.Hidden = False
For Each c In Intersect([Plage], Rows(1))
If c <> Me.ComboBox1.Value Then
c.EntireColumn.ClearContents
c.EntireColumn.Hidden = True
End If
Next c
End If

End Sub

Daniel
"david anceau" a écrit dans le message de news:

Merci à tous...
Cependant je bloque encore ;-)

J'ai dans un userform :

1°) ma liste déroulante avec ce code :

Private Sub UserForm_Initialize()

ComboBox1.ColumnCount = 1
ComboBox1.List() = Array("VIL", "SER", "BAI", "HER", "LVB", "PON",
"AUB", "CHE", "CHM", "CRE", "PLA", "NIM", "REN", "IVR", "PGS", "ROS",
"TOB", "NAN", "PRG", "TOC", "ORL", "AMI", "BLO", "PAU", "MON", "GRI",
"BUC", "WIT", "COU", "SML", "TOU", "CER", "PAC", "DEA", "COL", "VEL",
"CAB", "PEL", "ARC", "SQT", "LUL", "LEM", "AVI", "QUI", "ISN", "LOR",
"TRE", "BAR", "GOU", "ROC", "ANG", "GIS", "EXT1", "EXT2", "EXT3",
"EXT4", "EXT5")


End Sub

Le code du bouton de validation dans lequel je souhaite exécuter le
code de Daniel C

Private Sub Valider_Click()
If MsgBox("vous avez choisi : " & ComboBox1.Value & " êtes vous sûr?",
vbOKCancel) = vbOK Then --> c'est là que je voudrai déclencher le code
de Sub efface... Mais avec un "call" cela ne fonctionne pas...

End If
End Sub



Private Sub efface(ByVal Target As Range)
Dim c As Range
If Target.Address <> "HER" Then Exit Sub
Range("A6:N6").Columns.Hidden = False
For Each c In Intersect(Range("A6:N6"), Rows(1))
If c <> Target Then
c.EntireColumn.ClearContents
c.EntireColumn.Hidden = True
End If
Next c
End Sub


Merci d'avance
Avatar
david anceau
Merci Daniel,
C'est exactement ce que je souhaite, le code est intégré dans mon
bouton de validation.
J'ai encore une erreur 424 sur la ligne

For Each c In Intersect([Plage], Rows(1))

Une idée ? (je sais je vais finir par m'attribuer le boulet d'or de la
journée... Je suis bien meilleur en PHP ;-))
Avatar
Daniel.C
J'ai défini avec le nom "Plage" la plage de données à l'intérieur les
colonnes sont masquées.
Ou tu fais pareil, ou tu changes le nom, ou tu rentres l'adresse de la plage
:
For Each c In Intersect(Range("C:J"), Rows(1))
Daniel
"david anceau" a écrit dans le message de news:

Merci Daniel,
C'est exactement ce que je souhaite, le code est intégré dans mon
bouton de validation.
J'ai encore une erreur 424 sur la ligne

For Each c In Intersect([Plage], Rows(1))

Une idée ? (je sais je vais finir par m'attribuer le boulet d'or de la
journée... Je suis bien meilleur en PHP ;-))
1 2