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

VB.NET Discussion :

comment alimenter une listbox en visual express 2008 par la 1ère colonne d'un tableau excel 2007


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2013
    Messages : 11
    Points : 8
    Points
    8
    Par défaut comment alimenter une listbox en visual express 2008 par la 1ère colonne d'un tableau excel 2007
    Bonjour à tous,
    Une fois de plus je reviens vers vous en exxpérant cette fois-ci avoir une réponse.

    Je débute dans la programmation sous visual stiudio 2008
    Dans le cadre de mon projet j'aimerai savoir comment importer la première colonne d'un tableau excel existant déja (cette première colonne comprend des sujets nommés sujet1, sujet2...sujet 500) pour alimenter une listbox de ma userform ?

    voici le code que j'ai mis mais cela m'affiche des erreurs:

    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
     
     
    Dim xldown()
        Dim test As Excel.Application
        Dim nom As Char
        Dim cc As Char
        Dim Workbooks As Excel.Workbook
        Dim ll()
        Dim tt()
    Dim Range As Excel.Range
    sub nn()    
     nom = "test.xlsx"
            cc = "D:\" & test.xlsx
            workbooks.open("D:\" & test.xlsx)
            ll = activeworkbook.sheets("feuil1").range("a1").end(xldown).row
            ReDim tt(ll - 1)
            For i = 0 To (ll - 1)
                tt(i) = range("a1").offset(i)
            Next
            Workbooks(nom).close()
    end sub
    Voici ce que ça m'affiche comme errur:
    Erreur 1 L'opérateur '-' n'est pas défini pour les types 'Tableau à 1 dimension(s) de Object' et 'Integer'. C:\Users\Probook\AppData\Local\Temporary Projects\MatriAppL\Form1.vb 78 18 MatriAppL
    Je vous prie de bien vouloir m'aider.
    Merci de prendre la peine de me lire et de me répondre

    Merci d'avance pour votre grande aide.

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Une piste à 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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
        Sub nn()
     
            Dim AppExcel As New Microsoft.Office.Interop.Excel.Application
            Dim Classeur As Microsoft.Office.Interop.Excel.Workbook
            Dim Plage As Microsoft.Office.Interop.Excel.Range
            Dim Cel As Microsoft.Office.Interop.Excel.Range
            Dim Nom As String
            Dim cc As String
            Dim tt()
            Dim I As Long
     
            Nom = "test.xls"
     
            cc = "D:\" & Nom
     
            'crée le classeur
            Classeur = AppExcel.Workbooks.Open(cc)
     
            'rend visible l'application
            AppExcel.Visible = True
     
            'défini la plage en colonne "A" de "Feuil1"
            With Classeur.Sheets("feuil1")
     
                Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(-4162))
     
            End With
     
            'redimensionne le tableau
            ReDim tt(Plage.Cells.Count - 1)
     
            'rempli le tableau avec les valeurs des cellules
            For Each Cel In Plage
     
                tt(I) = Cel.Value
                'ou, pour la colonne B :
                'tt(I) = Cel.Offset(, 1).Value
                I = I + 1
     
            Next
     
            ListBox1.Items.AddRange(tt)
     
            Classeur.Close()
     
        End Sub
    Hervé.

  3. #3
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Petite précision, l'affichage des résultats se fait dans une ListBox !

    Hervé.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2013
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Alimenter une Listbox par la première colonne d'un tableau Excel visual studio 2008
    Salut Hervé et merci pour votre réponse,
    j'ai essayé d'adapter votre réponse , seulement ça m'affiche une erreur
    qui est :

    Erreur de type:
    Avertissement 1 Le type pour la variable 'Cel' ne sera pas déduit, car il est lié à un champ d'une portée englobante.
    Changez le nom de 'Cel' ou utilisez le nom qualifié complet (par exemple, 'Me.l1' ou 'MyBase.l1').
    C:\Users\Probook\AppData\Local\Temporary Projects\Monprojet\Form1.vb 62 18 Monprojet
    J'ai essayé de changer la variable 'cel' mais j'ai en résultat la même erreur
    je n'arrive pas à la corriger. Svp aidez- moi une fois de plus.
    Merci d'avance pour votre aide.

  5. #5
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Citation Envoyé par Ericntoukam Voir le message
    Erreur 1 L'opérateur '-' n'est pas défini pour les types 'Tableau à 1 dimension(s) de Object' et 'Integer'. C:\Users\Probook\AppData\Local\Temporary Projects\MatriAppL\Form1.vb 78 18 MatriAppL
    L'erreur se trouve au compteur de la boucle. "ll" est un tableau, tu ne peux pas faire ll - 1 ... ll.Count() - 1 peut-être ... ?

    Et par contre quand je vois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Dim ll()
        Dim tt()
     
    sub nn()   
    end sub
    C'est pas très très mnémonique ... Bon courage à qui lira ton code ...
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2013
    Messages : 11
    Points : 8
    Points
    8
    Par défaut comment alimenter une listbox en visual express 2008 par la 1ère colonne d'un tableau excel 2007
    Bonsoir à tous,
    Je vous remercie une fois de plus de l'intérêt que vous accorder à mes différentes difficultées et surtout pour les réponses apportées.
    Voilà je n'ai toujours pas résolu mon problème d'alimentation de ma listbox, par contre j'ai améléorer mon code et je me retrouve avec une erreur que je n'arrive pas à corriger car étant débutant en vb je n'ai pas le flair pour détecter les erreus même évidentes pour tous les programeurs .
    voici mon code:
    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
    53
     
    Imports Microsoft.Office.Interop.Excel
    Imports Microsoft.Office.Interop
       Private Sub Saisie_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim Worksheets As Worksheets
            Dim appExcel As Excel.Application 'Application Excel
            Dim wbExcel As Excel.Workbook 'Classeur Excel
            Dim wsExcel As Excel.Worksheet 'Feuille Excel
            Dim Cell As Ranges
            Dim cells As Ranges
            Dim Tableau()
            Dim TempTab As Object
            Dim i As Integer, j As Integer
            Dim boolVerif As Boolean
            ReDim Tableau(0 To 1)
            Tableau(1) = Cell(1, 1)
            Dim xlUp As Integer
     
            'Boucle sur les données de la colonne A, dans la Feuil1
            For Each Cell In Worksheets("Feuil1").Range("A1:A" & _
                                Worksheets("Feuil1").Range("A65536").End(xlUp).Row)
                wbExcel = appExcel.Workbooks.Open("D:\test.xlsx")
                boolVerif = False
                'Vérifie si le contenu de la cellule existe déjà dans le tableau
                For i = 1 To UBound(Tableau)
                    'Si la donnée existe déjà dans le tableau
                    If Tableau(i) Then
                        boolVerif = True
                        Exit For
                    End If
                Next i
            Next
     
            'Si la donnée n'existe pas dans le tableau, on augmente la taille du tableau
            'et on ajoute la donnée.
            If boolVerif = False Then
                ReDim Preserve Tableau(0 To UBound(Tableau) + 1)
                Tableau(UBound(Tableau)) = Cell
            End If
     
            'Tri le contenu du tableau par ordre croissant.
            For i = 1 To UBound(Tableau)
                For j = 1 To UBound(Tableau)
                    If Tableau(i) < Tableau(j) Then
                        TempTab = Tableau(i)
                        Tableau(i) = Tableau(j)
                        Tableau(j) = TempTab
                    End If
                Next j
            Next i
     
        End Sub
    End Class
    Voici donc l'eurreur que ça m'affiche:


    Erreur 1 Arguments trop nombreux pour 'Public ReadOnly Default Property _Default(Index As Object) As Microsoft.Office.Interop.Excel.Range'. C:\Users\Probook\Desktop\MVC\MVC-projet\MVC-projet\Vue\Saisie.vb 22 30 MVC-projet


    L'erreur est donc affiché au niveau de Tableau(1) = Cell(1, 1)
    est souligné l'ordonnnée de cell(1,1) c'est à dire le second 1
    Merci une fois de plus de me débloqur car je n'avance plus dépuis quelques jours. Bonne soirée à tous.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    665
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 665
    Points : 1 161
    Points
    1 161
    Par défaut
    Bonsoir
    Voir avec Range :

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2013
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Ericntoukam Voir le message
    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
    53
    54
     
    Imports Microsoft.Office.Interop.Excel
    Imports Microsoft.Office.Interop
       Private Sub Saisie_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim Worksheets As Worksheets
            Dim appExcel As Excel.Application 'Application Excel
            Dim wbExcel As Excel.Workbook 'Classeur Excel
            Dim wsExcel As Excel.Worksheet 'Feuille Excel
            Dim Cell As Ranges
            Dim cells As Ranges
            Dim Tableau()
            Dim TempTab As Object
            Dim i As Integer, j As Integer
            Dim boolVerif As Boolean
            ReDim Tableau(0 To 1)
            Tableau(1) = Cell(1, 1)
            Dim xlUp As Integer
     
            'Boucle sur les données de la colonne A, dans la Feuil1
            For Each Cell In Worksheets("Feuil1").Range("A1:A" & _
                                Worksheets("Feuil1").Range("A65536").End(xlUp).Row)
                wbExcel = appExcel.Workbooks.Open("D:\test.xlsx")
                boolVerif = False
                'Vérifie si le contenu de la cellule existe déjà dans le tableau
                For i = 1 To UBound(Tableau)
                    'Si la donnée existe déjà dans le tableau
                    If Tableau(i) Then
                        boolVerif = True
                        Exit For
                    End If
                Next i
            Next
     
            'Si la donnée n'existe pas dans le tableau, on augmente la taille du tableau
            'et on ajoute la donnée.
            If boolVerif = False Then
                ReDim Preserve Tableau(0 To UBound(Tableau) + 1)
                Tableau(UBound(Tableau)) = Cell
            End If
     
            'Tri le contenu du tableau par ordre croissant.
            For i = 1 To UBound(Tableau)
                For j = 1 To UBound(Tableau)
                    If Tableau(i) < Tableau(j) Then
                        TempTab = Tableau(i)
                        Tableau(i) = Tableau(j)
                        Tableau(j) = TempTab
                    End If
                Next j
            Next i
               'Alimente la ListBox
            ListBox1.Items.Add(Tableau)
        End Sub
    End Class
    Voici donc l'eurreur que ça m'affiche:

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/05/2013, 15h10
  2. comment afficher une image dans Visual basic 2008?
    Par norddist dans le forum VB.NET
    Réponses: 9
    Dernier message: 07/08/2010, 18h59
  3. comment executer une projet avec visual studio 2008
    Par sousoi dans le forum Visual Studio
    Réponses: 0
    Dernier message: 02/06/2010, 11h06
  4. comment creer une projet dans visual studio 2008
    Par sousoi dans le forum Visual Studio
    Réponses: 2
    Dernier message: 22/05/2010, 22h21
  5. Réponses: 12
    Dernier message: 22/06/2006, 12h09

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