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 :

Ouvrir une userform lorsqu'on clic sur une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Points : 15
    Points
    15
    Par défaut Ouvrir une userform lorsqu'on clic sur une cellule
    Bonjour,

    Malgré de très nombreuses discussions sur ce sujet et après de multiples tentatives, je n'ai pas réussi à traiter mon problème.

    Je dispose d'une feuille Excel (permettant de faire un planning automatique).

    Je recherche à ouvrir une UserForm
    - Composée de 5 boutons. Ou chaque bouton "colorie" la cellule sur laquelle on a cliqué.
    - Les cellules sélectionnées font parties d'une plage variables d'une même colonne (la première ligne et la dernière étant variables, l'ensemble de mes macros font références à des valeurs remplies sur ma feuilles Excel).

    Ci-dessous l'expression de ma UserForm1 :

    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
    Private Sub UserForm_Click()
    Private Sub CommandButton1_Click()
        For h = Cells(86, 4).Value To Cells(86, 5).Value
        Cells(h, 13).Interior.ColorIndex = 37
        Next
    End Sub
    Private Sub CommandButton2_Click()
        For h = Cells(86, 4).Value To Cells(86, 5).Value
        Cells(h, 13).Interior.ColorIndex = 27
        Next
    End Sub
    Private Sub CommandButton3_Click()
        For h = Cells(86, 4).Value To Cells(86, 5).Value
        Cells(h, 13).Interior.ColorIndex = 13
        Next
    End Sub
    Private Sub CommandButton4_Click()
        For h = Cells(86, 4).Value To Cells(86, 5).Value
        Cells(h, 13).Interior.ColorIndex = 9
        Next
    End Sub
    Private Sub CommandButton5_Click() 
        End
    End Sub
    Ci-dessous l'expression de mon module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Couleur
    For h = Cells(86, 4).Value To Cells(86, 5).Value
    If Not Application.Intersect(Target, Range("h;7")) Is Nothing Then
    UserForm1.Show
    End If
    End Sub
    Si vous avez une réponse ou seulement des éléments de réponses, je suis preneur

    Je vous remercie par avance

  2. #2
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    2 questions pour comprendre

    1 qu'est-ce qui appelle la procédure "Couleur" ?

    2 que contiennent les cellules Cells(86, 4) et Cells(86, 5) ?

  3. #3
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Sub Couleur
    For h = Cells(86, 4).Value To Cells(86, 5).Value
    If Not Application.Intersect(Target, Range("h;7")) Is Nothing Then
    UserForm1.Show
    End If
    End Sub
    ne marchera jamais car "Target" est un objet (ici un Range) passé en argument dans les procédures évènementielles des feuilles de calculs et du classeur.
    Range("h;7") va générer une erreur car un point virgule dans l'adresse de la cellule donc, "H7" et non "h;7"
    Manque le Next de ta boucle et surtout à quoi sert-elle ?

    Si tu veux ouvrir ta form après un changement de valeur dans une cellule (ici H7) teste ceci en mettant ce code dans le module de la feuille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        If Target.Address(0, 0) = "H7" Then UserForm1.Show
     
    End Sub
    Hervé.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par defluc Voir le message
    2 questions pour comprendre

    1 qu'est-ce qui appelle la procédure "Couleur" ?

    2 que contiennent les cellules Cells(86, 4) et Cells(86, 5) ?
    Bonjour, désolé j'ai du mal m'exprimer.

    1- La procédure "couleur" serait appelée par un clic sur une des cellules comprise sur la plage d'une colonne comprise entre les valeurs indiquées par les valeurs remplies dans les cellules Cells(86, 4) et Cells(86, 5).

    2- Les cellules Cells(86, 4) et Cells(86, 5) contiennent donc des valeurs référençant la première ligne "Cells(86, 4)" et la dernière ligne de mon tableau Cells(86, 5) .

    Je vous remercie par avance.

    Bonjour,

    1- Merci de l'explication pour le target et le range.
    2- Le "h" signifie ici ma plage de lignes pour laquelle le clic pourrait être activé et lance le module "couleur". Et non pas la référence à la colone "H". Et du coup, je pensais (je suis débutant) que la boucle servirait à pouvoir cliquer sur que sur la plage de "lignes" sélectionée.
    3- J'essaye ça tout de suite.

    Merci

  5. #5
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Bonjour,

    pas d'évènement pour un simple clic (sauf alors à chaque changement de sélection de cellule)

    mais soit par l'évènement du double clic soit par celui du clic droit …

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    En fait, tout mon problème est le suivant :

    J'ai une feuille Excel composée de colones et de lignes.

    Parmi toutes les colones et selon un intervalle de lignes modulables directement à partir de la feuille Excel (les fameuses valeurs prises en :Cells(86, 4).Value et Cells(86, 5).Value).

    Si Cells(86, 4).Value = 1
    et Cells(86, 5).Value = 8
    ==> Mes lignes seront comprises entre 1 et 8



    Ce que j'aimerai, c'est pouvoir ouvrir une Userform pour modifier la couleur d'une cellule (comprise dans ma colone et mon intervalle de ligne) après clic sur cette même cellule.

    Actuellement, ce que je n'arrive SURTOUT pas à faire, c'est programmer le fait que je ne veuille qu'il ne modifie SEULEMENT la cellule sur laquelle j'ai cliqué ....

  7. #7
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    La cellule "cliquée" est de facto représentée par l'objet Target de la procédure évènementielle …

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Mon problème avance

    Le code de ma Feuil1 :


    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)
    Cancel = True
    UserForm1.CommandButton1 = Cells(ActiveCell.Row, 12)
    UserForm1.Show
     
    End Sub
    Le code de mon UserForm1 :

    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
    Private Sub CommandButton1_Click()
    Cells(ActiveCell.Row, 12).Interior.ColorIndex = 31
    End Sub
    Private Sub CommandButton2_Click()
    Cells(ActiveCell.Row, 12).Interior.ColorIndex = 44
    End Sub
    Private Sub CommandButton3_Click()
    Cells(ActiveCell.Row, 12).Interior.ColorIndex = 54
    End Sub
    Private Sub CommandButton4_Click()
    Cells(ActiveCell.Row, 12).Interior.ColorIndex = 12
    End Sub
     
    Private Sub CommandButton5_Click()
    End
    End Sub
    Private Sub CommandButton6_Click()
    For h = 6 To 200
    Cells(h, 12).Interior.ColorIndex = 2
    Next
    End Sub
    Private Sub CommandButton7_Click()
    Cells(ActiveCell.Row, 12).Interior.ColorIndex = 2
    End Sub
     
    Private Sub UserForm_Click()
     
    End Sub

    Mon soucis est désormais le suivant, lorsque je clic sur les autres colonnes (autres que ma colonne 12), ma UserForm apparait alors que je ne souhaiterai qu'elle n'apparaisse que pour la colonne 12.

    Je pense que ce problème doit se résoudre dans la première ligne du code de Feuil1 mais je ne connais pas la fonction adéquate.

    Pouvez m'aider ? Je vous remercie par avance

  9. #9
    Invité
    Invité(e)

  10. #10
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Citation Envoyé par AntMi Voir le message
    […] ma UserForm apparait alors que je ne souhaiterai qu'elle n'apparaisse que pour la colonne 12.

    Je pense que ce problème doit se résoudre dans la première ligne du code de Feuil1 mais je ne connais pas la fonction adéquate.

    Pouvez m'aider ? Je vous remercie par avance
    If Target.Column = 12 Then

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    If Target.Column = 12 Then
    Merci

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

Discussions similaires

  1. [Cocoa] Afficher une page lorsqu'on clic sur un cell d'une tableview
    Par searchsport dans le forum XCode
    Réponses: 0
    Dernier message: 20/08/2013, 22h50
  2. [PPT-2007] Incrémenter la valeur d'une variable suite au clic sur une forme.
    Par BrItneY dans le forum VBA PowerPoint
    Réponses: 1
    Dernier message: 07/09/2010, 14h48
  3. Réponses: 3
    Dernier message: 14/10/2009, 11h55
  4. Réponses: 10
    Dernier message: 11/04/2008, 13h37
  5. Double clic sur une userform
    Par herji dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/10/2007, 19h22

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