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 :

Utiliser la commande "OnDoubleClick" sur quelques cellules [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 142
    Par défaut Utiliser la commande "OnDoubleClick" sur quelques cellules
    Bonjour,

    J'utilise la commande "OnDoubleClick" comme suit pour afficher un message box :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub auto_open()
    Sheets("En cours").OnDoubleClick = "AppelNumeroSemaine"
    end sub
    la procédure "AppelNumeroSemaine" affiche des données en fonction de la position du double-clic (dans mon cas entre les colonnes 11 et 53). Je souhaiterais pouvoir, lorsque je double-clic hors de cet intervalle, avoir accès en modification direct dans la cellule mais je n'ai pas la main.
    Auriez-vous une solution à ce problème ?

    Je vous remercie par avance
    Ma config :Windows XP & Excel 2003

    MichaSarah

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Peut etre en utilisant les événements des feuilles de calcul
    dans le code de ta feuille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
    End Sub
    Tu utilise target pour tester la zone du double clique

    Après je n'ai pas compris ta phrase, mais pour savoir si on clique hors d'une zone

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if intersect(target, range("A1:D5") is nothing then
    J'espère que cela te conviendra.
    Bonne soirée

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut MichaSarah et le forum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not (Intersect(Target, Range(Cells(1, 11), Cells(65536, 53))) Is Nothing) Then
    'si ça concerne l'interval des colonnes 11 à 53 (incluses), alors
        Cancel = True
        'annule le passage en mode édition
        Call AppelNumeroSemaine
        'appelle la macro
        Exit Sub
        'on sort
    End If
    'traitement hors des colonne 11 à 53
    End Sub
    Ce qu'a dit Krovax, en plus explicite (à mettre dans le module lié à la feuille "En cours" - Clic-droit sur nom de l'onglet>>Visualiser le code).
    A+

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 142
    Par défaut
    Bonjour Krovax & Gorfael,
    Encore merci pour votre aide celà fonctionne. Pourriez vous m'éclairer à nouveau de vos lumières pour compléter la procédure. Je souhaiterais en plus du déclenchement du double-clic dans l'intervalle (colonnes 11 à 53 ) pouvoir l'utiliser par exemple sur la colonne 1 et la 60. Comment puis-je intégrer ces 2 paramètres ?
    Pour info ci-dessous la procédure "AppelNumeroSemaine"
    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
     
    Sub AppelNumeroSemaine()
        Sheets("En cours").Select
        libesoins = ActiveCell.Row 'range
        cobesoins = ActiveCell.Column
     
       If libesoins < 3 Then Exit Sub
     
       If (cobesoins > 11 And cobesoins < 53) And Cells(libesoins, cobesoins) = "Date1" And Cells(libesoins, 8) = "" Then
           Call Numero_de_Semaine1
       ElseIf cobesoins = 1 And Cells(libesoins, 8) = "" Then
           Call Numero_de_Semaine1
       ElseIf (cobesoins > 11 And cobesoins < 53) And Cells(libesoins, cobesoins) = "Date1" And Cells(libesoins, 8) <> "" Then
           Call Numero_de_Semaine2
       ElseIf cobesoins = 1 And Cells(libesoins, 8) <> "" Then
           Call Numero_de_Semaine2
       End If
     
    End Sub
    Numero_de_Semaine1 & Numero_de_Semaine2 affichent une msgbox avec des dates

    merci
    salutations

    MichaSarah

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut MichaSarah et le forum
    Pas sûr de bien comprendre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    If Not (Intersect(Target, Range(Cells(1, 11), Cells(65536, 53))) Is Nothing) Then
    'si ça concerne l'interval des colonnes 11 à 53 (incluses), alors
        Cancel = True
        'annule le passage en mode édition
       'le traitement des colonnes 11 à 53
    End If
    IfNot (Intersect(Target, Range(Cells(1, 1), Cells(65536, 1))) IsNothing) Then
        Cancel = True
    'traitement de la colonne 1
    EndIf
    IfNot (Intersect(Target, Range(Cells(1, 60), Cells(65536, 60))) IsNothing) Then
        Cancel = True
    'traitement de la colonne 60
    EndIf
    A+

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 142
    Par défaut
    Bonjour Gorfael,

    Super, c'est ce que je cherchais.

    encore merci

    Bonne fin de WE

    MichaSarah

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

Discussions similaires

  1. Utilisation de l'évenement double clic sur une cellule
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 01/07/2008, 14h57

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