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 :

Bug sur sélections multiples (par inadvertance)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 656
    Par défaut Bug sur sélections multiples (par inadvertance)
    Bonjour,

    Si, par inadvertance, je clique sur plus d'une cellule de la plage "AF11:AF28", cela génère une erreur... compréhensible.

    Pour essayer de corriger ça,
    j'ai remplacé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Row > 10 And Target.Row < 29 And Target.Column = 32 Then
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not Application.Intersect(Target, Range("AF11:AF28")) Is Nothing Then
    .

    Mais, le problème reste manifestement entier !
    Ici le code un peu plus complet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    '-- remplace ligne suivante --
        If Not Application.Intersect(Target, Range("AF11:AF28")) Is Nothing Then
     
        '-- remplacé par ligne antérieure :
    '    If Target.Row > 10 And Target.Row < 29 And Target.Column = 32 Then   'colonne AF
        '--
     
        If Target.Offset(0, 2).Value = "<<" Then
            Target.Offset(0, 2).Value = ""
        Else
            Target.Offset(0, 2).Value = "<<"
        End If
    J'en appelle donc à vos lumières et vous remercie d'avance pour votre aide.
    Cdt

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Peux-tu s'il te plait mieux définir sur ce que tu entends par "cliquer deux fois" ?
    Comme il n'est pas possible de recliquer sur une cellule déjà cliquée, je suppose que tu veux dire que tu ne veux plus changer la valeur "<<" attribuée par un clic, y compris si tu y "reviens" ultérieurement.
    Est-ce cela, que tu veux dire ?

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Regarde alors (exemple) ce petit jeu rigolo de "n'y revenez pas"
    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
    Private plage As Range
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     If plage Is Nothing Then Set plage = Columns(Columns.Count)
      If Not Application.Intersect(Target, plage) Is Nothing Then
       Exit Sub
     End If
     If Not Application.Intersect(Target, Range("A1:A28")) Is Nothing Then
        If Target.Offset(0, 2).Value = "<<" Then
            Target.Offset(0, 2).Value = ""
        Else
            Target.Offset(0, 2).Value = "<<"
        End If
     End If
      Set plage = Union(plage, Target)
    End Sub

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Je pense qu'il veut parler d'une sélection multiple.
    Au quel cas, un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim c As Range
     
    If Not Intersect(Target, Range("AF11:AF28")) Is Nothing Then
        For Each c In Intersect(Target, Range("AF11:AF28"))
            If c.Offset(0, 2).Value = "<<" Then
                c.Offset(0, 2).Value = ""
            Else
                c.Offset(0, 2).Value = "<<"
            End If
        Next c
    End If
    End Sub

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    puisqu'il parle "d'inadvertance", j'entend par là qu'il souhaite que le traitement de l'évènement ne s'applique qu'en cas de sélection d'une seule cellule.


    Si tel est le cas, ajouter cette condition au début de la procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Cells.Count > 1 Then Exit Sub

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Effectivement joe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Boucle pour une sélection multiple par nom sur un tableau croisé dynamique VBA
    Par kuro200 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/06/2015, 20h31
  2. [Toutes versions] Fonction matricielle sur sélection multiple
    Par max76 dans le forum Excel
    Réponses: 5
    Dernier message: 11/02/2014, 18h36
  3. récupérer sélection multiple par souris
    Par clarinnette dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/03/2011, 16h44
  4. Retour de sélection multiple par SQL dynamique
    Par samworld dans le forum PL/SQL
    Réponses: 6
    Dernier message: 20/11/2008, 08h43
  5. [Upload] bug sur upload multiple d'envoi d'images
    Par fabien14 dans le forum Langage
    Réponses: 3
    Dernier message: 13/08/2006, 12h05

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