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 :

Sélectionner plusieurs items dans une ListBox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 842
    Par défaut Sélectionner plusieurs items dans une ListBox
    Bonjour,

    Je souhaiterais renommer, déplacer un ou plusieurs fichiers d'une ListBox dans la deuxième ListBox, puis sélectionner et mettre en surbrillance dans cette dernière les fichiers renommés et déplacés.

    Voici le code que j’utilise pour renommer et déplacer les fichiers aucuns soucis, en revanche ça ne fonctionne pas pour sélectionner et mettre en surbrillance tous les fichiers renommés et déplacés dans la deuxième ListBox, seul le dernier fichier est sélectionné :
    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
    47
    48
    Private Sub CommandButton11_Click() 'RENOMMER ET DÉPLACER LE OU LES FICHIERS SÉLECTIONNÉS VERS LA DROITE
        Dim GestionFichier As New Scripting.FileSystemObject
        Dim Extention, SourceG, DestinationD
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        Dim dict As Object
        Dim i As Long, j As Long, x As Long
        ' Créer un dictionnaire
        Set dict = CreateObject("Scripting.Dictionary")
        Dim nouveauNom As String
        'boucle sur les éléments de la listbox Source
        For i = 0 To Source.ListCount - 1
            If Source.Selected(i) = True Then
                ' vérifier si le fichier existe
                If GestionFichier.FileExists(TextBox1 & Source.List(i)) Then
                    Confirme = MsgBox("Confirmer renommer et déplacer le document sélectionné vers côté droit !")
                    If Confirme = vbYes Then
                        Extention = Mid(Source.List(i), InStrRev(Source.List(i), ".") + 1)
                        SourceG = TextBox1 & Source.List(i)
                        nouveauNom = InputBox("Saisir le nouveau nom sans l'extention")
                        DestinationD = Application.WorksheetFunction.Trim(TextBox2 & nouveauNom & "." & Extention)
                        'renome et déplace le document sélectionné vers côté droit
                        Name (SourceG) As (DestinationD)
                    Else
                        MsgBox "Abandon de la procédure"
                    End If
                Else
                    MsgBox "Le fichier n'existe pas"
                    GoTo Line1
                End If
    Line1:
            End If
        Next i
     
        Call MajListeFichiers
     
        trouve = False
        ' Parcourir les éléments de la ListBox
        For i = 0 To Dest.ListCount - 1
            If InStr(1, Dest.List(i), nouveauNom, vbTextCompare) > 0 Then
                ' Sélectionner et mettre en surbrillance l'élément trouvé
                Dest.Selected(i) = True
                trouve = True
            Else
                ' Désélectionner les autres éléments
                'Dest.Selected(i) = False
            End If
        Next i
    End Sub
    J’ai passé beaucoup temps et de recherches sans trouver de solution.

    Comment modifier mon code pour sélectionner et mettre en surbrillance tous les fichiers renommés et déplacés dans la deuxième ListBox.

    Merci d’avance pour votre aide.

  2. #2
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 208
    Billets dans le blog
    2
    Par défaut
    Bonjour,


    Est-ce que la seconde ListBox a la propriété Multiselect en fmMultiSelectMulti (1) ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 842
    Par défaut
    Bonjour & merci tototiti2008,

    Oui la seconde ListBox a la propriété Multiselect en fmMultiSelectMulti (1)

    @+

  4. #4
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 208
    Billets dans le blog
    2
    Par défaut
    Re,

    Ce code fonctionne sur une ListBox en MultiselectMulti, peut-être analyser quand il est censé les sélectionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub UserForm_Initialize()
    Dim i As Long
        For i = 1 To 10
            Me.ListBox1.AddItem i
        Next i
        For i = 1 To 10 Step 2
            Me.ListBox1.Selected(i) = True
        Next i
    End Sub

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 842
    Par défaut
    Re,

    Sauf erreur de ma part cela me parait difficile à l’initialisation de l’UserForm.

    Dans mon code voici les phases principales :
    1 – Sélection dans la ListBox1 des fichiers à renommer et à déplacer
    2 – Renommage et déplacement des fichiers d’un dossier source vers un dossier destination
    3 – Mise à jour de la liste des fichiers du dossier cible dans la ListBox2
    4 - Sélection et mise en surbrillance des fichiers renommés et déplacés dans la ListBox2

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    Tu aurais un fichier démo pour éviter d'avoir à tout reconstruire pour tester?

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 842
    Par défaut
    Bonjour Qwazerty,

    Merci pour votre intérêt à cette discussion.

    Ci-joint le fichier qui vous permettra de mieux cerner la question.

    @+
    Fichiers attachés Fichiers attachés

  8. #8
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    Le problème vient du code.

    Dans ta dernière boucle, celle qui doit sélectionner les éléments de la liste Dest, tu lui demandes de sélectionner les lignes correspondant à NouveauNom, hors NouveauNom contient un seul nom, le dernier à avoir été traité.

    Soit tu les selectionnes au fur et à mesure que tu les ajoutes (je ne sais pas s le fait d'ajouter un élément annule la sélection courante (fait un test).
    Soit tu conserves l'ensemble des nouveaux noms, le plus simple c'est de les mettre les uns à la suite des autre dans une variable texte avec ";" entre chaque, puis de faire un split(MaVariable,";") pour récupérer un tableau de noms.

    Attention aux Msgbox a répétition, j'imagine que c'est pour faire des tests mais si ça n'est pas le cas, c'est pénible.
    Il faudrait pouvoir donner les correspondance de noms dans un tableau, ou pouvoir donner un schéma de renommage, parce que les faire un par un, faut pas qu'il y en ait de trop.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

Discussions similaires

  1. Sélectionner plusieurs items dans une listbox
    Par ancrou dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 13/07/2007, 19h28
  2. Réponses: 3
    Dernier message: 29/08/2006, 12h50
  3. Réponses: 3
    Dernier message: 05/07/2006, 17h29
  4. comment valider/devalider un item dans une listBox?
    Par Mickey.jet dans le forum Delphi
    Réponses: 2
    Dernier message: 30/05/2006, 07h25
  5. [Question] Ajouter un item dans une ListBox
    Par Jihnn dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 29/12/2005, 19h38

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