Récupérer selection d'une ListBox

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
M
Monster971
Jeune membre
Jeune membre
Messages : 37
Inscrit le : 22 novembre 2017
Version d'Excel : 2010 FR

Message par Monster971 » 5 décembre 2017, 19:32

Bonjour,




Je m'initie à la programmation VBA alors j'ai créé une petite macro qui copie la feuille d'un classeur fermé et la colle dans autre classeur ouvert( où est exécuter la macro). Jusqu'ici tout va bien et tout marche bien.

Voilà où commence les problèmes, je voulu améliorer cette macro en affichant une fenêtre au debut qui permettrait de choisir quel feuille du classeur à copier.

Mon problème actuel est que je n'arrive pas à récupérer la sélection de la ListBox pour ainsi la stocker dans une variable.

Quelqu'un peut-il m'aider ?




Voici ma macro
Public Sub MiseàJour()

    
    'Prépare 2 objets
    Dim ClasseurFerme As Object
    Dim FeuilleFermee As Object
    Dim nom_feuilleFermee As String
    Dim ws As Worksheet
    
    
    
    'Affecte le classeur à l'objet
    Set ClasseurFerme = GetObject("F:\TAFF du 04_12_2017\Recurring info.xlsx")
    UserForm1.Show

    
    Do While rep_ok = False
    
    nom_feuilleFerme = ListBox1.SelectedItem.ToString()
    
    'Parcours l'ensemble des feuilles du classeur
    For Each ws In ClasseurFerme.Worksheets
        If ws.Name = nom_feuilleFerme Then
            Set FeuilleFermee = ws
            rep_ok = True
        End If
 
    Next
 
    If rep_ok = False Then
        MsgBox "Nom de feuille introuvable", vbInformation, "Oupss!"
    End If
 
    Loop
    'puis la feuille
    'Set FeuilleFermee = ClasseurFerme.Worksheets("nom_feuilleFerme")
    
    'Copie une plage
    FeuilleFermee.Range("A2:AA500").Copy
    
    'et la colle dans la feuille active (Classeur contenant la macro)
    ActiveSheet.Range("A2:AA500").Select
    ActiveSheet.Paste

    'Libère les variables
    Set FeuilleFermee = Nothing
    Set ClasseurFerme = Nothing

End Sub



Voici mon le code mon Userform
Private Sub UserForm_Initialize()

With Me.ListBox1
    .AddItem "Table Operateurs"
    .AddItem "Country"
    .AddItem "Operateur Simplifie"
    .AddItem "Bioss Rate Plan"
    .AddItem "Table OPE Interco DF"
    End With

End Sub


Private Sub OKButton_Click()
    Dim SelectedItems As String
    Dim i As Integer

   

    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) = True Then
           SelectedItems = SelectedItems & ListBox1.List(i) & vbNewLine
    End If
    Next i

    If SelectedItems = "" Then
         MsgBox "Nothing selected"
    Else
         MsgBox "Selected Items: " & vbNewLine & SelectedItems
    End If

    Unload UserForm1
End Sub

macro_final - Copie.xlsm
(31.66 Kio) Téléchargé 90 fois
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 421
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 5 décembre 2017, 19:59

Bonjour,

Je ne comprends pas très bien le problème que tu rencontres ...

Puisque tu récupères déjà la sélection de ta ListBox ...dans le MsgBox .... :wink:
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
M
Monster971
Jeune membre
Jeune membre
Messages : 37
Inscrit le : 22 novembre 2017
Version d'Excel : 2010 FR

Message par Monster971 » 5 décembre 2017, 20:17

Bonjour James007,

Mon problème est que lorsque je veux récupérer la sélection (qui est une chaine de caractère pour la stocker dans nom_feuilleFerme), j'ai le code erreur suivant :
nom_feuilleFerme = ListBox1.SelectedItem.ToString()
J'ai l'erreur d'exécution "424" : Objet Requis
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 4'019
Appréciations reçues : 306
Inscrit le : 26 janvier 2011
Version d'Excel : 2007/2019

Message par Theze » 5 décembre 2017, 20:39

Bonsoir,
ToString()
C'est du VB.Net, cette propriété n'existe pas en VBA !
Utilises :
MaVariable = ListBox1.Value
Variable que tu déclares en tête du module standard
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
M
Monster971
Jeune membre
Jeune membre
Messages : 37
Inscrit le : 22 novembre 2017
Version d'Excel : 2010 FR

Message par Monster971 » 5 décembre 2017, 20:53

Bonjour Theze,

Malgré le changement de ligne, j'ai toujours l'erreur d'execution "424"

Merci de m'aider
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 421
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 5 décembre 2017, 21:13

Re,

Ci-joint ton fichier ... à tester ... :wink:

En espèrant que cela t'aide ...
macro_final - Copie.xlsm
(29.23 Kio) Téléchargé 178 fois
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
M
Monster971
Jeune membre
Jeune membre
Messages : 37
Inscrit le : 22 novembre 2017
Version d'Excel : 2010 FR

Message par Monster971 » 6 décembre 2017, 13:29

Bonjour James007,

Je tiens d'abord à te remercier pour ton devouement à me porter.
En revanche cela ne marche toujours pas, lorsque je sélectionne une des feuilles fermé de mon classeur dans la ListBox afin de la stocker dans ma variable nom_feuilleFermee pour ensuite tester si elle existe ou pas par la suite mais ça ne marche toujours ( elle me renvoie que le nom de la feuille est inexistante, alors qu'elle existe :) )

Je joins les deux fichiers ci dessous.

Mille Merci
Copie de macro_final - Copie.xlsm
(25.83 Kio) Téléchargé 77 fois
Recurring info.xlsx
(13.75 Kio) Téléchargé 43 fois
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message