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 :

Transfer de lignes selectionnees sur ListeBox vers une autre feuil [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 16
    Par défaut Transfer de lignes selectionnees sur ListeBox vers une autre feuil
    Bonjour,

    J'ai une listeBox sur une UserForm1 dans un fichier A.xlsx, cette listBox1 est multi-select et est contient 3 colonnes .

    voici le code de remplissage de la ListBox
    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
     For i = 2 To 22
           With wk.Sheets("Feuil1")
               'Ajoute une ligne et insère le nom dans la colonne de gauche
                UserForm1.listBox1.AddItem .Range("A" & i)
     
               'Ajoute le prénom dans la colonne du centre
                For j = 1 To 2
                 UserForm1.listBox1.List(UserForm1.listBox1.ListCount - 1, j) = .Range("B" & i)
                Next j
               'Ajoute la fonction dans la colonne du droite
                For k = 2 To 3
                 UserForm1.listBox1.List(UserForm1.listBox1.ListCount - 1, k) = .Range("C" & i)
                Next k
     
           End With
        Next i
    ma listBox se rempli sans problem.

    je souhait ajouter un bouton, qui transferera tout les lignes sélectionnées vers une autre feuil1 d'un autre fichier XL B.xslx

    une indication??
    merci d'avance.

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut,un exemple sommaire à adapter

    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
    Private Sub Btn_Click()
    Dim i As Long, sMsg As String, bFlag As String
    Dim iCol As Long
     
        sMsg = ""
        With ListBox1
            For i = 0 To .ListCount - 1
                If .Selected(i) Then
                    For iCol = 0 To 2
                         sMsg = sMsg & ListBox1.List(i, iCol) & vbTab
                    Next iCol
                    sMsg = sMsg & vbCrLf
                End If
            Next i
        End With
     
        If sMsg = vbNullString Then
            MsgBox "Aucune sélection"
            Exit Sub
        Else
            bFlag = MsgBox("Sélection correcte ? " & vbCrLf & vbCrLf & sMsg & vbCrLf, _
                           vbYesNo + vbInformation + vbDefaultButton2)
        End If
     
        If bFlag = vbYes Then
            Unload Me
        Else
            For i = 0 To ListBox1.ListCount - 1
                ListBox1.Selected(i) = False
            Next
        End If
    End Sub
    En passant par une feuile Feuil2, pour la copie des données sélectionnées

    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
     
        ' .....
        Feuil2.Cells.Clear
        With ListBox1
            For i = 0 To .ListCount - 1
                If .Selected(i) Then
                    iRow = iRow + 1
                    For iCol = 0 To 2
                         Feuil2.Cells(iRow, iCol + 1).Value = ListBox1.List(i, iCol)
                         sMsg = sMsg & ListBox1.List(i, iCol) & vbTab
                    Next iCol
                    sMsg = sMsg & vbCrLf
                End If
            Next i
        End With
        ' .....
    Au final sauvegarde dans un fichier xls externe
    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
    49
    50
    51
    52
    Private Sub BtnOk_Fichier_Click()
    Dim i As Long, sMsg As String, bFlag As String
    Dim iCol As Long, iRow As Long
    Dim Wkb As Workbook
    Dim Ws As Worksheet
     
        sMsg = ""
     
        Application.ScreenUpdating = False
     
        Set Wkb = Workbooks.Open(ThisWorkbook.Path & "\" & "B.xls", AddToMru:=False)
        Set Ws = Wkb.Worksheets("Feuil1")
        Ws.Cells.Clear
     
        With ListBox1
            For i = 0 To .ListCount - 1
                If .Selected(i) Then
                    iRow = iRow + 1
                    For iCol = 0 To 2
                        Ws.Cells(iRow, iCol + 1).Value = ListBox1.List(i, iCol)
                        sMsg = sMsg & ListBox1.List(i, iCol) & vbTab
                    Next iCol
                    sMsg = sMsg & vbCrLf
                End If
            Next i
     
            Application.DisplayAlerts = False
            Wkb.Close True
            Application.DisplayAlerts = True
        End With
     
        Application.ScreenUpdating = True
     
        Set Ws = Nothing
        Set Wkb = Nothing
     
        If sMsg = vbNullString Then
            MsgBox "Aucune sélection"
            Exit Sub
        Else
            bFlag = MsgBox("Sélection correcte ? " & vbCrLf & vbCrLf & sMsg & vbCrLf, _
                           vbYesNo + vbInformation + vbDefaultButton2)
        End If
     
        If bFlag = vbYes Then
            Unload Me
        Else
            For i = 0 To ListBox1.ListCount - 1
                ListBox1.Selected(i) = False
            Next
        End If
    End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 16
    Par défaut
    Merci pour ces exemples claire, ca m'a vraiment bcp aider.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/04/2012, 20h49
  2. Transferer des données d'un table vers une autre
    Par pooi1 dans le forum VBA Access
    Réponses: 4
    Dernier message: 31/05/2007, 01h05
  3. Comment transférer une ligne d'une feuille Excel vers une autre
    Par iboulaye1980 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/05/2007, 10h32
  4. [C#] transferer une ligne d'une datagrid vers une autre datagrid
    Par nassimmm dans le forum Windows Forms
    Réponses: 4
    Dernier message: 11/08/2006, 09h38
  5. Basculer le résultat Requête d'une listebox vers une autre
    Par Daniel MOREAU dans le forum Access
    Réponses: 2
    Dernier message: 14/04/2006, 21h26

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