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 6 et antérieur Discussion :

Listview vers Excel manque une colonne


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 105
    Points : 61
    Points
    61
    Par défaut Listview vers Excel manque une colonne
    bonjour
    dans ma form j'ai une Listview avec 8 colonnes,j'ai un bouton pour exporter les
    données de ma listview vers excel
    voila un code que j'ai récupérer et adapter,il fonctionne bien,sauf qu'il me manque 1 colonnes.
    il m'affiche que 7 colonnes,dans les 6 premiéres (A:F) j'ai l'entete et les données,dans la 7ieme (G) je n'ait pas l'entete mais j'ai les données par contre dans la 8ieme (G) je n'ait rien.
    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    Sub excel()
    Dim i As Integer, j As Integer
    'Demarrer Excel
    Set DocExcel = CreateObject("Excel.Application")
     
    'Supprime l'affichage des messages d'erreurs ou de confirmation de suppression, ...
    DocExcel.DisplayAlerts = False
     
    'Ajout eun nouveau classeur
    DocExcel.Workbooks.Add
    'Selectionne la feuille du classeur
    DocExcel.Sheets("Feuil2").Select
    'On supprime cette feuille
    DocExcel.ActiveWindow.SelectedSheets.Delete
    'On fait pareil avec la feuille 3
    DocExcel.Sheets("Feuil3").Select
    DocExcel.ActiveWindow.SelectedSheets.Delete
    'On selectionne la feuille 1 (la seule qui reste)
    DocExcel.Sheets("Feuil1").Select
    'On change le nom de celle ci
    Dim r
    Set r = CreateObject("WScript.Shell")
    'DocExcel.Sheets("Feuil1").Name = Left("Liste Des films", 31)
     
    'On change la largeur de la colonne
    DocExcel.Columns("A:A").ColumnWidth = 30
    DocExcel.Columns("B:B").ColumnWidth = 30
    DocExcel.Columns("C:C").ColumnWidth = 30
    DocExcel.Columns("D:D").ColumnWidth = 30
    DocExcel.Columns("E:E").ColumnWidth = 30
    DocExcel.Columns("F:F").ColumnWidth = 20
    DocExcel.Columns("G:G").ColumnWidth = 20
    DocExcel.Columns("H:H").ColumnWidth = 20
    'On Aligne les cellules des colonnes
    DocExcel.Columns("A:H").HorizontalAlignment = 3
    'DocExcel.Columns("A:F").HorizontalAlignment = 3
     
    'On rempli les cases
    EcrireExcel Chr(65), 1, "Nom de l'Enfant"
    DocExcel.Selection.Font.Bold = True
     
    For i = 65 To 70                            'Colonnes
        EcrireExcel Chr(i), 1, frm_AccessExcel.List.ColumnHeaders(i - 64).Text
        DocExcel.Selection.Font.Bold = True
        If frm_AccessExcel.List.ColumnHeaders(i - 64).Width = 0 Then DocExcel.Columns(Chr(i) & ":" & Chr(i)).ColumnWidth = 0
        DocExcel.Cells(1, i - 64).Borders.Value = 1
        DocExcel.Cells(1, i - 64).Borders(3).LineStyle = 0
     
    Next i
    For j = 1 To frm_AccessExcel.List.ListItems.Count    'Lignes
        'EcrireExcel "A", j + 1, "" & j & ""
        EcrireExcel "A", j + 1, frm_AccessExcel.List.ListItems(j).Text '
        frm_pause.Progbar.Value = 100 * j / frm_AccessExcel.List.ListItems.Count
       For i = 65 To 70                        'Colonnes
            EcrireExcel Chr(i + 1), j + 1, frm_AccessExcel.List.ListItems(j).ListSubItems(i - 64).Text
            DocExcel.Cells(j + 1, i - 64).Borders.Value = 1
            DocExcel.Cells(j + 1, i - 64).Borders(3).LineStyle = 0
            DocExcel.Cells(j + 1, i - 64).Borders(4).LineStyle = 0
        Next i
    '-- Bordure de la derniere colonne
        DocExcel.Cells(j + 1, 9).Borders.Value = 1
        DocExcel.Cells(j + 1, 9).Borders(3).LineStyle = 0
        DocExcel.Cells(j + 1, 9).Borders(4).LineStyle = 0
     
    Next j
    'On rend Exel visible
    If Not Save Then DocExcel.Visible = True
    Set DocExcel = Nothing
     
    End Sub
    auriez vous une idée de se qui cloche dans se code ?
    merci
    petchy

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Ne serait-il pas plus explicatif si tu ajoutais la procédure EcrireExcel pour voir ce qu'elle fait ?

    En plus, dans ton code, tu fais varier le compteur i de 65 jusqu'à 70 ce qui correspond aux lettres de A à F.

    Or au début de ton Sub Excel, tu parles de colonnes allant de A jusqu'à H.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 105
    Points : 61
    Points
    61
    Par défaut
    salut
    voila le code de la procédure EcrireExcel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Function EcrireExcel(Colonne As String, Ligne As Integer, Texte As String)
    DocExcel.Range(Colonne & Ligne).Select
    DocExcel.ActiveCell.FormulaR1C1 = Texte
    Range("A2").Select
    End Function
    mais merci,car j'ai trouver grace à toi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For i = 65 To 72                            'Colonnes
        EcrireExcel Chr(i), 1, frm_AccessExcel.List.ColumnHeaders(i - 64).Text
        DocExcel.Selection.Font.Bold = True
        If frm_AccessExcel.List.ColumnHeaders(i - 64).Width = 0 Then DocExcel.Columns(Chr(i) & ":" & Chr(i)).ColumnWidth = 0
        DocExcel.Cells(1, i - 64).Borders.Value = 1
        DocExcel.Cells(1, i - 64).Borders(3).LineStyle = 0
     
    Next i
    merci à toi
    bonne soirée
    petchy

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/12/2010, 12h16
  2. Réponses: 2
    Dernier message: 04/06/2007, 15h39
  3. [DDE]Exporter vers Excel dans une feuille spécifique
    Par javelot69 dans le forum Access
    Réponses: 8
    Dernier message: 05/04/2007, 12h36
  4. [VBA-Excel]Supprimer une colonne entiere basee sur une cellule
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/10/2006, 22h08
  5. [OLE Excel] Récupérer une colonne d'un coup
    Par Nemerle dans le forum C++Builder
    Réponses: 2
    Dernier message: 17/05/2004, 15h56

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