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 :

erreur mise en page excel


Sujet :

VBA Access

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 57
    Points
    57
    Par défaut erreur mise en page excel
    Bonjour

    A partir d'acces , je transfere des tableau sur Excel que je mets en page.
    Je crée un fichier excel par tableau.
    Le 1er fichier excel est généré sans probleme mais le 2eme fichier bloque sur la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    activsheet.Range(Cells(premiere_ligne_tableau, 1), Cells(derniere_ligne_tableau, derniere_colonne_tableau)).Borders(xlEdgeLeft).LineStyle = xlContinuous

    L'erreur est " La méthode ‘range’ de l’objet ‘_worksheet’ a échoué"

    savez vous pourquoi?


    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
    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
     
     
    Dim ssql As String
    Dim rs1 As DAO.Recordset
    Dim ExcelApp As Excel.Application
    Dim activsheet As Excel.Worksheet
    Dim activworkbook As Excel.Workbook
    Dim i As Integer
    Dim premiere_ligne_tableau As Integer
    Dim derniere_ligne_tableau As Integer
    Dim derniere_colonne_tableau as Integer
    Dim premiere_colonne_tableau As Integer
    Dim tableau as variant() 
     
    Tableau= array(« France », « Allemagne », « suisse », »Espagne »)
     
    For i = 0 to ubound(tableau) 
     
    Set ExcelApp = New Excel.Application
    ExcelApp.Visible = True
    ExcelApp.Workbooks.Add
    Set activworkbook = ExcelApp.ActiveWorkbook
    activworkbook.SaveAs CurrentProject.Path + "\" & tableau(i) & ".xls"
     
    Set activsheet = activworkbook.Sheets(1)
    activsheet.Name = “recap”
    activsheet.Activate
     
    premiere_ligne_tableau = 7
    derniere_ligne_tableau = premiere_ligne_tableau       
    premiere_colonne_tableau=1
    derniere_colonne_tableau = 5
     
    activsheet.Cells(premiere_ligne_tableau, premiere_colonne_tableau) = "nom"
    activsheet.Cells(premiere_ligne_tableau, premiere_colonne_tableau + 1) ="prénom"
    activsheet.Cells(premiere_ligne_tableau, premiere_colonne_tableau + 2) = "age"
    activsheet.Cells(premiere_ligne_tableau, premiere_colonne_tableau + 3) = "adresse"
    activsheet.Cells(premiere_ligne_tableau, premiere_colonne_tableau + 4) = "ville"
     
     
      ssql = "select nom, prénom, age, adresse, ville " + _
                " from COORD" + _
          " where pays='" + tableau(i) & "'" 
     
    Set rs1 = CurrentDb.OpenRecordset(ssql)
     
    i = 1
    While Not rs1.EOF
    activsheet.Cells(premiere_ligne_tableau + i, premiere_colonne_tableau) = rs1!nom
    activsheet.Cells(premiere_ligne_tableau + i, premiere_colonne_tableau + 1) = rs1!prénom
    activsheet.Cells(premiere_ligne_tableau + i, premiere_colonne_tableau + 2) = rs1!age
    activsheet.Cells(premiere_ligne_tableau + i, premiere_colonne_tableau + 3) = rs1!adresse
    activsheet.Cells(premiere_ligne_tableau + i, premiere_colonne_tableau + 4) = rs1!ville
     
    i = i + 1
    rs1.MoveNext
    Wend    
     
     
    derniere_ligne_tableau = premiere_ligne_tableau + i - 1
    Set rs1 = Nothing
     
     
    activsheet.Range(Cells(premiere_ligne_tableau, 1), Cells(derniere_ligne_tableau, derniere_colonne_tableau)).Borders(xlEdgeLeft).LineStyle = xlContinuous
    activsheet.Range(Cells(premiere_ligne_tableau, 1), Cells(derniere_ligne_tableau, derniere_colonne_tableau)).Borders(xlEdgeTop).LineStyle = xlContinuous
     activsheet.Range(Cells(premiere_ligne_tableau, 1), Cells(derniere_ligne_tableau, derniere_colonne_tableau)).Borders(xlEdgeBottom).LineStyle = xlContinuous
     activsheet.Range(Cells(premiere_ligne_tableau, 1), Cells(derniere_ligne_tableau, derniere_colonne_tableau)).Borders(xlEdgeRight).LineStyle = xlContinuous
          activsheet
    .Range(Cells(premiere_ligne_tableau, 1), Cells(derniere_ligne_tableau, derniere_colonne_tableau)).Borders(xlInsideVertical).LineStyle = xlContinuous
          activsheet
    .Range(Cells(premiere_ligne_tableau, 1), Cells(derniere_ligne_tableau, derniere_colonne_tableau)).Borders(xlInsideHorizontal).LineStyle = xlContinuous
     
     
    activworkbook.save
    activworkbook.Close
    ExcelApp.Visible = False
    Set activsheet = Nothing
    Set activworkbook = Nothing
    Set ExcelApp = Nothing
     
    Next 
    End sub

    Merci de votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 352
    Points : 415
    Points
    415
    Par défaut
    il te faut à chaque fois rappeler activsheet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    activsheet.Range(activsheet.Cells(premiere_ligne_tableau, 1), activsheet.Cells(derniere_ligne_tableau, derniere_colonne_tableau)).Borders(xlEdgeLeft).LineStyle = xlContinuous
    par contre, tu devrais utiliser 2 variable différentes i (i et j). Tu utilise i pour boucler sur les éléments de ton tableau et à nouveau i pour boucler sur les personnes à ajouter dans ton fichier Excel.

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 57
    Points
    57
    Par défaut
    merci beaucoup
    en rajoutant 'activsheet' ca marche parfaitement

    Pourquoi le probleme ne s'est pas posé pour le premier classeur excel mais pour le deuxieme?
    pourquoi vaut il mieu utiliser deux variable i et j?
    est ce pour eviter des problemes d'incrementation?

    merci

Discussions similaires

  1. [XL-2010] Mise en page excel vers PDF en VBA
    Par shakapouet dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/06/2017, 11h42
  2. [Vxi3] Mise en page Excel
    Par baraccuda330 dans le forum Webi
    Réponses: 0
    Dernier message: 28/02/2014, 09h52
  3. [WD-2003] Erreurs mise en page tableaux
    Par gilberte333 dans le forum VBA Word
    Réponses: 6
    Dernier message: 19/02/2013, 16h55
  4. Mise en page Excel via VBA Access
    Par popo68 dans le forum VBA Access
    Réponses: 3
    Dernier message: 06/11/2006, 17h03
  5. [Excel][POI] mise en page
    Par noOneIsInnocent dans le forum Documents
    Réponses: 1
    Dernier message: 14/09/2005, 11h47

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