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 :

Target et double clic [XL-2007]


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
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut Target et double clic
    Bonjour à tous. Voici mon bout de 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
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
    If Target = Range("D5").Select Or Range("E5").Select Or Range("J5").Select Or Range("K5").Select Or Range("Q5").Select Then
        If ActiveCell.Value = "imprimé" Then
        ActiveCell.Value = "Masqué à l'impression"
        ActiveCell.Offset(0, 1).Select
        Exit Sub
        End If
     
            If ActiveCell.Value = "Masqué à l'impression" Then
            ActiveCell.Value = "imprimé"
            ActiveCell.Offset(0, 1).Select
            Exit Sub
            End If
     
    End If
     
    End Sub
    Mon but est de permettre à l'utilisateur de décider s'il désir que cette colonne sera imprimé ou non en indiquant un rappel dans ces cellules.

    Mon problème est que si je double clic sur D5, cela va modifier Q5 sans avoir d'action sur D5.

    Quelqu'un peut m'aider et me dire mon erreur.

    Merci

    Dlight

  2. #2
    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
    Ta condition est bizarre, Target est une variable objet de type Range

    Essaies comme ceci pour changer le texte à l'intérieur des cellules double-cliquées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Const Masq As String = "Masqué à l'impression"
    Const Impr As String = "imprimé"
     
    If Target = Range("A1").Select Then MsgBox "baba"
    If InStr("|D5|E5|J5|K5|Q5|", Target.Address(0, 0)) Then
        Cancel = True
        Target.Value = IIf(Target.Value = Impr, Masq, Impr)
        Target.Offset(0, 1).Select
    End If
    End Sub

  3. #3
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut target et double clic
    Bonjour Mercatog,

    J'étais en train de faire des essais de code sans succès avant de découvrir ta réponse.
    Quelques questions sur ton code que j'ai testé:

    - Je comprends que (0,0) de "address" revient, dans une instruction 'instr', à écrire l'adresse de la cellule double cliqueté puisque sauf erreur l'adresse (0,0) n'existe pas. Est-ce bien cela ? l'aide F1 ne dit rien sur ce point.

    - cancel = true doit, si j'ai bien compris mes lectures, restituer l'action par défaut du double clic.
    je comprends bien qu'il faille cette instruction, par exemple, pour un clic droit qui appel par défaut le menu contextuel mais que fait "BeforeDoubleClick" par défaut ? La suppression de "cancel = true" ne semble rien altérer par ailleurs.

    - De même, vu les griefs constantes fait au "select" sur ce site je l'ai supprimé pour voir : Il semble que son absence soit sans conséquence.

    Pour le reste du code tout est limpide pour moi.

    Cordialement,

  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
    Help sur Address
    Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo)
    Range("A1").Address(0,0) revient à Range("A1").Address(False,False) c'est à dire, A1 à la place de $A$1 au cas où RowAbsolute et ColumnAbsolute sont omis.

    Quand on double clique sur une cellule, on met le curseur à l'intérieur de la cellule

    Le Cancel=True permet d'éviter cela. Dans notre cas, après double clique en sélectionne la cellule à droite. De ce faite, le curseur à l'intérieur n'est pas tellement visible.

    Pour le Select, l'utilisateur veut bien sélectionner la cellule de droite après double clique pour une raison qu seul l'intéressé pourra expliquer.

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut Re
    Merci à vous mercatog d'avoir pris le temps de me répondre. Cela fonctionne parfaitement !



    Merci à vous nibledispo d'avoir ajouté une demande d'explications. Cela va me permettre de lire sur le sujet et comprendre le code et l'utiliser dans d'autres situations et merci à nouveau à mercotog d'y avoir ajouté une réponse.

    J'ai quand même une question :

    quelle est la raison du "msgbox" dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target = Range("A1").Select Then MsgBox "baba"
    Merci à l'avance

    Dlight

  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
    La ligne 5 est une ligne totalement inutile mise pour vous montrer que votre condition initiale était bizarre.

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

Discussions similaires

  1. comment autoriser le double clic sur un champ desactivé ?
    Par linou dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 28/04/2005, 17h23
  2. [VB.NET] Ouvrir fichier dans appli par double-clic dessus
    Par vynce dans le forum Windows Forms
    Réponses: 4
    Dernier message: 29/03/2005, 16h43
  3. ListBox, Cases à cocher et Double-Clic
    Par Loïc dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/02/2005, 10h18
  4. Ouvrir un fichier sur un double-clic dans une TListBox
    Par SegmentationFault dans le forum Composants VCL
    Réponses: 4
    Dernier message: 09/08/2004, 17h22
  5. [débutant] Listview et double-clic
    Par Runlevel dans le forum C++Builder
    Réponses: 12
    Dernier message: 29/06/2004, 19h44

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