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 :

Selection de lignes listbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 58
    Par défaut Selection de lignes listbox
    Bonjour,

    Je viens de nouveau vers vous pour un problème de listbox.

    L'utilisateur du formulaire sélectionne plusieurs lignes sur la listbox (alimentée par un worksheet). Puis il clic sur un bouton "export".
    Cette procédure ouvre un autre fichier excel gardant les entêtes et affichant la date.

    J'arrive à faire ceci avec une méthode range et des cellules fixes. Mais comment le faire pour que ce soit les lignes sélectionnées (et donc cette sélection peut varier) qui soient exportées?

    Voici où je bloque:
    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
    Private Sub Exportxls_Click()
           'Sélection de la plage à copier et copie(de a à j (1 à 10):
                        Dim LigneSelectionnee As Integer
           'cherche les lignes sélectionnées:
                        LigneSelectionnee = Me.L_Fournisseurs.ListIndex + 2
                        If Me.L_Fournisseurs.ListCount >= 0 Then _
                Range("LigneSelectionnee,A1:j1").Select
                Selection.Copy
           'Ouverture d'un nouveau classeur et sélection de la feuil1
                Workbooks.Add
                Sheets("Feuil1").Select
           'Collage des données + sélection ligne 1
                ActiveSheet.Paste
                ActiveSheet.Rows("1:1").Select
           'insertion de 2 lignes et écriture en cellule A1 la date
                Selection.Insert Shift:=xlDown
                Selection.Insert Shift:=xlDown
                ActiveCell = "Export réalisé le " & Now
            'police en gras
                ActiveCell.Font.Bold = True
            'Nommer la feuille
                Sheets("Feuil1").Name = "Export"
     
     
    End Sub
    Bien sur mon erreur se situe au niveau du range:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("LigneSelectionnee,A1:j1").Select
    Merci pour votre aide.

    Elumastebit

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 111
    Par défaut
    Bonjour,

    Je n'y connais pas grand chose, mais est-ce qu'il ne manque pas des guillemets?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("LigneSelectionnee","A1:J1").Select

  3. #3
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 58
    Par défaut
    Bonjour macat,

    J'ai essayé comme tu as dit, j'ai même essayé en plaçant les guillemets à différents endroits et le problème est toujours le même.

    De plus le problème est le même si je veux imprimer; En gros ce que je recherche à faire c'est comment selectionnér le contenu de cellules d'un worksheet en ayant sélectionné les lignes d'une listbox?

    Merci.

    Elumastebit

  4. #4
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 58
    Par défaut
    Pour info:

    Grâce à cette procédure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Exportxls_Click()
        Dim i As Byte
     
        'boucle sur les éléments de la listbox
        For i = 0 To ListBox.ListCount - 1
            If ListBox.Selected(i) = True Then MsgBox ListBox.List(i)
        Next i
    End Sub
    On a bien une msgbox qui nous indique toutes les lignes sélectionnées, il doit donc être possible de faire un "copy/paste" avant le next i?

    Elumastebit

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Sans avoir testé, je dirais de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                Range("LigneSelectionnee,A1:j1").Select
                Selection.Copy
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(LigneSelectionnee, 1), Cells(LigneSelectionnee, 10).Copy
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 58
    Par défaut
    Bonjour à tous, Bonjour AlainTech,

    Merci pour ce code il fonctionne mais me renvoi uniquement la dernière ligne sélectionnée et non toutes les lignes sélectionnées.

    Peut-être une boucle for i du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim LigneSelectionnee As Integer
    LigneSelectionnee = Me.L_Fournisseurs.ListIndex + 2
    For i=??? to listcount
    If Me.Listbox.ListCount >= 0 Then _
    Range(Cells(LigneSelectionnee, 1), Cells(LigneSelectionnee, 10)).Copy
    sheets(feuil1).Paste
    end if
    next i
    J'ai bien du mal à mettre ça en forme...

    Merci de votre aide.

    Elumastebit

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2014, 10h16
  2. select dernière ligne...
    Par ludophil dans le forum Requêtes
    Réponses: 4
    Dernier message: 22/05/2009, 21h09
  3. balise select à une ligne (comboBox)
    Par guigui_rondat dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 04/02/2006, 23h54
  4. Pb de select : retrouver lignes identiques
    Par lamf dans le forum Requêtes
    Réponses: 11
    Dernier message: 07/01/2006, 20h53
  5. [C#] Sélection de lignes dans un DataGrid
    Par wayak3 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 12/07/2005, 10h17

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