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 :

Piloter importation Excel depuis Access en VBA


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 19
    Par défaut Piloter importation Excel depuis Access en VBA
    Bonjour le forum,

    Je débute sur Access VBA et j'avoue que c'est un peu différent sur Excel. J'essaie de traduire le code VBA ci-dessous qui fonctionne très bien sur ma macro excel mais j'ai un problème lorsque je veux la lancer en code Access VBA. J'ai commencé sur Access avec le code ci-dessous (voir 2ème partie de ce message après les*******).

    Code VBA ci-dessous qui fonctionne très bien sur excel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test() 
     
    For s = 2 To Sheets.Count
     
    Sheets(s).[A1].CurrentRegion.Offset(1, 0).Copy _
    Sheets("consolidation").[A65000].End(xlUp).Offset(1, 0)
    Next s
     
    End Sub


    Ci-dessous le commencement de mon code sur Access mais je lorsque je veux consolider les feuille 1 à l'infini cela ne fonctionne pas ?

    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
    Public Sub RunMacroImport ()
     
    Dim xlApp As New Excel.Application
     
    Dim xlSheet As Excel.Worksheet
    Dim xlBook As Excel.Workbook
     
    Dim i As Long
    Dim vtemp As Variant
     
    'J'initialise mes variables
     
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Open("C:Report.xls")
     
    Set xlSheet = xlBook.Worksheets.Add
    xlSheet.Name = "Consolidation"
    (je bloque ici lorsque je veux commencer avec une boucle : For xlSheet depuis feuille 1 à l'infini...)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    xlBook.Save
    xlApp.Quit
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
    Si quelqu'un pourrait me donner un début de piste cela m'aiderait énormément...

    Merci d'avance.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Par défaut
    Tu peux un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For each xlSheet in xlBook.worksheets
    if xlSheet.name <>"Consolidation" then
    xlSheet.[A1].CurrentRegion.Offset(1, 0).Copy _
    xlbook.Sheets("consolidation").[A65000].End(xlUp).Offset(1, 0)
    end if
    next xlSheet

  3. #3
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 19
    Par défaut Suite : Pilotage VBA Access avec Excel
    Rebonjour cyrgod,

    Cela marche parfaitement vous êtes vraiement un expert. Par contre j'aimerais encore essayer d'ajouter encore ce morceau de code mais cela n'a pas l'aire de fonctioner pourriez-vous m'aider à nouveau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    xlSheet("consolidation").Next.Activate ' Comment puis-je activer la prochaine feuille en VBA Access ?
        xlSheet.Rows("1:1").Select
        xlSheet.Copy
        xlSheet("consolidation").Select
        xlshhet.Rows("1:1").Select
        xlSheet.Paste
    Ci-dessous le code qui fonctionne sur Vba excel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sheets("consolidation").Next.Activate
        Rows("1:1").Select
        Selection.Copy
        Sheets("consolidation").Select
        Rows("1:1").Select
        ActiveSheet.Paste
    Merci de votre aide à nouveau, je suis en train d'apprendre avec vous et le forum.

    Joselito

  4. #4
    Membre Expert
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Par défaut
    Bonjour,
    et avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xlSheet("consolidation").Next.Select

  5. #5
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 19
    Par défaut Pilotage avec Access avec importation Excel
    Citation Envoyé par helas Voir le message
    Bonjour,
    et avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xlSheet("consolidation").Next.Select
    Bonjour,

    J'ai juste changé le début de votre code par xlbook.sheets et maintenant cela a l'air de fonctionner. Avec xlsheet c'est bizarre un message d'erreur apparaît pourtant la variante a bien été déclarée. Maintenant j'ai un problème sur la ligne Rows("1:1")paste. J'ai ajouter toute la procédure ci-dessous:

    ***************

    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
    Public Sub RunMacroImport()
     
        Dim xlApp As New Excel.Application
        Dim xlSheet As Excel.Worksheet
        Dim xlBook As Excel.Workbook
     
        Dim i As Long
        Dim vtemp As Variant
     
        'J'initialise mes variables
        Set xlApp = CreateObject("Excel.Application")
        Set xlBook = xlApp.Workbooks.Open("H:\Forecast\FICO Weekly Report.xls")
     
        Set xlSheet = xlBook.Worksheets.Add
        xlSheet.Name = "Consolidation"
     
        For Each xlSheet In xlBook.Worksheets
            If xlSheet.Name <> "Consolidation" Then
            xlSheet.[A1].CurrentRegion.Offset(1, 0).Copy _
            xlBook.Sheets("consolidation").[A65000].End(xlUp).Offset(1, 0)
            End If
        Next xlSheet
     
        xlBook.Sheets("consolidation").Next.Select
        Rows("1:1").EntireRow.Select
        Rows("1:1").Copy
        xlBook.Sheets("consolidation").Select
        Rows("1:1").EntireRow.Select
        Rows("1:1").Paste ' le problème est ici :cry:
     
      xlBook.Save
        xlApp.Quit
        Set xlSheet = Nothing
        Set xlBook = Nothing
        Set xlApp = Nothing
     
        MsgBox "Fin de la procédure. :)"
    End Sub
    ****************

    Merci pour votre aide encore.

    Joselito

  6. #6
    Membre Expert
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Par défaut
    puisque xlSheet est défini, remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        xlBook.Sheets("consolidation").Select
        Rows("1:1").EntireRow.Select
        Rows("1:1").Paste ' le problème est ici :cry:
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        xlSheet.Select
        xlSheet.Rows("1:1").EntireRow.Select
        slSheet.Rows("1:1").Paste ' le problème est ici :cry:
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        With xlSheet
             .Select
             .Rows("1:1").EntireRow.Select
             .Rows("1:1").Paste ' le problème est ici :cry:
        End With

  7. #7
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 19
    Par défaut
    Citation Envoyé par helas Voir le message
    puisque xlSheet est défini, remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        xlBook.Sheets("consolidation").Select
        Rows("1:1").EntireRow.Select
        Rows("1:1").Paste ' le problème est ici :cry:
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        xlSheet.Select
        xlSheet.Rows("1:1").EntireRow.Select
        slSheet.Rows("1:1").Paste ' le problème est ici :cry:
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        With xlSheet
             .Select
             .Rows("1:1").EntireRow.Select
             .Rows("1:1").Paste ' le problème est ici :cry:
        End With
    Rebonjour,

    J'ai essayer votre méthode et cela fonctionne aussi très bien avec with xlsheet... Entre temps, j'ai aussi trouvé une autre méthode sans "with" ci-dessous le détails :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    xlBook.Sheets("consolidation").Next.Select
    xlBook.ActiveSheet.Rows("1").Copy
    xlBook.ActiveSheet.Paste Destination:=xlBook.Sheets("consolidation").Rows("1")
    Par contre, j'ai un autre problème voici mes explications :

    Si je veux insérer un feuille dans mon classeur avant la (feuille1) en sachant qu'elle a déjà un nom défini ("06.01.2010"), et le nom pourrait changer dans le futur et j'aimerais qu'il prenne par défaut le de mon du classeur techinque (sheet1) et qu'il ajoute une nouvelle feuille avant la feulle n° 1.

    Voici, le début de mon code mais je bloque sur la 2ème ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
    '???????.(Sheet1).Select:cry: ' Si j'utilise le nom de la feuille ("06.01.2010")cela fonctionne.
    Set xlSheet = xlBook.Worksheets.Add
    xlSheet.Name = "Consolidation"
    Merci d'avance pour votre aide.

    Joselito

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

Discussions similaires

  1. [AC-2007] Ouvrir un fichier excel depuis access en vba
    Par Blado_sap dans le forum VBA Access
    Réponses: 17
    Dernier message: 23/09/2024, 08h05
  2. Importer Excel a Access en vba
    Par jameslaguerre dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/09/2013, 16h43
  3. renommer une feuille d'un fichier excel depuis Access en VBA
    Par alexkickstand dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/08/2007, 17h55
  4. [VBA] Mise en forme d'un fichier Excel depuis Access
    Par morgiane dans le forum Access
    Réponses: 2
    Dernier message: 25/07/2007, 10h32
  5. [VBA Excel Débutant] Tri d'un fichier Excel depuis Access
    Par elgringo2007 dans le forum Access
    Réponses: 3
    Dernier message: 07/08/2006, 16h21

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