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 :

Cliquer sur une cellule [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Points : 168
    Points
    168
    Par défaut Cliquer sur une cellule
    Bonjour à tous,

    Mon classeur Excel se compose de :

    1) ma feuille 1 ou se situe mes datas

    2) ma feuille 2 colonne A des numéros ( ex: 256 ; 456; 1256) (rien d'autre sur cette feuille)

    Ma question est:

    Quelle est le code VBA pour que lorsque je clique sur mes numéros de ma feuille 2 (ex: 256) je me retrouve avec la ligne 256 de ma feuille 1 de selectionner??

    J'ai vraiment besoin d'aide là dessus car c'est un point clé sur mon projet...

    Merci d'avance
    N'hésitez pas à me poser des questions si je ne suis pas suffisamment claires.

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Code a mettre dans le VBA de la feuille 2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If Target.Column = 1 Then
     
        If Target.Value <> "" And IsNumeric(Target.Value) Then
            Sheets("feuil1").Select
            Sheets("Feuil1").Rows(Target.Value).Select
     
        End If
     
    End If
     
    End Sub

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 138
    Points : 54
    Points
    54
    Par défaut
    jfontaine m'a devancé ^^

    pour avoir tout résultat en double cliquant, il suffit de mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_BeforeDoubleClick

  4. #4
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Points : 168
    Points
    168
    Par défaut
    Merci beaucoup Jérôme ca marche super bien

    Merci pour votre aide

    @+

  5. #5
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Points : 168
    Points
    168
    Par défaut
    Citation Envoyé par guigui71 Voir le message
    jfontaine m'a devancé ^^

    pour avoir tout résultat en double cliquant, il suffit de mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_BeforeDoubleClick
    J'ai pas compris à quoi sert ce code

    lorsque je double clique dessus ça fait quoi?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 138
    Points : 54
    Points
    54
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range)
    remplace le 1er par le 2ème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range)
    Ce code affiche ton résultat uniquement lorsque tu double clique sur ta cellule.

  7. #7
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Points : 168
    Points
    168
    Par défaut
    Merci guigui, ca peut etre interessant, parce qu'un clique peut engendrer des erreurs donc je prend
    Merci

  8. #8
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Points : 168
    Points
    168
    Par défaut
    J'ai un problème qui se posent maintenant lorsque je lance mon programme
    et oui toutes solutions à un problème, non? ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Donc pour le premier code 
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If Target.Column = 1 Then
     
        If Target.Value <> "" And IsNumeric(Target.Value) Then
            Sheets("feuil1").Select
            Sheets("Feuil1").Rows(Target.Value).Select
           End If
     End If
     
    End Sub
    J'ai un problème lors de l'exécution " erreur d'éxecution 13 : incompatibilité de type" sur la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Value <> "" And IsNumeric(Target.Value) Then

  9. #9
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Que contient la cellule ?

  10. #10
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Points : 168
    Points
    168
    Par défaut
    Je vais peut etre préciser mon code, pour mieux que vous compreniez pourquoi ca ne marche 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
    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
     
    Private Sub controle4_Click()
     
    Application.ScreenUpdating = False
    Feuil2.Range("A:A").ClearContents
    Feuil1.Select
    compte=0
    i = 2
    Do
    If Cells(i, 21) <> "" And (Cells(i, 5) = "" Or Cells(i, 3) = "") Then
    Feuil2.Select
    Cells(i , 1) = i 
    Feuil1.Select
    i = i + 1
    compte=compte+1
     
      Else
           i = i + 1
    End If
    Loop Until i = j  'j correspond au nombre de ligne de la base
     
        If compte > 0 Then
        verif_corresp.Caption = "X"
        verif_corresp.ForeColor = RGB(255, 12, 12)
        com_nb_erreur.Caption = "Il y a " & compte & " erreur(s) du même type "
        com_controle4.Caption = "règle: Si Prix tarif N à un prix alors Tar pM et Log N ne sont pas vides!"
        Feuil2.Select
          Call trier_controle
      Exit Sub
      End If
     
    verif_corresp.ForeColor = RGB(51, 180, 51)
    verif_corresp.Caption = "V"
    com_controle4.Caption = "Contrôle OK"
    com_nb_erreur.Caption = ""
    End If
     
    Application.ScreenUpdating = True
     
    End Sub
    Et lorsque j'exécute ce code, le problème cité au dessus ce pose

    En mode Pas à pas, le programme termine le code, et une fois terminé passe au code de la feuil2

  11. #11
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Points : 168
    Points
    168
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range)
     
    If Target.Column = 1 Then
     
        If Target.Value <> "" And IsNumeric(Target.Value) Then
            Feuil1.Select
            Feuil1.Rows(Target.Value).Select
     
        End If
     
    End If
     
    End Sub
    J'aurai bien pris la solution de guigui mais ça ne marche pas, un message d'alerte me dis:
    "Erreur de compilation:
    La déclaration de la procédure ne correspond pas à la description de l'évenement ou de la procédure de même nom"

    à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range)
    Je ne vois vraiment pas comment faire, et j'ai besoin que ce programme marche, si quelqu'un voit une solution...

    Merci d'avance

  12. #12
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Ton code modifie la colonne A ce qui semble poser probleme.
    Essaie de debuger en pas a pas pour voir sur qu'elle instruction on débranche vers l'appel de precedure selectionchange

    Nb : une idée comme ca,
    1 tu creais une variable public boolean qui est a faux quand tu lances ton code qui plante et qui passe a vrai a la fin
    2 dans le selection change tu ajoutes dans le if la verification de la velur de ta variable (si faux alors je ne rentre pas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Value <> "" And IsNumeric(Target.Value) and BolFlag=true Then

  13. #13
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Points : 168
    Points
    168
    Par défaut
    en mode pas a pas, le code s'effectue jusqu'a "apply" du trie:

    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
    45
    46
    47
    48
     
    Private Sub controle4_Click()
     
    Application.ScreenUpdating = False
    Feuil2.Range("A:A").ClearContents
    Feuil1.Select
    compte=0
    i = 2
    Do
    If Cells(i, 21) <> "" And (Cells(i, 5) = "" Or Cells(i, 3) = "") Then
    Feuil2.Select
    Cells(i , 1) = i 
    Feuil1.Select
    i = i + 1
    compte=compte+1
     
      Else
           i = i + 1
    End If
    Loop Until i = j  'j correspond au nombre de ligne de la base
     
        If compte > 0 Then
        verif_corresp.Caption = "X"
        verif_corresp.ForeColor = RGB(255, 12, 12)
        com_nb_erreur.Caption = "Il y a " & compte & " erreur(s) du même type "
        com_controle4.Caption = "règle: Si Prix tarif N à un prix alors Tar pM et Log N ne sont pas vides!"
        Feuil2.Select
     
    Columns("A:A").Select
        ActiveWorkbook.Sheets("erreurs remarquées").Sort.SortFields.Clear
        ActiveWorkbook.Sheets("erreurs remarquées").Sort.SortFields.Add Key:=Range( _
            "A:A"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
    With ActiveWorkbook.Worksheets("erreurs remarquées").Sort
            .SetRange Range("A:A")
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
    End With
     
        End If
     
     
    Application.ScreenUpdating = True
     
    End Sub

    Puis il va éxécuter 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
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If Target.Column = 1 Then
     
        If Target.Value <> "" And IsNumeric(Target.Value) Then
            Sheets("feuil1").Select
            Sheets("Feuil1").Rows(Target.Value).Select
     
        End If
     
    End If
     
    End Sub
    Et là ca coince


    j'ai essayer cette méthode mais je suis pas sur de bien avoir compris...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If Target.Value <> "" And IsNumeric(Target.Value) and BolFlag=true Then
    J'ai juste rajouté le Bolflag=true mais j'ai pas compris ce qu'il fallait que je fasse...

  14. #14
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Dand un module ou dans la feuille si toutes les procedures sont dans cette meme feuille, ajouter la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public BolFlag as Boolean
    dans ta procedure
    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
    45
    46
    47
    48
    49
    Private Sub controle4_Click()
    bolflag=false 
    
    Application.ScreenUpdating = False
    Feuil2.Range("A:A").ClearContents
    Feuil1.Select
    compte=0
    i = 2
    Do
    If Cells(i, 21) <> "" And (Cells(i, 5) = "" Or Cells(i, 3) = "") Then
    Feuil2.Select
    Cells(i , 1) = i 
    Feuil1.Select
    i = i + 1
    compte=compte+1
     
      Else
           i = i + 1
    End If
    Loop Until i = j  'j correspond au nombre de ligne de la base
     
        If compte > 0 Then
        verif_corresp.Caption = "X"
        verif_corresp.ForeColor = RGB(255, 12, 12)
        com_nb_erreur.Caption = "Il y a " & compte & " erreur(s) du même type "
        com_controle4.Caption = "règle: Si Prix tarif N à un prix alors Tar pM et Log N ne sont pas vides!"
        Feuil2.Select
          
    Columns("A:A").Select
        ActiveWorkbook.Sheets("erreurs remarquées").Sort.SortFields.Clear
        ActiveWorkbook.Sheets("erreurs remarquées").Sort.SortFields.Add Key:=Range( _
            "A:A"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
    With ActiveWorkbook.Worksheets("erreurs remarquées").Sort
            .SetRange Range("A:A")
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
    End With
     
        End If
     
     
    Application.ScreenUpdating = True
    
    bolflag=true
    End Sub
    dans le selectionchange
    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)
     
    If Target.Column = 1 Then
     
        If Target.Value <> "" And IsNumeric(Target.Value) and bolflag=true Then
            Sheets("feuil1").Select
            Sheets("Feuil1").Rows(Target.Value).Select
     
        End If
     
    End If
     
    End Sub

  15. #15
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Points : 168
    Points
    168
    Par défaut
    Le code que je t'ai montrer c'est le code d'un click sur bouton de commande d'un userform:

    Donc j'ai mis public BolFlag as Boolean au début du programme comme tu m'a montrer puis mis au début = false et a la fin = true

    Ca ne marche pas non plus,

    Toutefois durant mon repas j'ai eu un flash ^^

    Je me suis dis que le problème venait du trie, puisque lorsque j'effectuai le trie, le code que tu ma donné feuil2 s'éxécutai et ne marchait pas
    J'ai donc créer une nouvelle variable afin de ne pas trier les information et les mettre à la suite des autres:
    A ma grande surprise: ca marche!!

    Je donne donc le code si jamais ça interesse...

    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
    Application.ScreenUpdating = False
    Feuil2.Range("A:A").ClearContents
    Feuil1.Select
    compte=0
    i = 2
    Do
    If Cells(i, 21) <> "" And (Cells(i, 5) = "" Or Cells(i, 3) = "") Then
    Feuil2.Select
    Cells(k , 1) = i 
    k=k+1
    Feuil1.Select
    i = i + 1
    compte=compte+1
     
      Else
           i = i + 1
    End If
    Loop Until i = j  'j correspond au nombre de ligne de la base
     
        If compte > 0 Then
        verif_corresp.Caption = "X"
        verif_corresp.ForeColor = RGB(255, 12, 12)
        com_nb_erreur.Caption = "Il y a " & compte & " erreur(s) du même type "
        com_controle4.Caption = "règle: Si Prix tarif N à un prix alors Tar pM et Log N ne sont pas vides!"
        Feuil2.Select
          
    End With
     
        End If
     
     
    Application.ScreenUpdating = True
    
    End Sub
    En tout cas merci beaucoup pour ton aide précieuse, jfontaine

    @ bientôt , et merci beaucoup

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

Discussions similaires

  1. [Toutes versions] Cliquer sur une cellule pour la copier
    Par rhuttin dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/07/2013, 17h14
  2. cliquer sur une cellule qui m'ouvre un autre fichier excel
    Par booskap dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/08/2007, 11h08
  3. [VB.NET]Cliquer sur une ligne du datagrid
    Par Dnx dans le forum ASP.NET
    Réponses: 1
    Dernier message: 02/11/2005, 14h26
  4. Focus sur une cellule spécifique d'un DBGrid
    Par danbern dans le forum Bases de données
    Réponses: 4
    Dernier message: 25/11/2004, 19h04
  5. capter l'evenement clic sur une cellule d'un string grid
    Par lasconic dans le forum Composants VCL
    Réponses: 3
    Dernier message: 25/06/2003, 10h51

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