ListBox empêchant de copier coller

Banjo

XLDnaute Nouveau
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 et en C50

Merci par avance!
 

Pièces jointes

  • Consultation13.xlsm
    87.2 KB · Affichages: 39

Banjo

XLDnaute Nouveau
Re : ListBox empêchant de copier coller

sur la feuil2 de mon classeur j'ai la macro qui me permet d'afficher ma listbox, mais j'ai aussi un macro qui me permet de copier coller un graphique (en page 3) a l'aide d'un Userform (Matrice). cela fonctionnait bien, sauf que depuis que j'ai mis la macro de la listbox, la macro de la matrice ne peut plus effectuer le copier coller.

Et quand je tente d'effectuer un copier coller manuel, cela fonctionne pas, on peut copier mais des qu'on clic sur une autre case la sélection copiée s’enlève.
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : ListBox empêchant de copier coller

RE:

Malgré tes explications complémentaires, j'ai toujours du mal à comprendre le fonctionnement de ton fichier.

Mais je pense que le problème est peut être dû au déclenchement de la procédure événementielle déclenchée par la sélection d'une cellule en Feuil2. Pour y remédier, j'ai modifié le code pour cibler la sélection de la cellule C50 (voir ' <--- ligne à ajouter).

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

  If Target.Address = "$C$50:$G$50" Then ' <--- ligne à ajouter

    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
    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 ' <--- ligne à ajouter

  Else
        ' ne plus afficher la textbox
        LbxVille.Visible = False
  End If
End Sub
A+

Cordialement.
 

Banjo

XLDnaute Nouveau
Re : ListBox empêchant de copier coller

Je m'exprime donc si mal? x)

Alors je vais essayer de me réexpliquer mais correctement pour que tu me comprenne car malheureusement ta solution ne fonctionne pas :

Mon fichier me permet de créer des fiches récapitulative des procédures mené tout au long de l'année. Cela se fait a l'aide d'un copier colle de la feuille modele, la feuil2.

Sauf que:
Sur ma feuil2 j'ai une macro qui me permet d'afficher un listbox en C50 qui elle fonctionne parfaitement.
J'ai également une autre macro (sur l'Userform Matrice) qui me permet de copier coller le graphique de 4 couleur en feuil3. Cette macro s'active avec le bouton Matrice de Kraljic en feuil2

Sauf que les deux matrice interfère et la macro de la listbox empêche les copier coller sur la feuil2, car elle désélectionne la sélection que l'on veut copier.

Merci pour tes réponses
 

Papou-net

XLDnaute Barbatruc
Re : ListBox empêchant de copier coller

RE:

Effectivement, je n'avais pas vu le bouton Matrice de Kraljic.

Sauf erreur, ou nouvelle incompréhension de ma part, je constate que la copie du graphique se fait bien sur Feuil2, en cellule K58 (cf copie en pièce jointe).

Cordialement.
 

Pièces jointes

  • Consultation13-1.xlsm
    88 KB · Affichages: 37
Dernière édition:

PMO2

XLDnaute Accro
Re : ListBox empêchant de copier coller

Bonjour,

J'ai déjà répondu sur un autre forum mais vous vous expliquez tellement mal que j'ai tapé à côté de votre problème.

J'ai apporté des ajouts (signalés par des ///) dans
1) UserForm Matrice
Code:
Private Sub CommandButton1_Click()

Dim O2 As Worksheet
Dim O1 As Worksheet

Application.EnableEvents = False '///ajout
Application.ScreenUpdating = False
FA = ActiveSheet.Name

Set O2 = Sheets(FA)
O2.Columns("K:X").UnMerge   '///ajout
Set O1 = Sheets("feuil3")
'Clean de la zone de la matrice de Kraljic
O2.Activate

Range("O2").Select
    ActiveWindow.SmallScroll Down:=42
    Range("K58:U73").Select
    Selection.ClearContents

'Rentre les valeurs saisie dans le tableau en feuil3
O1.Activate
    Range("Q14").Value = TextBox1.Value
    Range("Q15").Value = TextBox2.Value
    Range("Q16").Value = TextBox3.Value
    Range("Q17").Value = TextBox4.Value
    Range("Q18").Value = TextBox5.Value

    Range("Q23").Value = TextBox6.Value
    Range("Q24").Value = TextBox7.Value
    Range("Q25").Value = TextBox8.Value
    Range("Q26").Value = TextBox9.Value
    Range("Q27").Value = TextBox10.Value

'Copie Colle la matrice sur la feuille d'origine
O1.Range("D13:N28").Copy

O2.Range("k58").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
O2.Range("k58").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False

Unload Matrice
O2.Select
Range("A1").Select
Application.ScreenUpdating = True
Application.EnableEvents = True '///ajout
Application.CutCopyMode = xlCopy '///ajout
End Sub

2) Feuil2
Code:
'///ajout (à retirer)
''''Private Sub DTPicker1_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)
''''
''''End Sub


Option Explicit

Dim interne As Boolean
Private Sub LbxVille_Change()
Dim ch As String, i As Long, sep As String
    If Not interne Then
        ch = ""
        sep = [Séparateur]
        For i = 0 To LbxVille.ListCount - 1
            If LbxVille.Selected(i) = True Then ch = ch & sep & LbxVille.List(i)
        Next i
        ch = Mid(ch, Len(sep) + 1)
        ActiveCell = ch
    End If
End Sub
Private Sub LbxVille_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
       
End Sub


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
    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
    Else
        ' ne plus afficher la textbox
        LbxVille.Visible = False
    End If
End Sub

Sub reinit()
    Application.EnableEvents = True
End Sub



'Afichage du calendrier lors d'un double clic
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim plage As Range    '///ajout

'liste des cellules à modifier sur lesquelles apparait le calendrier
    Set plage = Range("C13, G13, G15, D31, F31, B35, B37, B39, C46, C48, C57, C69")
    If Not Intersect(Target, plage) Is Nothing Then
        Cancel = True
        UserForm1.Show
    End If
End Sub

Essayez pour voir si cela fonctionne maintenant.
 

Pièces jointes

  • Consultation13_pmo 2.00.xlsm
    108.3 KB · Affichages: 32

Si...

XLDnaute Barbatruc
Re : ListBox empêchant de copier coller

salut

A partir d'un de mes classeurs : formulaires à minima et utilisation de l'outil Tableau (programmation moins lourde); donc pas mal de transformations.

Il te faudra sans doute prévoir des sauvegardes de chaque marché sous formes de fichiers annexes mais c'est une autre histoire.
 

Pièces jointes

  • Gestion 0.xlsm
    92.3 KB · Affichages: 49

Banjo

XLDnaute Nouveau
Re : ListBox empêchant de copier coller

Ah ouais y à du level O.O.

ça marche nickel!
Merci beaucoup, je vais adapter ce que tu as fait a mon cas, et continuer à apprendre mes leçons en VBA ^^

Xoxo et merci encore
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 217
Membres
103 158
dernier inscrit
laufin