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 :

Mise en forme de table Access sous Excel [AC-2002]


Sujet :

VBA Access

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 132
    Points : 89
    Points
    89
    Par défaut Mise en forme de table Access sous Excel
    Bonjour,

    je souhaite mettre en forme un export de table access sous Excel.

    La majeur partie du code fonctionne car j'ai repris du code sur le forum.

    Mais la partie en commentaire ne fonctionne pas.

    Voilà ce que je voudrais faire, quand la cellule en BH contient EIC la ligne est mis dans une couleur de fond par exemple jaune. Et une autre couleur de fond lorsqu'il y a EVEN.

    Merci par avance pour votre aide.

    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
     
        'ouverture du fichier créé et application de la macro de mise en forme
     
     
        Set xlApp = New Excel.Application
        Dim xlRange As Variant
     
        xlApp.Visible = True
        Set xlWkb = xlApp.Workbooks.Open(CheminFichier & FileName & "")
        Set xlSheet = xlWkb.Worksheets(1)
        Set xlRange = xlSheet.UsedRange
     
        'choix de la police, de la taille, mise en gas de la première ligne
        xlRange.Font.Name = "ARIAL"
        xlRange.Font.Size = 8
        xlSheet.Rows("1:1").Font.Bold = True
     
        'mise en forme automatique des largeurs de colonne
     
        xlRange.EntireColumn.AutoFit
     
        'vérouillage des volets à partir de la ligne2
        xlSheet.Range("A2").Select
        xlApp.ActiveWindow.FreezePanes = True
        xlSheet.Cells(1, 60).Value = "Etablissement"
     
    'centrage des valeurs dans la colonne B
        xlSheet.Columns("B:B").HorizontalAlignment = xlCenter
     
    /* partie qui ne fonctionne pas  
        'NbLigne = ActiveSheet.UsedRange.Rows.Count
        'Dim RVB As Variant
     
        'Dim j As Long
        'For j = NbLigne To 1 Step -1
        'If xlSheet.Cells(j, 60).Value = "EIC" Then xlRange.Font.Interior.Color = RGB(59, 179, 73)
        'If xlSheet.Cells(j, 60).Value = "EVEN" Then xlRange.Font.Interior.Color = RVB(32, 124, 255)
        'Next j */
     
        'sauvegarde du classeur
        xlWkb.Save
     
        Set xlRange = Nothing
        Set xlSheet = Nothing
        Set xlSheet = Nothing
        Set xlWkb = Nothing
        Set xlApp = Nothing

  2. #2
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 132
    Points : 89
    Points
    89
    Par défaut
    j'ai trouvé pour changer la couleur de la police :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlSheet.Cells(1, 1).Font.ColorIndex = 13
    j'ai essayé de changer la couleur de fond sans succès avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xlRange.Font.Interior.Color = RGB(59, 179, 73)
    la notation suivante ne fonctionne pas non plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlSheet.Cells(1, 1).Font.Interior.Color  = 13

  3. #3
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 465
    Points : 549
    Points
    549
    Par défaut
    peux-tu essayer avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlSheet.Cells(1,1).interior.ColorIndex = 24
    où 24 = couleur bleue

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 132
    Points : 89
    Points
    89
    Par défaut
    Bonjour,

    et merci en effet cela fonctionne.

    Est-ce que tu sais comment récupérer le nombre de ligne actif du document ?

    car d'habitude j'utilise sur Excel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NbLigne = ActiveSheet.UsedRange.Rows.Count
    Mais sous access cela ne fonctionne pas.

    Est-ce que je peux applique la couleur de fond directement à la ligne plutôt qu'à une cellule ?

  5. #5
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 465
    Points : 549
    Points
    549
    Par défaut
    Pour retrouver la zone active, on peut utiliser ceci qui remonte depuis la dernière ligne de la feuille jusqu'à la dernière ligne utilisée. La zone active est alors de la ligne 1 à la dernière utilisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A65536").End(xlUp).Select
    NbLigne = ActiveCell.Row
    En Access 2003, on était limité à 65000 lignes. Evidement avec 2007, 2010, 2012 tu cours le risque que ton correspondant t'envoie un fichier de plus de 65000 lignes.

  6. #6
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 132
    Points : 89
    Points
    89
    Par défaut
    Merci cela fonctionne le code est le suivant je le donne pour le cas où quelqu'un aurai la même problèmatique.

    Cependant le traitement est long à cause de mais boucle For.

    Est-ce qu'il y a un moyen d'optimiser le traitement pour le rendre plus rapide ?

    Merci en tous cas pour votre aide.

    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
     
        'ouverture du fichier créé et application de la macro de mise en forme
     
        Set xlApp = New Excel.Application
        Dim xlRange As Variant
     
        xlApp.Visible = True
        Set xlWkb = xlApp.Workbooks.Open(CheminFichier & FileName & "")
        Set xlSheet = xlWkb.Worksheets(1)
        Set xlRange = xlSheet.UsedRange
     
        'choix de la police, de la taille, mise en gas de la première ligne
        xlRange.Font.Name = "ARIAL"
        xlRange.Font.Size = 8
        xlSheet.Rows("1:1").Font.Bold = True
     
        'mise en forme automatique des largeurs de colonne
     
        xlRange.EntireColumn.AutoFit
     
        'vérouillage des volets à partir de la ligne2
        xlSheet.Range("A2").Select
        xlApp.ActiveWindow.FreezePanes = True
        xlSheet.Cells(1, 60).Value = "Etablissement"
     
    'centrage des valeurs dans la colonne B
        xlSheet.Columns("B:B").HorizontalAlignment = xlCenter
     
        Dim j As Long
        Dim i As Long
        Dim k As Long
        Range("A65000").End(xlUp).Select
        NbLigne = ActiveCell.Row
     
        For j = NbLigne To 1 Step -1
            For i = 60 To 1 Step -1
            If xlSheet.Cells(j, 60).Value = "EIC" Then xlSheet.Cells(j, i).Interior.ColorIndex = 23
            Next i
            For k = 60 To 1 Step -1
            If xlSheet.Cells(j, 60).Value = "EVEN" Then xlSheet.Cells(j, k).Interior.ColorIndex = 24
            Next k
        Next j
     
        'sauvegarde du classeur
        xlWkb.Save
     
        Set xlRange = Nothing
        Set xlSheet = Nothing
        Set xlSheet = Nothing
        Set xlWkb = Nothing
        Set xlApp = Nothing

  7. #7
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 132
    Points : 89
    Points
    89
    Par défaut
    j'ai fais sauter un boucle For inutile pour gagner en temps mais c'est pas çà.

    je donne quand même le code modifié.

    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
     
        'ouverture du fichier créé et application de la macro de mise en forme
     
     
        Set xlApp = New Excel.Application
        Dim xlRange As Variant
     
        xlApp.Visible = True
        Set xlWkb = xlApp.Workbooks.Open(CheminFichier & FileName & "")
        Set xlSheet = xlWkb.Worksheets(1)
        Set xlRange = xlSheet.UsedRange
     
        'choix de la police, de la taille, mise en gas de la première ligne
        xlRange.Font.Name = "ARIAL"
        xlRange.Font.Size = 8
        xlSheet.Rows("1:1").Font.Bold = True
     
        'mise en forme automatique des largeurs de colonne
     
        xlRange.EntireColumn.AutoFit
     
        'vérouillage des volets à partir de la ligne2
        xlSheet.Range("A2").Select
        xlApp.ActiveWindow.FreezePanes = True
        xlSheet.Cells(1, 60).Value = "Etablissement"
     
    'centrage des valeurs dans la colonne B
        xlSheet.Columns("B:B").HorizontalAlignment = xlCenter
     
        Dim j As Long
        Dim i As Long
        Range("A65536").End(xlUp).Select
        NbLigne = ActiveCell.Row
     
        For j = NbLigne To 1 Step -1
            For i = 60 To 1 Step -1
            If xlSheet.Cells(j, 60).Value = "EIC" Then xlSheet.Cells(j, i).Interior.ColorIndex = 23
            If xlSheet.Cells(j, 60).Value = "EVEN" Then xlSheet.Cells(j, i).Interior.ColorIndex = 24
            Next i
        Next j
     
        'sauvegarde du classeur
        xlWkb.Save
     
        Set xlRange = Nothing
        Set xlSheet = Nothing
        Set xlSheet = Nothing
        Set xlWkb = Nothing
        Set xlApp = Nothing

  8. #8
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 465
    Points : 549
    Points
    549
    Par défaut
    Entretemps, j'ai vu ceci qui peut aussi t'aider : http://www.developpez.net/forums/d13...ar-automation/

  9. #9
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 132
    Points : 89
    Points
    89
    Par défaut
    merci je l'ai ajouter dans mes favoris

    j'essai de bloquer l'actualisation de la page comme sous excel pour en pas voir les lignes se colorer en allant.

    Je pense que je peux gagner en temps de traitement.

    j'ai essayer ceci sans succès en cherchant sur le web.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DoCmd.Echo False
    Application.Echo False
    pour remplacer le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating=False
    d'excel.

    Je continue de chercher comment bloquer la visualisation du traitement pour gagner en temps car là je suis à 2 minutes pour 630 lignes donc lors d'un export de 10 000 ou 20 000 lignes c'est pas gagné

  10. #10
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 132
    Points : 89
    Points
    89
    Par défaut
    J'ai toujours pas trouvé la façon de blooquer l'affichage.
    J'ai parcouru le forum et testé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DoCmd.Echo False
    Application.Echo False
    et aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DoCmd.Echo No
    Application.Echo False
    sans succès

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

Discussions similaires

  1. [XL-2007] Mise à jour table access depuis Excel
    Par daimadoshi dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/09/2011, 15h15
  2. Réponses: 0
    Dernier message: 29/04/2009, 02h03
  3. vba - Import Tables Access sous Excel
    Par House MD dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/08/2008, 11h54
  4. Extraction d'une table Access sous Excel
    Par Chikatilo dans le forum VBA Access
    Réponses: 11
    Dernier message: 22/07/2008, 15h18
  5. Transfert de données table access sous excel
    Par lg022 dans le forum Access
    Réponses: 15
    Dernier message: 15/03/2007, 16h30

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