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 :

Grain de sable dans ListBox [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 38
    Par défaut Grain de sable dans ListBox
    Bonjour à vous.
    Un petit problème s'invite dans un userform qui contient un listbox …
    Dans les paramètres du ListBox, j'ai renseigné 'Rowsource' et ca marche bien.
    Afin de modifier le contenu en 'live' de cet objet, j'ai modifié le code du DblClick et ca fonctionne, le contenu se met à jour,
    mais à chaque fois je suis obligé de cliquer sur un des éléments du ListBox si je veux utiliser un autre objet de l'userfom !
    Je n'ai pas mis de code d'initialisation du userform.
    Auriez-vous une idée ?
    Je met le code de ce ListBox.
    Merci d'avance.



    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
    Private Sub lstInfoInventaire_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
        'mise a blanc d'une valeur qui traine ?
        Application.ScreenUpdating = False
        Dim f
        Dim s As Integer
        Set f = Sheets("Bilan")
        s = lstInfoInventaire.ListIndex + 3
     
        reponse = MsgBox("Vous allez vider la valeur." & vbCrLf & "Etes-vous SUR(E) ?", vbQuestion + vbYesNo, "Modification d'inventaire")
     
        If reponse = 7 Then
            Exit Sub
            Else
            f.Activate
            f.Range("C" & s).Select
            Selection.ClearContents
        End If
     
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    J'ai essayé de reproduire votre formulaire, et je ne rencontre pas votre problème.

    Pour comparer avec le votre
    Pièce jointe 435544

    Cdlt

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    mais à chaque fois je suis obligé de cliquer sur un des éléments du ListBox si je veux utiliser un autre objet de l'userfom !
    est semble-t-il le problème que tu rencontres.

    Ce comportement correspond vraisemblablement à l'exécution d'autres instructions dans d'autres procédures que tu ne nous montres pas !

    EDIT : attends un peu, là ....
    Tu vas te promener ailleurs par ton activate et ton select et te plains de ne plus être là où tu étais !
    Il est inutile de se "balader" ainsi pour modifier un objet Excel. On s'y réfère, tout simplement. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuille1").Range("D3").Value = ....

  4. #4
    Inactif  
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 38
    Par défaut
    Bonjour unparia

    Merci de l'aide.
    Je vais essayer de ne pas me "balader", mais c'est parce que j'exécute l'userform depuis une autre feuille (Accueil) et les données à modifier sont dans une autre (Bilan) !!

    J'espère que tu as raison.
    Je reviens vous dire 'quoi'

    Cordialement

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    mais c'est parce que j'exécute l'userform depuis une autre feuille (Accueil) et les données à modifier sont dans une autre (Bilan) !!
    Et ?
    Dis-moi : si tu te trouves en Indonésie et as besoin de donner des instructions par téléphone à un correspondant qui se trouve à Java, tu te rends à Java, pour lui téléphoner ?

  6. #6
    Inactif  
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 38
    Par défaut
    Citation Envoyé par unparia Voir le message
    Et ?
    Dis-moi : si tu te trouves en Indonésie et as besoin de donner des instructions par téléphone à un correspondant qui se trouve à Java, tu te rends à Java, pour lui téléphoner ?
    bah, de tête il me semblait avoir essayé autrement, mais sans succès alors ...
    Je ne suis pas une 'bête' de VBA mouaaa
    Mais toute aide est bonne à prendre, sinon aucun intérêt.
    Merci.


    Je n'ai pas encore essayé ton astuce .
    Bon, je viens de tester en modifiant, toujours pareil ... Obligé de sélectionner un élément de ma liste pour 'libérer' le clic...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        Dim f
        Dim s As Integer
        Set f = Sheets("Bilan")
        s = lstInfoInventaire.ListIndex + 3
        reponse = MsgBox("Vous allez vider la valeur." & vbCrLf & "Etes-vous SUR(E) ?", vbQuestion + vbYesNo, "Modification d'inventaire")
        If reponse = 7 Then
            Exit Sub
            Else
            f.Range("C" & s).Value = ""
        End If

  7. #7
    Inactif  
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 38
    Par défaut
    Citation Envoyé par ARTURO83 Voir le message
    Bonjour,

    J'ai essayé de reproduire votre formulaire, et je ne rencontre pas votre problème.

    Pour comparer avec le votre
    Pièce jointe 435544

    Cdlt
    Merci de la réponse.
    Cette modification par contre, me laisse cliquer sur le bouton 'Fermer', mais pas l'autre listbox

  8. #8
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    RE,

    Cette modification par contre, me laisse cliquer sur le bouton 'Fermer', mais pas l'autre listbox Quel est le code de l'autre listbox?
    Dans la pièce jointe, J'ai ajouté un bouton "fermer" et cela fonctionne aussi.
    Pièce jointe 435628

    le code dans le module formulaire:
    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 Fermer_Click()
        Unload UserForm1
    End Sub
     
    Private Sub lstInfoInventaire_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
        Dim f
        Dim s As Integer
        'mise a blanc d'une valeur qui traine ?
        Application.ScreenUpdating = False
        Set f = Sheets("Bilan")
        s = lstInfoInventaire.ListIndex + 3
        reponse = MsgBox("Vous allez vider la valeur." & vbCrLf & "Etes-vous SUR(E) ?", vbQuestion + vbYesNo, "Modification d'inventaire")
        If reponse <> 7 Then f.Range("C" & s).ClearContents
    End Sub
    Après, sans voir comment est conçu votre formulaire, c'est pas très évident de trouver une solution à un problème qu'on ne peut recréer.

  9. #9
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Obligé de sélectionner un élément de ma liste pour 'libérer' le clic...
    Je ne comprends que ce qui est compréhensible.
    Je ne comprends pas ce que veut dire libérer un clic (on n'emprisonne pas un clic. On l'effectue. Et une fois effectué, il n'est plus là, LUI). Essaye (bien que je devine) d'appeler un chat un chat et un chien un chien. Que veux-tu "libérer" et qu'entends-tu par "libérer" exactement ? -->> fais cet effort et le reste deviendra évident, y compris pour toi.

  10. #10
    Inactif  
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 38
    Par défaut
    Citation Envoyé par unparia Voir le message
    Je ne comprends que ce qui est compréhensible.
    Je ne comprends pas ce que veut dire libérer un clic (on n'emprisonne pas un clic. On l'effectue. Et une fois effectué, il n'est plus là, LUI). Essaye (bien que je devine) d'appeler un chat un chat et un chien un chien. Que veux-tu "libérer" et qu'entends-tu par "libérer" exactement ? -->> fais cet effort et le reste deviendra évident, y compris pour toi.
    Quand la procédure d'effacement est terminée, normalement je dois pouvoir cliquer sur un objet, pour déclencher autre chose, mais là cela ne fonctionne pas.
    Je suis obligé de sélectionner un élément de la ListBox pour permettre le clic actif (donc le libérer !)
    Je joints une partie de mon fichier, peut-être comprendrez-vous mieux.
    En déroulant la première liste, je choisi, puis je saisi une valeur pour le prénom correspondant, t valide par le bouton +
    Là cela fonctionne bien.
    Mais ce foutu double-clic fonctionne aussi, mais me bloque un peu.
    L'utilisateur saura qu'il faut faire un clic de plus pour continuer mais bon ...

    Merci bcp
    Fichiers attachés Fichiers attachés

  11. #11
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Comme de très nombreux développeurs, je n'ouvre et n'ouvrirai jamais un classeur tiers.
    Je ne comprends toujours pas ce que tu cherches à exprimer
    - s'il s'agit de désélectionner la sélection faite --->> mets à -1 la propriété listindex de ta listbox à la fin de ta macro
    - s'il s'agit d'autre chose : précise-le très clairement

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

Discussions similaires

  1. Erreur de syntaxe clause FROM affichage Tous dans Listbox
    Par Lou Pitchoun dans le forum Access
    Réponses: 9
    Dernier message: 21/09/2005, 10h40
  2. Griser Elément dans ListBox
    Par cjacquel dans le forum MFC
    Réponses: 5
    Dernier message: 06/04/2005, 10h12
  3. Centrer un texte dans ListBox, dans OnDrawItem
    Par Sunchaser dans le forum C++Builder
    Réponses: 3
    Dernier message: 21/03/2005, 01h46
  4. Image dans listbox
    Par jabaka dans le forum C++Builder
    Réponses: 4
    Dernier message: 19/02/2005, 22h35
  5. [C#] Drop dans ListBox
    Par Freeman166 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 26/01/2005, 22h46

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