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 :

Mettre des données d'une ListBox multicolonne dans un tableau [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Cost controler
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Cost controler
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Par défaut Mettre des données d'une ListBox multicolonne dans un tableau
    Bonjour,

    je souhaite transférer des données d'une ListBox multicolonne ( à 4 colonne) vers un tableau nommé "tableauClient",
    avec le bouton ajouter je test :
    - si le tableau existe
    - si oui je vérifie qu'il a le bon nom
    - et si il n'existe pas je le crée .
    mais après je galère pour transférer toutes les lignes et colonnes de la listbox multi vers les lignes et colonnes de mon tableau.

    j'ai joint mon fichier excel, si quelqu'un a une idée (pour pouvoir les charger dans le tableau et inversement aussi d'ailleurs) Merci d'avance

    Essai Tableau charge decharge.xlsm



    cordialement

    Grace à un gars super j'ai pu comprendre et fairce que je voulais donc pour tous ceux que cela interesse voici le fichier final avec des commentaires dans les codes du userforms

    Fichier ci dessous fini :

    Essai Tableau fini.xlsm

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,


    c'est le code que tu as entrepris qui nous intéresse, pas le classeur

    Merci de nous le montrer

  3. #3
    Membre habitué
    Homme Profil pro
    Cost controler
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Cost controler
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Par défaut
    j'avais joint le classeur car le code est dedans avec le boutons ajouter, sinon le code est :

    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
    Private Sub CommandButtonAjouter_Click()
    Dim Ws As Worksheet
    Dim ListObj As ListObject
    Dim ListObj2 As ListObject
    Dim NomTableau As String
    Dim DerLign As Long
    
    
    '*************************************************************************************************************************************
    '*                    ListObjects sert à la création et à la manipulation des tableaux
    '*************************************************************************************************************************************
    
    Set Ws = Worksheets("Feuil1")
        For Each ListObj In Ws.ListObjects
            NomTableau = ListObj.Name ' trouve le nom du tableau si il existe et le mets dans la variable
        Next
        If NomTableau <> "" Then ' si la variable contient un nom
            If NomTableau <> "TableauClient" Then ' verifie que c'est le bon nom de tableau
                Worksheets("Feuil1").ListObjects(NomTableau).Name = "TableauClient" 'sinon on le renomme
            End If
        Else
            ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$D$2"), , xlYes).Name = "TableauClient" 'Crée le tableau a 4 colonne et le nomme
            Range("TableauClient[[#Headers],[Colonne1]]").Select 'selectionne l'entête de colonne 1
            ActiveCell.FormulaR1C1 = "Nom"                      'la renomme
            Range("TableauClient[[#Headers],[Colonne2]]").Select
            ActiveCell.FormulaR1C1 = "Prenom"
            Range("TableauClient[[#Headers],[Colonne3]]").Select
            ActiveCell.FormulaR1C1 = "Age"
            Range("TableauClient[[#Headers],[Colonne4]]").Select
            ActiveCell.FormulaR1C1 = "Oui-Non"
    
        End If
        DerLign = [TableauClient].Rows.Count + [TableauClient].Rows(0).Row ' Trouve la derniere ligne pleine
        DerLign = DerLign ' + 1 ' ajoute un pour être sur la premiere ligne vide
        With Sheets("Feuil1")     ' Indique le nom de la feuille source
            Set ListObj2 = Worksheets("Feuil1").ListObjects("TableauClient") ' remplt les cellule avec le contenu des textbox ou OptionBouton
    c'est la que je patauge
    
                    .Cells(DerLign, 1) = TextBoxNom.Value
                    .Cells(DerLign, 2) = TextBoxPrenom.Value
                    .Cells(DerLign, 3) = TextBoxAge.Value
                    If OptionButtonOui = True Then .Cells(DerLign, 4) = "Oui"
                    If OptionButtonNon = True Then .Cells(DerLign, 4) = "Non"
         End With
    End Sub
    Je pense que je devrais utilisé une double boucle une pour la ligne avec une au milieu de celle la pour les colonnes, mais je me mélange, qu'en pensez vous ?

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Moi je ne vois pas de listbox, plutôt 3 textbox et 2 optionbuttons ?

    La méthode ne sera pas la même, peux-tu confirmer exactement ce point ?

  5. #5
    Membre habitué
    Homme Profil pro
    Cost controler
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Cost controler
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Par défaut i'am a couillon
    joe.levrai je suis navré mais effectivement j'ai envoyé le mauvais fichier (le rouge de la honte couvre mon visage)

    donc voici le bon code et le bon fichier :

    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
    Private Sub CommandButtonAjouter_Click()
    Dim Ws As Worksheet
    Dim ListObj As ListObject
    Dim ListObj2 As ListObject
    Dim NomTableau As String
    Dim DerLign As Long
    
    
    '*************************************************************************************************************************************
    '*                    ListObjects sert à la création et à la manipulation des tableaux
    '*************************************************************************************************************************************
    
    Set Ws = Worksheets("Feuil1")
        For Each ListObj In Ws.ListObjects
            NomTableau = ListObj.Name ' trouve le nom du tableau si il existe et le mets dans la variable
        Next
        If NomTableau <> "" Then ' si la variable contient un nom
            If NomTableau <> "TableauClient" Then ' verifie que c'est le bon nom de tableau
                Worksheets("Feuil1").ListObjects(NomTableau).Name = "TableauClient" 'sinon on le renomme
            End If
        Else
            ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$D$2"), , xlYes).Name = "TableauClient" 'Crée le tableau a 4 colonne et le nomme
            Range("TableauClient[[#Headers],[Colonne1]]").Select 'selectionne l'entête de colonne 1
            ActiveCell.FormulaR1C1 = "Nom"                      'la renomme
            Range("TableauClient[[#Headers],[Colonne2]]").Select
            ActiveCell.FormulaR1C1 = "Prenom"
            Range("TableauClient[[#Headers],[Colonne3]]").Select
            ActiveCell.FormulaR1C1 = "Age"
            Range("TableauClient[[#Headers],[Colonne4]]").Select
            ActiveCell.FormulaR1C1 = "Oui-Non"
    
        End If
        DerLign = [TableauClient].Rows.Count + [TableauClient].Rows(0).Row ' Trouve la derniere ligne pleine
        DerLign = DerLign ' ajoute un pour être sur la premiere ligne vide
        With Sheets("Feuil1")     ' Indique le nom de la feuille source
            
            FinList = (ListBoxNom.ListCount - 1) + DerLign
            
            For NumLign = 0 To 6
                For NomCol = 0 To 4 'FinList
                        'NomListBox = "ListBox" & NumCol & ".List(" & a & ")"
                        'MsgBox "2eme Boucle NumCol :   " & NumCol & "  i :  " & i
                        Set ListObj2 = Worksheets("Feuil1").ListObjects("TableauClient")
                        NumColTab = NumCol + 1
                        .Cells(NumLign, NumColTab) = Me.ListBoxNom.List(NumLign, NumCol)
                        a = a + 1
                Next NomCol
            Next NumLign
        End With
    End Sub
    Essai Tableau.xlsm

  6. #6
    Membre habitué
    Homme Profil pro
    Cost controler
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Cost controler
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Par défaut yessssssssssssss c'est tout bon
    Grace à un gars super j'ai pu comprendre et fairce que je voulais donc pour tous ceux que cela interesse voici le fichier final avec des commentaires dans les codes du userforms

    Fichier ci dessous fini :

    Essai Tableau fini.xlsm

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

Discussions similaires

  1. Extraire des données d'une même cellule, dans plusieurs fichiers
    Par chicanne dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 31/07/2016, 12h06
  2. Afficher les données d'une Liste multicolonne dans CrystalReport
    Par NAIMA2 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 02/04/2007, 10h59
  3. Réponses: 4
    Dernier message: 27/03/2007, 09h49
  4. Réponses: 3
    Dernier message: 06/02/2007, 11h04
  5. Réponses: 16
    Dernier message: 20/03/2006, 23h21

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