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

VBA Access Discussion :

Importation d'une table Access vers un classeur Excel - Des cellules tronquent la donnée


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    n.d.
    Inscrit en
    Juin 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : n.d.

    Informations forums :
    Inscription : Juin 2018
    Messages : 50
    Points : 31
    Points
    31
    Par défaut Importation d'une table Access vers un classeur Excel - Des cellules tronquent la donnée
    Bonjour à tous,

    j'ai une table Access que je viens importer en vba. Quand je dis importer, ce n'est pas avec la fonction d'importation, mais chaque enregistrement est vérifié et les données de chaque colonne sont copiées dans une cellule excel. Je fais en même temps la mise en page du classeur par le fait même.

    Bref, dans ma table Access, j'ai quelques colonnes en format Mémo, ces données sont tronquées lorsque je les transfert en Excel. D'où mon problème... ça reste un fichier de consultation et je ne perds pas mes données dans ma BD, par contre ça reste irritant.

    J'y vais bien simplement comme suis...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For i to LastLine
    .range("A" & i) = rst.Fields("MaColonne")
    Next
    Est-ce que vous connaissez ce problème? Avez vous besoin de plus de détail sur la problématique? Est-ce qu'il y a moyen d'arriver à un résultat sans trop modifier le code VBA.

    Salutations,

  2. #2
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Points : 2 491
    Points
    2 491
    Par défaut
    Si vous essayer la fonction d'importation (sans vérification), avez-vous le même problème ?; Si la fonction d'importation tourne bien, vous n'avez qu'à effectuer les contrôles de nettoyage dans XL (vba).

  3. #3
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 035
    Points : 24 608
    Points
    24 608
    Par défaut
    Bonjour,
    C'est un problème connu.
    Lors de l'import, le convertisseur analyse les premières lignes de chaque colonne de la source, pas son type.
    Si les premières lignes sont vides ou ne dépassent pas 256 car. Il le considère comme un champs texte et tronqué les suivantes.
    Essai de faire un tri descendant avec un len() sur ta colonne mémo. Ça devrait résoudre ton souci.
    Cordialement,

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 808
    Points : 14 880
    Points
    14 880
    Par défaut
    bonjour,
    j'ai quelques colonnes en format Mémo, ces données sont tronquées lorsque je les transfert en Excel. D'où mon problème.
    OK mais cette ligne comporte une erreur de syntaxe:
    elle devrait s'écrire comme ceci:
    donc je me demande si ton code est correct, de plus, ce n'est pas la méthode usuelle pour parcourir un jeu d'enregistrements.

    On aurait aimé voir tout le code, particulièrement la constitution du recordset, histoire de vérifier qu'il n'y a pas de regroupement sur le champ en question, ce qui pourrait être une explication ...

    C'est un problème connu.
    Lors de l'import, le convertisseur analyse les premières lignes de chaque colonne de la source, pas son type.
    @ loufab, justement : ici c'est un export vers Excel pas un import, donc ce n'est pas son souci ...

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 035
    Points : 24 608
    Points
    24 608
    Par défaut
    Ce problème se produit quand on va d'Access vers Excel. Import ou export, suivant d'où on opère.
    Ici c'est du traitement via vba, donc ce n'est effectivement pas le cas.
    Je tenterais cependant de passer par une variable intermédiaire. Au lieu d'un simple cell=field.
    Cordialement

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 808
    Points : 14 880
    Points
    14 880
    Par défaut
    je comprend, mais en fait, ce n'est ni un import ni un export "classique", c'est une lecture de champ d'une table Access puis une écriture vers un cellule Excel.
    J'ai fait le test en mettant les champs de moins de 255 caractères en début de recordset sans reproduire le problème et seul un test avec un regroupement sur le champ à exporter l'a reproduit.
    Mais tant qu'on n'aura pas vu le code complet de GeorgesAntoineC ...

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    n.d.
    Inscrit en
    Juin 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : n.d.

    Informations forums :
    Inscription : Juin 2018
    Messages : 50
    Points : 31
    Points
    31
    Par défaut
    Merci pour toutes ces réponses, je vais débuter par l'idée de faire un tri len(). Sinon, étant donné qu'il base le type par les premières lignes, je pourrais tenter de mettre quelques lignes bidons qui forcerait des champs de texte long.

    Dans le cas contraire, je vous reviendrai avec plus de détail de mon code.


  8. #8
    Membre émérite Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 477
    Points : 2 255
    Points
    2 255
    Par défaut
    bonjour,
    Import ou Export?

    on est dans le forum VBA Access et il est question d'enrichir un classeur Excel avec le contenu d'un recordSet!

    la taille des colonne n'est pénalisante qu'en requête hors on ne requête pas sur Excel mais sur Access !

    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
    Sub test()
    With CreateObject("Excel.application")
        .Visible = True
        With .Workbooks.Open("C:\Documents\Classeur1.xlsx")
            Set rs = CurrentDb.OpenRecordset("TOTO")
            i = 0
            While Not rs.EOF
                .Sheets(1).range("A1").Offset(i).NumberFormat = "General"
                .Sheets(1).range("A1").Offset(i).WrapText = True
                .Sheets(1).range("A1").Offset(i) = rs("MaColonne")
               i = i + 1
              rs.MoveNext
            Wend
            .Close False
        End With
        .Quit
    End With
    End Sub

  9. #9
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 808
    Points : 14 880
    Points
    14 880
    Par défaut
    Citation Envoyé par GeorgesAntoineC Voir le message
    Merci pour toutes ces réponses, je vais débuter par l'idée de faire un tri len(). Sinon, étant donné qu'il base le type par les premières lignes, je pourrais tenter de mettre quelques lignes bidons qui forcerait des champs de texte long.

    Dans le cas contraire, je vous reviendrai avec plus de détail de mon code.

    tu n'as pas bien lu ce que j'ai écrit: cela ne vient pas de la taille des données des premiers enregistrements vu que ce n'est pas un export via la commande Docmd.TransfertSpreadSheet.
    Par contre, tu pourrais au moins confirmer ou non que le RecordSet ne contient pas de regroupement ...

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    n.d.
    Inscrit en
    Juin 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : n.d.

    Informations forums :
    Inscription : Juin 2018
    Messages : 50
    Points : 31
    Points
    31
    Par défaut
    Voici une partie de mon code qui va formater le fichier Excel. Bref, si vous voyez quelque chose qui cloche... à la base je ne suis en aucun cas un expert de vba...j'apprend sur le "tas" comme on dit ici.

    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
     
     Dim xlapp As Excel.Application
        On Error GoTo 0
        Dim xlbook As Excel.Workbook
        Dim xlSheet As Excel.Worksheet
        Dim Dte As String
     
        'Création de l'objet
        Set xlapp = CreateObject("Excel.Application")
     
        'On défini le nombre d'onglets
        xlapp.SheetsInNewWorkbook = 9
        'On ajoute un classeur
        Set xlbook = xlapp.Workbooks.Add
        xlapp.DisplayAlerts = False
        'On donne un nom au classeur
        Dte = "Liendudocument" & "Monclasseur.xlsx"
        xlbook.SaveAs Dte, AccessMode:=xlExclusive, ConflictResolution:=Excel.XlSaveConflictResolution.xlLocalSessionChanges
        'On rend le classeur visible
        xlapp.Visible = True
        'xlapp.DisplayAlerts = True
        'On créer l'objet onglet dans le nouveau classeur créé
        'On affecte un nom aux onglets
        'on libère l'objet onglet pour pouvoir en créer un nouveau ... etc
        Set xlSheet = xlbook.Worksheets(1)
        xlSheet.Name = "Onglet_1"
        xlbook.Sheets("Onglet_1").Tab.Color = RGB(255, 0, 0)
        Set xlSheet = Nothing
        Set xlSheet = xlbook.Worksheets(2)
        xlSheet.Name = "Onglet_2"
        xlbook.Sheets("Onglet_2").Tab.Color = RGB(255, 0, 0)
        Set xlSheet = Nothing
        Set xlSheet = xlbook.Worksheets(3)
        xlSheet.Name = "Onglet_3"
        xlbook.Sheets("Onglet_3").Tab.Color = RGB(255, 0, 0)
        Set xlSheet = Nothing
        Set xlSheet = xlbook.Worksheets(4)
        xlSheet.Name = "Onglet_4"
        xlbook.Sheets("Onglet_4").Tab.Color = RGB(0, 0, 255)
        Set xlSheet = Nothing
        Set xlSheet = xlbook.Worksheets(5)
        xlSheet.Name = "Onglet_5"
        xlbook.Sheets("Onglet_5").Tab.Color = RGB(255, 255, 0)
        Set xlSheet = Nothing
        Set xlSheet = xlbook.Worksheets(6)
        xlSheet.Name = "Onglet_6"
        Set xlSheet = Nothing
        Set xlSheet = xlbook.Worksheets(7)
        xlSheet.Name = "Onglet_7"
        Set xlSheet = Nothing
        Set xlSheet = xlbook.Worksheets(8)
        xlSheet.Name = "Onglet_8"
        Set xlSheet = Nothing
        Set xlSheet = xlbook.Worksheets(9)
        xlSheet.Name = "Onglet_9"
        Set xlSheet = Nothing
     
     
     
        'On remet la propriété de l'application à 3 (par défaut)
        xlapp.SheetsInNewWorkbook = 3
     
        '-----------------------------------------------------------------------------------------
        'Ouverture de la table Access pour TABLE_E_MON
        Dim rst As DAO.Recordset
        Set rst = CurrentDb.OpenRecordset("TABLE_E_MON", dbOpenDynaset)
        Dim TempLast As String
        Dim Max As Integer
        rst.MoveLast
        TempLast = rst.Fields("Colonne_E") 'enregistrement du dernier enregistrement
        rst.MoveFirst 'Retour à la première case
        Max = DCount("[Colonne_A]", "[TABLE_E_MON]")
     
        '-------------Premier onglet-------------
        'Création des entetes de tableau
        On Error Resume Next
        xlbook.Worksheets("Onglet_1").Activate
        ActiveWindow.Zoom = 70
        With xlbook.Sheets("Onglet_1")
     
            .Range("A2").Value = "Colonne_1" ' MASQUÉ
            .Columns("A:A").ColumnWidth = 15
            .Columns("A:A").EntireColumn.Hidden = True
            .Range("B2").Value = "Colonne_2"
            .Columns("B:B").ColumnWidth = 15
            .Range("C2").Value = "Colonne_3"
            .Columns("C:C").ColumnWidth = 13
            .Range("D2").Value = "Colonne_4"
            .Columns("D:D").ColumnWidth = 20.14
            .Range("E2").Value = "Colonne_5" ' MASQUÉ
            .Columns("E:E").ColumnWidth = 15
            .Columns("E:E").EntireColumn.Hidden = True
            .Range("F2").Value = "Colonne_6" ' MASQUÉ
            .Columns("F:F").ColumnWidth = 15
            .Columns("F:F").EntireColumn.Hidden = True
            .Range("G2").Value = "Colonne_7"
            .Columns("G:G").ColumnWidth = 20.14
            .Range("H2").Value = "Colonne_8" ' MASQUÉ
            .Columns("H:H").ColumnWidth = 15
            .Columns("H:H").EntireColumn.Hidden = True
            .Range("I2").Value = "Colonne_9" ' MASQUÉ
            .Columns("I:I").ColumnWidth = 15
            .Columns("I:I").EntireColumn.Hidden = True
            .Range("J2").Value = "Colonne_10" ' MASQUÉ
            .Columns("J:J").ColumnWidth = 15
            .Columns("J:J").EntireColumn.Hidden = True
            .Range("K2").Value = "Colonne_11"
            .Columns("K:K").ColumnWidth = 18
            .Range("L2").Value = "Colonne_12"
            .Columns("L:L").ColumnWidth = 13
            .Range("M2").Value = "Colonne_13"
            .Columns("M:M").ColumnWidth = 20.14
            .Range("N2").Value = "Colonne_14"
            .Columns("N:N").ColumnWidth = 70
            .Range("O2").Value = "Colonne_15"
            .Columns("O:O").ColumnWidth = 70
            .Range("P2").Value = "Impacts"
            .Columns("P:P").ColumnWidth = 35
            .Range("Q2").Value = "Colonne_16" ' MASQUÉ
            .Columns("Q:Q").ColumnWidth = 15
            .Columns("Q:Q").EntireColumn.Hidden = True
            .Range("R2").Value = "Colonne_17"
            .Columns("R:R").ColumnWidth = 18
            .Range("S2").Value = "Colonne_18" ' MASQUÉ
            .Columns("S:S").ColumnWidth = 15
            .Columns("S:S").NumberFormat = "dd/mmmm/yyyy"
            .Columns("S:S").EntireColumn.Hidden = True
            .Range("T2").Value = "Colonne_19" ' MASQUÉ
            .Columns("T:T").ColumnWidth = 15
            .Columns("T:T").NumberFormat = "dd/mmmm/yyyy"
            .Columns("T:T").EntireColumn.Hidden = True
            .Range("U2").Value = "Colonne_20"
            .Columns("U:U").ColumnWidth = 19
            .Columns("U:U").NumberFormat = "dd/mmmm/yyyy"
            .Range("V2").Value = "Colonne_21"
            .Columns("V:V").ColumnWidth = 17
            .Columns("V:V").NumberFormat = "dd/mmmm/yyyy"
            .Range("W2").Value = "Colonne_22"
            .Columns("W:W").ColumnWidth = 19
            .Range("X2").Value = "Colonne_23" ' MASQUÉ
            .Columns("X:X").ColumnWidth = 15
            .Columns("X:X").EntireColumn.Hidden = True
            .Range("Y2").Value = "Colonne_24" ' MASQUÉ
            .Columns("Y:Y").ColumnWidth = 15
            .Columns("Y:Y").EntireColumn.Hidden = True
            .Range("Z2").Value = "Colonne_25" ' MASQUÉ
            .Columns("Z:Z").ColumnWidth = 15
            .Columns("Z:Z").EntireColumn.Hidden = True
            .Range("AA2").Value = "Colonne_26" ' MASQUÉ
            .Columns("AA:AA").ColumnWidth = 15
            .Columns("AA:AA").EntireColumn.Hidden = True
            .Range("AB2").Value = "Colonne_27" ' MASQUÉ
            .Columns("AB:AB").ColumnWidth = 15
            .Columns("AB:AB").EntireColumn.Hidden = True
            .Range("AC2").Value = "Colonne_28" ' MASQUÉ
            .Columns("AC:AC").ColumnWidth = 15
            .Columns("AC:AC").EntireColumn.Hidden = True
            .Range("AD2").Value = "Colonne_29" ' MASQUÉ
            .Columns("AD:AD").ColumnWidth = 15
            .Columns("AD:AD").EntireColumn.Hidden = True
            .Range("AE2").Value = "Colonne_30" ' MASQUÉ
            .Columns("AE:AE").ColumnWidth = 15
            .Columns("AE:AE").EntireColumn.Hidden = True
     
            .Rows("2:2").RowHeight = 50
            .Range("A2:AE2").Interior.ColorIndex = 15
            .Range("A2:AE2").HorizontalAlignment = xlCenter
            .Range("A1:AE1").Merge
            .Range("A1:AE1").Interior.ColorIndex = 6
            .Range("A1:AE1").Font.Bold = True
            .Range("A2:AE2").Font.Bold = True
            .Range("A2:AE2").Font.Size = 12
            .Range("A1:AE1").Value = "Tableau_X en date du " & CStr(Date)
            .Range("A1:AE1").Font.Size = 16
            .Range("A2:AE2").AutoFilter
     
        Dim Count As Integer
        Dim i As Integer
        Count = 0
            'Remplissage du tableau pour les données recherchées
            For i = 1 To Max
     
                On Error Resume Next
     
                Do While rst.Fields("Colonne_X") <> "ATTRIBUT_1" And i < Max + 1 And rst.Fields("Colonne_1") <> TempLast
                    rst.MoveNext
                Loop
     
                If rst.Fields("Colonne_X") = "ATTRIBUT_1" Then
                    .Range("A" & i + 2) = rst.Fields("Colonne_1") ' MASQUÉ
                    .Range("B" & i + 2) = rst.Fields("Colonne_2") ' MASQUÉ
                    .Range("C" & i + 2) = rst.Fields("Colonne_3")
                    .Range("D" & i + 2) = rst.Fields("Colonne_4")
                    .Range("E" & i + 2) = rst.Fields("Colonne_5") ' MASQUÉ
                    .Range("F" & i + 2) = rst.Fields("IColonne_6") ' MASQUÉ
                    .Range("G" & i + 2) = rst.Fields("Colonne_7")
                    .Range("H" & i + 2) = rst.Fields("Colonne_8") ' MASQUÉ
                    .Range("I" & i + 2) = rst.Fields("Colonne_9") ' MASQUÉ
                    .Range("J" & i + 2) = rst.Fields("Colonne_10") ' MASQUÉ
                    .Range("K" & i + 2) = rst.Fields("Colonne_11")
                    .Range("L" & i + 2) = rst.Fields("Colonne_12")
                    .Range("M" & i + 2) = rst.Fields("Colonne_13")
                    .Range("N" & i + 2) = rst.Fields("Colonne_14")
                    .Range("O" & i + 2) = rst.Fields("Colonne_15")
                    .Range("P" & i + 2) = rst.Fields("Colonne_16")
                    .Range("Q" & i + 2) = rst.Fields("Colonne_17") ' MASQUÉ
                    .Range("R" & i + 2) = rst.Fields("Colonne_18")
                    .Range("S" & i + 2) = rst.Fields("Colonne_19") ' MASQUÉ
                    .Range("T" & i + 2) = rst.Fields("Colonne_20") ' MASQUÉ
                    .Range("U" & i + 2) = rst.Fields("Colonne_21")
                    .Range("V" & i + 2) = rst.Fields("Colonne_22")
                    .Range("W" & i + 2) = rst.Fields("Colonne_23")
                    .Range("X" & i + 2) = rst.Fields("Colonne_24") ' MASQUÉ
                    .Range("Y" & i + 2) = rst.Fields("Colonne_25")
                    .Range("Z" & i + 2) = rst.Fields("Colonne_26") ' MASQUÉ
                    .Range("AA" & i + 2) = rst.Fields("Colonne_27") ' MASQUÉ
                    .Range("AB" & i + 2) = rst.Fields("Colonne_28") ' MASQUÉ
                    .Range("AC" & i + 2) = rst.Fields("Colonne_29") ' MASQUÉ
                    .Range("AD" & i + 2) = rst.Fields("Colonne_30") ' MASQUÉ
                    .Range("AE" & i + 2) = rst.Fields("Colonne_31") ' MASQUÉ
     
                    Count = Count + 1
                    If rst.Fields("Colonne_31") = 1 Then
                        .Range("A" & (i + 2) & ":AE" & (i + 2)).Interior.ColorIndex = 45
                    End If
                    If IsNull(rst.Fields("Colonne_22")) Then
                        .Range("V" & i + 2).Interior.ColorIndex = 6
                    End If
                    If rst.Fields("Colonne_23") < Date Then
                        .Range("V" & i + 2).Interior.ColorIndex = 6
                    End If
                Else
                i = i - 1
                End If
                If rst.Fields("Colonne_1") = TempLast Then
                    i = Max
                End If
                rst.MoveNext
            Next
            'Mise en forme du tableau
            xlbook.Sheets("Onglet_1").Cells.EntireColumn.HorizontalAlignment = xlCenter
            xlbook.Sheets("Onglet_1").Cells.EntireColumn.VerticalAlignment = xlCenter
            xlbook.Sheets("Onglet_1").Columns("A:AE").WrapText = True
            xlbook.Sheets("Onglet_1").Cells.EntireRow.AutoFit
            xlbook.Sheets("Onglet_1").Range("A2:AE" & (Count + 2)).Borders.Value = 1
     
            With xlbook.Sheets("Onglet_1").Range("B2:R" & (Count + 2)).Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Weight = xlThick
            .ColorIndex = xlAutomatic
            End With
            With xlbook.Sheets("Onglet_1").Range("B2:R" & (Count + 2)).Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .Weight = xlThick
            .ColorIndex = xlAutomatic
            End With
            With xlbook.Sheets("Onglet_1").Range("B2:R" & (Count + 2)).Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Weight = xlThick
            .ColorIndex = xlAutomatic
            End With
            With xlbook.Sheets("Onglet_1").Range("B2:R" & (Count + 2)).Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .Weight = xlThick
            .ColorIndex = xlAutomatic
            End With
            With xlbook.Sheets("Onglet_1").Range("G2:W" & (Count + 2)).Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Weight = xlThick
            .ColorIndex = xlAutomatic
            End With
            With xlbook.Sheets("Onglet_1").Range("G2:W" & (Count + 2)).Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .Weight = xlThick
            .ColorIndex = xlAutomatic
            End With
            With xlbook.Sheets("Onglet_1").Range("G2:W" & (Count + 2)).Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Weight = xlThick
            .ColorIndex = xlAutomatic
            End With
            With xlbook.Sheets("Onglet_1").Range("G2:W" & (Count + 2)).Borders(xlEdgeRight)
           .Weight = xlThick
            .ColorIndex = xlAutomatic
            End With
             .LineStyle = xlContinuous
     
            xlbook.Sheets("Onglet_1").Sort.SortFields.Add Key _
                :=Range("G3:G" & (Count + 2)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
                :=xlSortNormal
            With xlbook.Sheets("Onglet_1").Sort
                .SetRange Range("A2:AE" & (Count + 2))
                .Header = xlYes
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With
            .Activate
            .Range("A2:AE" & (Count + 2)).Select
            Names.Add Name:="Tableau_E", RefersTo:="='" & ActiveSheet.Name & "'!" & Selection.Address
        End With
     
        Call Create_table_v(xlapp, xlbook, xlSheet, Dte, TempLast, Max, Count, i, rst)
        Call Create_table_m(xlapp, xlbook, xlSheet, Dte, TempLast, Max, Count, i, rst)
        Call Create_table_c(xlapp, xlbook, xlSheet, Dte, TempLast, Max, Count, i, rst)
        Call Create_table_cc(xlapp, xlbook, xlSheet, Dte, TempLast, Max, Count, i, rst)
        rst.Close
     
        Set rst = Nothing
        Dim Backup As String
        Backup = "Liendudocument\Backups\" & "Monclasseur_" & CStr(Date) & ".xlsx"
        xlapp.DisplayAlerts = False
        xlbook.SaveAs Dte, AccessMode:=xlExclusive, ConflictResolution:=Excel.XlSaveConflictResolution.xlLocalSessionChanges
        xlbook.SaveAs Backup, AccessMode:=xlExclusive, ConflictResolution:=Excel.XlSaveConflictResolution.xlLocalSessionChanges
        xlapp.DisplayAlerts = True
        xlbook.Close (True)
    l'appel des fonctions...appel du code semblable à lui ci-haut pour remplir les autres onglets.

  11. #11
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 808
    Points : 14 880
    Points
    14 880
    Par défaut
    peux-tu préciser le nom du champ de type Mémo ou le n° de la ligne incriminée ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/07/2015, 12h53
  2. Importer une table Access Vers Sql Server
    Par Rock01 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/11/2008, 08h00
  3. import d'une table access ds mysql
    Par nogood1 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 26/05/2006, 14h12
  4. Envoyer les colones d'une table access vers excel
    Par mapoupou dans le forum Access
    Réponses: 5
    Dernier message: 05/11/2005, 18h42
  5. Convertir une table ACCESS vers PARADOX
    Par BernardM dans le forum Paradox
    Réponses: 1
    Dernier message: 09/12/2004, 11h37

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