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

Le
david anceau
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Brunos
Le #5148111
"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

david anceau
Le #5148101
On 4 fév, 11:50, "Brunos"
"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)


JB
Le #5148061
Bonjour,

http://cjoint.com/?cemtO75VCa

JB
http://boisgontierjacques.free.fr

On 4 fév, 11:28, david anceau
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


Daniel.C
Le #5148031
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"
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
Brunos
Le #5148021
On 4 fév, 11:50, "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


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



david anceau
Le #5147941
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
david anceau
Le #5147931
Pardon,
lire

If Target.Address <> comboBox.value Then Exit Sub
au lieu de
If Target.Address <> "HER" Then Exit Sub
Daniel.C
Le #5147911
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"
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
david anceau
Le #5147861
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 ;-))
Daniel.C
Le #5147851
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"
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 ;-))
Publicité
Poster une réponse
Anonyme