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 :

ListBox empêchant de copier coller


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 31
    Points : 20
    Points
    20
    Par défaut ListBox empêchant de copier coller
    Bonjour a tous.

    Je dois créer un fichier contenant une liste box, qui me permet de choisir plusieurs éléments dans la liste. Etant novice++ en VBA, j'ai demandé de l'aide a un ami, qui m'a aidé à créer ma listebox.
    Sauf que cette fameuse listebox m’empêche de faire un copier coller et on ne trouve pas pourquoi (j'ai l'impression que des que je clique une fois ça me compte comme un double clic)?

    J'en appel donc a votre aide et à votre incommensurable talent!

    Je vous mets en pièce jointe mon fichier. Tout ce passe en feuil2 et la listbox est en C50

    Merci par avance!
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expérimenté Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 903
    Points : 1 364
    Points
    1 364
    Par défaut
    Bonjour,

    Je ne sais pas si d'autres ont essayé mais je n'ai absolument pas compris ton problème.
    Ta liste fonctionne bien et tu peux copier les données que tu affiches en C50.

    Quel est le problème ???

    Cordialement,
    Le sabre est une arme. Le kendo est un art de tuer. Quelles que soient les belles paroles pour l'expliquer, telle est sa vérité.

  3. #3
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    bonjour,

    je ne peux même pas dire si j'ai compris ou pas ...

    on a des modules en option explicit avec des variables pas déclarées ... très pratique quand ça affecte des Evènements Selection_Change, histoire d'avoir des erreurs à chaque clic

    j'enlève Option Explicit ok .... mais du coup je ne sais même pas à quoi doit correspondre la variable

    Autre chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ch2 = [Séparateur] & ch & [Séparateur]
    For i = 0 To LbxVille.ListCount - 1
        If InStr(ch2, [Séparateur] & LbxVille.List(i) & [Séparateur]) > 0 Then
    c'est quoi Séparateur ??? pourquoi il est encadré ? Il est déclaré en String mais aucune valeur ne lui est affectée dans ta procédure


    on a aussi des boléen public (portée module) pour gérer les évènements .... un commentaire indiquant juste "' palliatif, EnableEvents ne marche pas" (???)


    bref, j'ai refermé le fichier ... non sans avoir testé et réussi à faire un copier coller sur cette satanée feuille (en virant option Explicit)

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Je me suis mal exprimé ^^' Désolé.
    Je sais que ma liste fonctionne. Mais lorsque je veut copier coller des données sur la feuil2, je peut les copier mais pas les coller.
    Par exemple le bouton Matrice de Kraljic, copie et colle un graphique se trouvant en page 3, celui fonctionnait avec que je mette en place la listebox et ce n'est plus le cas.

    Cordialement

  5. #5
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    tu perds probablement les données copiées quand ta procédure revient sur la Feuil2
    car tu as une procédure évènementielle dans cette feuille qui rempli des listbox ...

    essaye comme ça, dans ta procédure du Userform Matrice ... sait-on jamais ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CommandButton1_Click()
    Application.EnableEvents = False 
    'Le code
    Application.EnableEvents = True

    EDIT : j'ai copié des valeurs dans ta feuille3, je suis retourné dans ta Feuil2, j'ai cliqué et sélectionné plusieurs cellules différentes ... et ensuite j'ai réussi à coller mes données.
    donc ça ne doit pas venir de là

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Donc je ne test pas ton code?
    Car moi des que j'effectue un clic (que ce soit un gauche ou un droit) j'ai l'impression qu'il est doublé rendant le collage impossible vu qu'il me deselectionne mon copier

  7. #7
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    N'arrivant pas à reproduire ton problème, je suis incapable de t'aider

    essaye quand même ma proposition, ça mange pas de pain mais j'y crois absolument pas, puisque ton problème se produit également en dehors de cette procédure

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Sauf que cette fameuse listebox m’empêche de faire un copier coller et on ne trouve pas pourquoi
    Bonjour,

    Le simple fait d'utiliser l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LbxVille.Visible = False
    vide le Presse-Papiers et je ne sais pas pourquoi (on ne connait pas les mécanismes souterrains d'Excel).

    Une grosse bidouille avec le code de l'événement Worksheet_SelectionChange. Changez y le code par celui-ci :
    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Dim ch As String, ch2 As String, pos As Long, i As Long
        Dim Plage, nomListe, numListe As Long, topIndex As Boolean
        ' plages avec sélection multiple sur cette feuille
     
    If Target.Cells(1, 1).Address = "$C$50" Then
        Plage = Array("C50")
        ' nom des Feuil3 dans la feuille Feuil3 (en liaison avec les plages définies au-dessus)
        nomListe = Array("Ville")
        ' plage concernée ?
        For numListe = 0 To UBound(Plage)
            If Not Intersect(Target, Range(Plage(numListe))) Is Nothing Then Exit For
        Next numListe
     
        If numListe <= UBound(Plage) Then ' si plage de liste existant
            ' initialiser listbox
            LbxVille.ListFillRange = "Feuil3!" & Worksheets("Feuil3").Range(nomListe(numListe)).Address          ' A2:A17" ' [Feuil3!Ville].Address
            LbxVille.Top = Target.Offset(1, 0).Top
            LbxVille.Left = Target.Offset(0, 1).Left
     
            interne = True    ' palliatif, EnableEvents ne marche pas
            ch = ActiveCell
            ch2 = [Séparateur] & ch & [Séparateur]
            topIndex = False
            ' sélectionner selon contenu cellule
            For i = 0 To LbxVille.ListCount - 1
                If InStr(ch2, [Séparateur] & LbxVille.List(i) & [Séparateur]) > 0 Then
                    ' l'item a été trouvé dans la cellule
                    LbxVille.Selected(i) = True
                    If Not topIndex Then
                        LbxVille.topIndex = i    ' le 1er sélectionné doit être visible dans la textbox
                        topIndex = True
                    End If
                End If
            Next i
            interne = False
            ' afficher textbox
            LbxVille.Visible = True
        End If
    Else
      ' ne plus afficher la textbox
      If Application.CutCopyMode = False Then
        LbxVille.Visible = False
      End If
    End If
    End Sub
    On peut maintenant copier/coller avec la restriction suivante :
    Le collage doit se faire en sélectionnant la cellule de destination et en appuyant sur Enter.
    Fichiers attachés Fichiers attachés

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Ben merci en tout cas ^^, l'essentielle c'est que cela fonctionne.
    Après si a l'utilisation cela devient trop lourd, je passerais pas une listbox je pense.

    Merci a tous pour votre temps et pour vos réponse!

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

Discussions similaires

  1. copier coller (glisser déplacer) entre trois listbox
    Par kineton dans le forum Windows Forms
    Réponses: 1
    Dernier message: 10/10/2009, 13h45
  2. Réponses: 8
    Dernier message: 12/08/2009, 11h32
  3. [AJAX] copier-coller de listbox->textbox
    Par pascb423 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/12/2008, 08h45
  4. [VBA-E]Faire un Copier coller d'une ListBox à une autre
    Par anubisigfrid dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/03/2007, 14h40
  5. copier-coller avec listbox
    Par LeNeutrino dans le forum Windows Forms
    Réponses: 4
    Dernier message: 26/01/2007, 13h06

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