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

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 19
    Points : 12
    Points
    12
    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 à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Points : 21
    Points
    21
    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 à l'essai
    Inscrit en
    Mars 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 19
    Points : 12
    Points
    12
    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 chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    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 à l'essai
    Inscrit en
    Mars 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 19
    Points : 12
    Points
    12
    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 chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    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 à l'essai
    Inscrit en
    Mars 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 19
    Points : 12
    Points
    12
    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

  8. #8
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 777
    Points
    19 777
    Billets dans le blog
    65
    Par défaut
    Salut,

    et avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xlBook.Sheets(1).select
    A+

  9. #9
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par User Voir le message
    Salut,

    et avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xlBook.Sheets(1).select
    A+
    Bonjour,

    Cela fonctionne, merci encore à tout le forum.

    Bonne journée.

    Joselilto.

  10. #10
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 777
    Points
    19 777
    Billets dans le blog
    65
    Par défaut
    Pense au tag [Résolu] pour le service rendu

+ 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: 10
    Dernier message: 21/12/2020, 18h08
  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