IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

enlever une cellule d'une zone


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut enlever une cellule d'une zone
    Bonjour à toutes et tous


    Je crée une zone de cellules excel avec un clic droit de la souris sur les cellules qui m'intéressent.
    à chaque clic je fais une union avec la zone précédente. Ceci fonctionne très bien!
    Mais Je voudrais si je clique sur une cellule qui existe dans la zone elle soit enlevée de cette zone. c'est là que je bloque.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)   
            Cancel = True  
            If nb_cel_zone = 9 Then
                MsgBox "vous devez changer de zone"
                Exit Sub
            Else
                If nb_cel_zone = 0 Then
                    Set zone = Target
                    Target.Interior.Color = couleur
                    nb_cel_zone = nb_cel_zone + 1
                    Target.Value = nb_cel_zone
                Else
                    If Not Intersect(Target, zone) Is Nothing Then
                        Target.Interior.Color = couleur_vide 
                        nb_cel_zone = nb_cel_zone - 1
                        Target.Value = ""
                        ici il faudrait que je puisse enlever la "target" de la zone 
                    Else
                        Target.Interior.Color = couleur
                        nb_cel_zone = nb_cel_zone + 1
                        Target.Value = nb_cel_zone
                        Set zone = Union(zone, Target)
                    End If
                    
                End If
            End If
            If nb_cel_zone = 9 Then
                zone.Name = nom_zone
            End If
    
    End Sub

  2. #2
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    A voir : https://www.developpez.net/forums/d1...les-d-plage-b/

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)   
            Cancel = True  
            If nb_cel_zone = 9 Then
                MsgBox "vous devez changer de zone"
                Exit Sub
            Else
                If nb_cel_zone = 0 Then
                    Set zone = Target
                    Target.Interior.Color = couleur
                    nb_cel_zone = nb_cel_zone + 1
                    Target.Value = nb_cel_zone
                Else
                    If Not Intersect(Target, zone) Is Nothing Then
                        Target.Interior.Color = couleur_vide 
                        nb_cel_zone = nb_cel_zone - 1
                        Target.Value = ""
                        ici il faudrait que je puisse enlever la "target" de la zone 
                        Set zone = enlever_plage(zone, Target)
                    Else
                        Target.Interior.Color = couleur
                        nb_cel_zone = nb_cel_zone + 1
                        Target.Value = nb_cel_zone
                        Set zone = Union(zone, Target)
                    End If
     
                End If
            End If
            If nb_cel_zone = 9 Then
                zone.Name = nom_zone
            End If
     
    End Sub
     
        Private Function enlever_plage(a As Range, b As Range) As Range
        Dim AFormula
            Set b = Intersect(a, b)
            If b Is Nothing Then Set enlever_plage = a: Exit Function
            AFormula = a.Formula
            a.Value = "XXX": b.ClearContents
            On Error Resume Next
            Set enlever_plage = a.SpecialCells(xlCellTypeConstants)
            If Err.Number > 0 Then Set enlever_plage = Nothing
            a.Formula = AFormula
        End Function

Discussions similaires

  1. Problème pour enlever une zone de liste déroulante
    Par android59 dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 09/04/2020, 08h31
  2. [VBA-E] alimenter combo depuis une zone de cellules (non determinée)
    Par LostIN dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/12/2006, 11h24
  3. [VBA Excel] Parcourir une zone de cellules
    Par Jipété dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 27/11/2006, 09h38
  4. masquer les lignes dans une zone si une cellule de la ligne est vide
    Par keguira dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/11/2006, 18h21
  5. Enlever une valeur dans une zone de liste
    Par léti07 dans le forum Access
    Réponses: 20
    Dernier message: 23/09/2006, 06h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo