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 excel depuis access : select


Sujet :

VBA Access

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Par défaut Piloter excel depuis access : select
    Bonjour, je début au VB sur access et j'aimerais savoir pourquoi je n'arrive pas à effectuer un vulgaire copier coller dans un fichier excel. Voici mon bout de code ( je vous épargne l'ouverture, fermeture, désallocation) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
       Dim xlApp As Excel.Application
       Dim xlSheet As Excel.Worksheet
       Dim xlBook As Excel.Workbook
     
    ' -- programme d'ouverture fichier blabla...
     
        xlSheet.Range("A1:C8").Select
        Selection.Copy
        xlBook.Worksheets.Add.Name = "Projet"
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=True
    J'obtient la même erreur 1004 " la méthode sélect de la classe range à échouer".
    Je ne sais pas comment faire un copier coller sans utiliser la fonction select.
    Merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Par défaut
    Avant de faire le Paste, tu dois sélectionner une cellule de ta nouvelle worksheet "Projet" pour lui dire où doit se faire la copie

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Par défaut
    J'ai pourtant rajouté la ligne : xlSheet.Range("A1").Select juste avant le pastespecial mais cela ne fonctionne toujours pas.
    D'ailleurs l'erreur intervient bien avant, dès le premier select (xlSheet.Range("A1:C8").Select).

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Par défaut
    Vérifie que xlSheet représente bien une worksheet valable (pour la première erreur) avant de faire le Select :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ' declare xlSheet comme étant la première sheet
    Set xlSheet = xlBook.Worksheets(1)
    Pour la deuxième erreur, il faut également que xlSheet pointe bien vers la nouvelle worksheet créée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ' crée une nouvelle worksheet comme étant la dernière
    xlBook.Sheets.Add After:=Worksheets(Worksheets.Count)
    ' Déclare la nouvelle sheet comme étant la sheet courante
    Set xlSheet = xlBook.Worksheets(Worksheets.Count)
    ' Renomme la sheet créée
    xlSheet.Name = "Projet"
    ' Sélectionne les cellules où copier
    xlSheet.Range("A1:C8").Select

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Par défaut
    Ca marche en déclarant proprement les sheets. Mais à quoi sert la déclaration Set xlSheet = xlBook.Worksheets(1) ? Et ce qu'on pourrait se contenter de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set xlSheet = xlBook.Worksheets.Add
     xlSheet.Name = "Projet"
    xlSheet.Cells(1, 1).Select
    En outre, je pense avoir un problème car une fois le prog terminé, je ne peux pas lancer mon fichier excel ( il est "occupé"). Je pense avoir un problème au niveau de la fermeture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'Fermeture
     
        xlBook.Close
        xlApp.Quit
        ' désallocation mémoire
        Set xlSheet = Nothing
        Set xlBook = Nothing
        Set xlApp = Nothing

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Par défaut
    La méthode .Add demande seulement à Excel de créer la sheet, rien de plus.
    Si tu veux utiliser une variable pour désigner une sheet et qu'Access le sache, tu dois établir le lien entre la variable et la sheet, d'où le "SET".

    Pour ce qui est du fichier Excel qui est "occupé", as-tu fermé le fichier dans ton code VBA ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlBook.Close True, "Le_Nom_de_Mon_Fichier"
    Le "True" pour dire que tu veux enregistrer les changements et "Le_Nom_de_Mon_Fichier" pour lui dire sous quel nom de fichier.

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Par défaut
    En fait, j'avais un processus excel résiduel issu des plantages de mon précédent code. Maintenant tout roule.
    Merci pour tout

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

Discussions similaires

  1. Piloter importation Excel depuis Access en VBA
    Par Joselito2 dans le forum VBA Access
    Réponses: 9
    Dernier message: 10/05/2010, 15h45
  2. piloter excel depuis access : trier
    Par Arzawe dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/03/2008, 11h29
  3. comment fermer un fichier Excel depuis Access?
    Par audrey_desgres dans le forum Access
    Réponses: 14
    Dernier message: 21/06/2005, 12h43
  4. Ouvrir un fichier excel depuis access
    Par ptitegrenouille dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 03/05/2005, 11h47
  5. imprimer feuille excel depuis access
    Par Jean Bonnisme dans le forum Access
    Réponses: 3
    Dernier message: 18/11/2004, 08h46

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