Sélection cellules
GTA54
Messages postés
499
Statut
Membre
-
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'aimerais savoir si il était possible de définir des conditions de sélection de cellules ?
Je m'explique :
J'ai un fichier où l'utilisateur doit rentrer des "x" en colonne K en face de chaque ligne qu'il veut masquer. Par exemple, l'utilisateur met un "x" en cellule K7 et c'est toute la ligne 7 du fichier qui se masque.
Voici la macro :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 11 Then Exit Sub 'Si la colonne de la cellule modifiée n'est pas la G, alors sortie de l'évènement
If Target.Value = "x" Or "X" Then Rows(Target.Row).Hidden = True 'j'ai utilisé x comme ton exemple à toi de voir ce que tu veux vraiment, !! la casse est importante sinon utiliser ucase("x")
Cells(Target.Row + 1, 11).Select 'se place en dessous de la cellule modifiée, au cas ou l'utilisateur valide par Tab ou flèche droite...
End Sub
Ensuite, si je veux réafficher toutes les lignes, c'est cette macro qui s'exécute :
Private Sub CommandButton1_Click()
Sheets("Plan contrôle GENERIQUE").Cells.EntireRow.Hidden = False
End Sub
Une fois les lignes affichées, il reste toujours les "x" que l'opérateur a mis auparavant. Et c'est maintenant que ça coince ... Si il supprime les "x" des cellules une par une, la macro fonctionne. Mais si il fait une sélection de plusieurs cellules afin de supprimer plusieurs "x", la macro m'affiche un message d'erreur ....
J'aimerais donc savoir si une astuce existait afin que l'opérateur ne puisse pas faire une sélection multiple (seulement en colonne K) afin qu'il sélectionne puis supprime cellule par cellule ... Ce n'est peut-être pas la meilleure solution, et je vous écoute si vous en avez d'autre également !
Merci d'avance.
J'aimerais savoir si il était possible de définir des conditions de sélection de cellules ?
Je m'explique :
J'ai un fichier où l'utilisateur doit rentrer des "x" en colonne K en face de chaque ligne qu'il veut masquer. Par exemple, l'utilisateur met un "x" en cellule K7 et c'est toute la ligne 7 du fichier qui se masque.
Voici la macro :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 11 Then Exit Sub 'Si la colonne de la cellule modifiée n'est pas la G, alors sortie de l'évènement
If Target.Value = "x" Or "X" Then Rows(Target.Row).Hidden = True 'j'ai utilisé x comme ton exemple à toi de voir ce que tu veux vraiment, !! la casse est importante sinon utiliser ucase("x")
Cells(Target.Row + 1, 11).Select 'se place en dessous de la cellule modifiée, au cas ou l'utilisateur valide par Tab ou flèche droite...
End Sub
Ensuite, si je veux réafficher toutes les lignes, c'est cette macro qui s'exécute :
Private Sub CommandButton1_Click()
Sheets("Plan contrôle GENERIQUE").Cells.EntireRow.Hidden = False
End Sub
Une fois les lignes affichées, il reste toujours les "x" que l'opérateur a mis auparavant. Et c'est maintenant que ça coince ... Si il supprime les "x" des cellules une par une, la macro fonctionne. Mais si il fait une sélection de plusieurs cellules afin de supprimer plusieurs "x", la macro m'affiche un message d'erreur ....
J'aimerais donc savoir si une astuce existait afin que l'opérateur ne puisse pas faire une sélection multiple (seulement en colonne K) afin qu'il sélectionne puis supprime cellule par cellule ... Ce n'est peut-être pas la meilleure solution, et je vous écoute si vous en avez d'autre également !
Merci d'avance.
A voir également:
- Sélection cellules
- Verrouiller cellules excel - Guide
- Excel additionner plusieurs cellules - Guide
- Fusionner deux cellules excel - Guide
- Afficher cellules masquées excel ✓ - Forum Excel
- Remettre toutes les colonnes et les lignes masquées ✓ - Forum Excel
5 réponses
Bonjour,
Pourquoi ne pas laisser la possibilité de faire une sélection multiple et simplement gérer l'erreur, il suffit en début de code insérer cette ligne
On Error Resume Next
Pourquoi ne pas laisser la possibilité de faire une sélection multiple et simplement gérer l'erreur, il suffit en début de code insérer cette ligne
On Error Resume Next
Re,
Tu peux joindre ton fichier sans note confidentielle que je vois, avec ce lien
https://www.cjoint.com/
Tu peux joindre ton fichier sans note confidentielle que je vois, avec ce lien
https://www.cjoint.com/
Bonjour,
Cela ne répond pas exactement à la question mais pour résoudre le problème je pense qu'il est préférable de supprimer la cause de l'erreur et aussi de pouvoir écrire ou effacer plusieurs X à la fois.
Nota : Pour écrire (et donc masquer) sur plusieurs lignes à la fois, sélectionner la plage de la colonne K, saisir X (sans dé-sélectionner) puis valider par Maj+Ctrl+Entrée
Cela ne répond pas exactement à la question mais pour résoudre le problème je pense qu'il est préférable de supprimer la cause de l'erreur et aussi de pouvoir écrire ou effacer plusieurs X à la fois.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Target.Column <> 11 Then Exit Sub
If Target.Columns.Count > 1 Then Exit Sub
If Intersect(Target, UsedRange) Is Nothing Then Exit Sub
For Each c In Intersect(Target, UsedRange).Cells
If UCase(c.Value) = "X" Then
c.EntireRow.Hidden = True
Cells(c.Row + 1, 11).Select
End If
Next c
End Sub
Nota : Pour écrire (et donc masquer) sur plusieurs lignes à la fois, sélectionner la plage de la colonne K, saisir X (sans dé-sélectionner) puis valider par Maj+Ctrl+Entrée
Re,
l'erreur est normale, le code prévoit le déclenchement à la cellule Target, tu sélectionne plusieurs cellules Excel ne comprend pas et se met en erreur cette ligne de code en début des deux codes doit supprimer l'erreur
On Error Resume Next
si cela ne suffit pas il est possible de gérer l'erreur d'une autre façon
l'erreur est normale, le code prévoit le déclenchement à la cellule Target, tu sélectionne plusieurs cellules Excel ne comprend pas et se met en erreur cette ligne de code en début des deux codes doit supprimer l'erreur
On Error Resume Next
si cela ne suffit pas il est possible de gérer l'erreur d'une autre façon
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Une proposition qui traite la plage modifiée (en suppression ou en ajout avec Shift+Ctrl+Entrée):
Mais il te faut également une macro qui remasque les X non effacés sur la colonne puisqu'ils ne sont pas concernés par l'évènement change :
Tu pourrais ne faire qu'un seul bouton qui alternativement affiche tout ou masque.
https://www.cjoint.com/?CFDnZUAycbv
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Une proposition qui traite la plage modifiée (en suppression ou en ajout avec Shift+Ctrl+Entrée):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Target.Column <> 11 Then Exit Sub
For Each c In Target
c.EntireRow.Hidden = UCase(c) = "X"
Next c
End Sub
Mais il te faut également une macro qui remasque les X non effacés sur la colonne puisqu'ils ne sont pas concernés par l'évènement change :
Private Sub CommandButton2_Click()
Dim lig As Long
Application.ScreenUpdating = False
For lig = 2 To Cells(Rows.Count, "K").End(xlUp).Row
If UCase(Cells(lig, "K")) = "X" Then Rows(lig).Hidden = True
Next lig
Application.ScreenUpdating = True
End Sub
Tu pourrais ne faire qu'un seul bouton qui alternativement affiche tout ou masque.
https://www.cjoint.com/?CFDnZUAycbv
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Merci !
En fait quand j'utilises mon bouton pour afficher toutes les lignes, toutes les lignes s'affichent, je vois bien les x... et au moment où je fais la sélection des "x" puis appuie sur Supp, les "x" se suppriment mais les lignes (où il y avait des "x") se masque à nouveau ! Je ne comprends pas...