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 :

Lancer une procedure par selection de cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 41
    Par défaut Lancer une procedure par selection de cellule
    Bonjour a tous !

    Alors mon probleme est tout simple. J'aimerai savoir quel est precisement le code a taper pour faire de sorte que lorsque je selectionne une cellule au hasard de ma feuille excel, et ben une procedure se lance automatiquement.

    J'ai fait quelques recherches et il semblerait que la procedure a utiliser est
    Worksheet_Activate()

    Le probleme c'est que j'en suis pas si sure et de plus je ne vois pas vraiment la syntaxe a utiliser.

    J'espere avoir ete comprehensible et vous remercie d'avance pour votre aide !

  2. #2
    Membre éprouvé Avatar de zebulon2212
    Inscrit en
    Juin 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2006
    Messages : 77
    Par défaut
    Par simple click je ne connait pas la syntaxe mais pour un dble click voila la syntaxe que j'ai utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
    Dim Plage As Range
    'Si la cellule ciblé est dans la plage précisé
    If Target.Row = 15 And Target.Column < 61 And Target.Column > 1 And Range("BJ7").Locked = False Then
    Call fonction(Target)'Appel de la fonction que tu veux
    End If
    Cancel = True
    End Sub
    ce code doit etre placé sur la feuille qui detecte ta selection de cellule

  3. #3
    Membre confirmé Avatar de Ania
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Par défaut
    Apres un rapide coup d'oeil dans l'aide de VBA

    tu ne peux apparemment pas lancer de procedure directement avec un clique par contre tu peux le faire avec un bouton placé sur ta feuille, ou avant un click droit ou comme l'a dit zebulon2212 avant un double click

    Bon courage et bonne continuation

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 41
    Par défaut
    Avant tout merci pour avoir repondu ^^

    Sinon voila mon code :
    - d'une part, la procedure que je veux lancer
    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
    Sub marquerPlageActive()
     
        Dim a As Long
        If ActiveCell.Row >= 2 And ActiveCell.Row <= 11 And ActiveCell.Column >= 2 And ActiveCell.Column <= 21 Then
            If VerifierVoisin() Then           'Verifie si la cellule n'a pas de cellule voisine de meme couleur.
                ActiveCell.Value = ""
                MsgBox "La plage n'est composee que d'une cellule."
            Else
                Enlever      'Enleve toutes les marques du coup precedent
                Travail ActiveCell.Row, ActiveCell.Column, ActiveCell.Interior.Color    'Marque toutes les cellules voisines de meme couleur.
            End If
        Else
            MsgBox "La cellule doit se trouver dans la plage coloree !"
        End If
     
    End Sub
    Puis ce que j'ai place pour l'appel de cet procedure par double clic comme conseille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        If Target = "" Then
            marquerPlageActive Target  'Appel de la fonction que tu veux
        End If
        Cancel = True
    End Sub
    En fait ce que j'essaie de faire, c'est une version VBA du jeu Same que l'on peut trouver ici et ce morceau de code me permettra de selectionner un cellule quelconque du plateau, d'evaluer le nombre de point que le coup rapportera sans pour autant jouer le coup. Il est alors possible de selectionner une autre cellule afin de comparer le nombre de points... j'espere etre suffisament claire

  5. #5
    Membre éprouvé Avatar de zebulon2212
    Inscrit en
    Juin 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2006
    Messages : 77
    Par défaut
    a quoi ca te sert d'envoyer Target en argument si tu ne le recupere pas ds ta fonction ?
    target est l'adresse de ta cellule, le recuperer peut t'eviter une partie de ton code qui verifie l'emplacement de ta cellule celectionné
    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
    Sub marquerPlageActive(Target as  Range)
     
        Dim a As Long
        If Target.Row >= 2 And Target.Row <= 11 And Target.Column >= 2 And Target.Column <= 21 Then
            If VerifierVoisin() Then           'Verifie si la cellule n'a pas de cellule voisine de meme couleur.
                ActiveCell.Value = ""
                MsgBox "La plage n'est composee que d'une cellule."
            Else
                Enlever      'Enleve toutes les marques du coup precedent
                Travail ActiveCell.Row, ActiveCell.Column, ActiveCell.Interior.Color    'Marque toutes les cellules voisines de meme couleur.
            End If
        Else
            MsgBox "La cellule doit se trouver dans la plage coloree !"
        End If
     
    End Sub
    de la meme maniere envoyer a ta fonction travail 2 variable pour avoir la ligne puis la colonne n'est pas tres habile, il vaudrait mieu en voyer un seul objet de type Range

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 41
    Par défaut
    Merci, ca y est ! Ca marche parfaitement apres ces corrections !

    Mais bon je vais preciser un shtit quelquechose qui pourrait servir aux debutants (vu que c'est un petit peu ma position ^^')

    Ne pas confondre Feuille et Module erf... *va se cacher sous les regards desesperes des moderateurs*

    Encore merci et a tres bientot

  7. #7
    Membre éprouvé Avatar de zebulon2212
    Inscrit en
    Juin 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2006
    Messages : 77
    Par défaut
    N'oublie pas de marquer ce sujet comme résolu sinon le regard des moderateur va vraimment etre desepéré

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 41
    Par défaut
    'A y est, c'est fait !

    *salue ses superieurs et se remet au travail...*

    Vivement la fin des exams -_-
    Bon Courage a tous ceux qui en passent !!!

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

Discussions similaires

  1. [XL-2007] lancer une macro par activation d'une cellule
    Par arctica dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/11/2011, 16h26
  2. Lancer une requête par du code
    Par Kyrha dans le forum Access
    Réponses: 8
    Dernier message: 30/05/2006, 09h10
  3. [VB6] Appeler une procedure par son nom.
    Par kenn dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 24/05/2006, 09h29
  4. lancer une sub par une macro
    Par ganizate dans le forum Access
    Réponses: 2
    Dernier message: 04/04/2006, 15h01
  5. Réponses: 2
    Dernier message: 05/12/2003, 11h37

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