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 :

double click et userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 177
    Par défaut double click et userform
    Bonsoir le forum

    Besoin de vos lumières car je patauge...
    Mon probleme : Base de données dans une feuille excel nommée "BD"
    But : si il y a erreur dans données, pouvoir double cliquer sur la cellule concernée et faire apparaitre le formulaire correspondant. Qui contient les bases de la saisie (essence, n°, longueur, diametre et Reduction)
    En Validant la correction, les calculs se referont pour mettre à jour le reste des donnees (volume...)
    les valeurs de chaque controle du formulaire seront égale à celle des cellules de la base "BD" correspondante.
    Exemple de ce que j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TxtEssence.Value=sheets("BD").Range("A"&i).value
    (i étant la ligne sélectionnée lors du double click) mais ça ne marche pas ainsi.


    Je pensais à beforedoubleclick mais avoue patauger et ne sais comment faire.

    Votre avis?

  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
    Un exemple à comprendre pour adapter à ton cas.
    J'ai un userform avec 2 TextBox et un Bouton.
    Quand je double clique sur une cellule de la feuille Feuil1, l'userform s'affiche avec la valeur de la colonne A dans TextBox1 et celle de la colonne B dans TextBox2.
    Je modifie ces valeurs et je valide à l'aide du Bouton, les valeurs seront modifiées dans la feuille Feuil1 aux endroits correspondants.

    Pour cela j'utilise une variable publique LaLig qui va contenir la ligne du double clique qui est celle à modifier.

    1. Dans un module public, on fait la déclaration de notre variable publique
    2. Dans le module de la feuille 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
    LaLig = Target.Row
    UserForm1.Show
    End Sub
    3. Dans le module de l'userform
    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
    Private Sub UserForm_Initialize()
     
    If LaLig > 0 Then
        With Worksheets("Feuil1")
            Me.TextBox1.Value = .Range("A" & LaLig)
            Me.TextBox2.Value = .Range("B" & LaLig)
        End With
    End If
    End Sub
     
    'Bouton de validation
    Private Sub CommandButton1_Click()
     
    If LaLig > 0 Then
        With Worksheets("Feuil1")
            .Range("A" & LaLig) = Me.TextBox1.Value
            .Range("B" & LaLig) = Me.TextBox2.Value
        End With
    End If
    Unload Me
    End Sub
     
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
     
    LaLig = 0
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 177
    Par défaut
    Super

    Un grand merci à toi.

    trois questions pour comprendre
    1 pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
     
    LaLig = 0
    End Sub
    2 je n'arrive pas à trouver la signification de "target"

    3 pourquoi faire un module public

    encore un grand merci. (J'étais sur la voie mais encore loin du résultat)

    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
    1. C'est à la ferméture de ton userform, la variable LaLig est initialisée à 0

    2. Target est de type Range, c'est la cellule où on a double cliqué

    3. LaLig est déclarée comme variable publique (dans un module ) pour être accessible de partout ton projet. Dans ton cas, c'est dans le module de la feuille et dans le module de ton userform

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 177
    Par défaut
    Merci encore de ton aide. Tes réponses me seront en plus très utiles à l'avenir.(J'ai en effet d'autre projets en tête mais j'avoue que c'est très prenant.
    Que faut il faire pour gagner du temps ensuite et en faire gagner aux autres!!!!

    merci encore et à bientôt
    Cordialement

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

Discussions similaires

  1. [VB.NET] DataGrid et double click
    Par mic56 dans le forum Windows Forms
    Réponses: 15
    Dernier message: 01/11/2006, 04h37
  2. [JTree] Empecher le double-click
    Par filpinpin dans le forum Composants
    Réponses: 6
    Dernier message: 13/05/2005, 13h45
  3. Question sur double click
    Par cjacquel dans le forum MFC
    Réponses: 2
    Dernier message: 30/04/2005, 11h53
  4. [C#] [WinForms] Double click ListBox
    Par fxp17 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 11/04/2005, 14h58
  5. OnMouseUp et double click
    Par DBBB dans le forum Composants VCL
    Réponses: 3
    Dernier message: 14/12/2004, 16h02

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