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

Macros et VBA Excel Discussion :

Problème avec ActiveWorkbook et ActiveSheet


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Par défaut Problème avec ActiveWorkbook et ActiveSheet
    Bonjour j'ai le code suivant qui ouvre un nouveau classeur excel et créé une feuille etc. Ca marche très bien la première fois, mais si j'exécute la deuxième fois j'espérais qu'il allait me créer et travailler sur le nouveau classeur, mais il y a un problème avec ActiveWorkbook et ActiveSheet car ça pointe toujours vers l'ancien classeur. J'ai essayé avec Activate, mais ça ne change rien.

    Voici un extrait de mon code (j'ai raccourci le tout):

    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
     
        Dim xlApp As Excel.Application
        Dim xlBook As Excel.Workbook
        Dim xlSheet As Excel.Worksheet
        Dim pt As Excel.PivotTable
        Dim db As DAO.Database, Rst As DAO.Recordset, fld As DAO.Field
     
        Set xlApp = New Excel.Application
        Set xlBook = xlApp.Workbooks.Add
        Set xlSheet = xlBook.Worksheets.Add
     
        xlBook.Sheets.Add
        xlBook.Activate
     
        xlBook.Sheets(1).Activate
        Set xlSheet = ActiveSheet
        MsgBox (xlSheet.Name)
    si j'imprime xlSheet.Name il affiche le nom de la feuille du premier classeur et non de la feuille du classeur nouvellement créé.

    J'ai cherché dans la FAC sans trouver mon bonheur. Est-ce que quelqu'un a aussi eu ce problème ?

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Par défaut
    j'ai oublié de préciser quelque chose. Le premier classeur ouvert est visible, le nouveau n'est pas visible lors sa création et sera rendu visible en fin de création...est-ce que l'invisibilité peut jouer sur la fonction activate quand un classeur visible existe?

  3. #3
    Membre confirmé Avatar de Ania
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Par défaut
    j'avais aussi à gérer différents classeurs par le code

    et la méthode la plus simple que j'ai trouvée est de créer 2 variables
    une pour chaque et ainsi tu as juste à utiliser les variables.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim MonClasseur1 As Workbook  
    Dim MonClasseur2 As Workbook 
     
    'Avant la création du nouveau classeur
    Set MonClasseur1 = ActiveWorkbook
     
    'Apres la création du nouveau classeur
    Set MonClasseur2 = ActiveWorkbook
    peut etre ca pourra t'aider

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Par défaut
    le problème c'est que ce ne sont pas toujours forcément deux classeurs, l'utilisateur peut avoir plusieurs classeurs ouvert lors de l'extraction vers Excel et je ne peux donc pas me baser sur deux variables...

  5. #5
    Membre confirmé Avatar de Ania
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Par défaut
    peut etre peux tu utiliser un tableau de classeur à dimension variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim MesClasseurs() as Workbook

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Par défaut
    non car j'ai besoin de la fonction activate et de la variable ActiveWorkbook et ActiveSheet, car sinon chez moi la fonction PivotCaches ne marche pas (je ne sais pas pourquoi d'ailleurs), car j'essaie avec ActiveWorkbook.PivotCaches... ça marche, quand j'essaie avec xlBook.PivotCaches il me donne une erreur (résoudre ce problème pourrait aussi résoudre l'autre

  7. #7
    Membre confirmé Avatar de Ania
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Par défaut
    dans ce cas si tu utilises le tableau de classur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MesClasseurs(1).Activate
    ActiveWorkbook.PivotCaches
    Est-ce que ca t'aide ??

  8. #8
    Membre confirmé Avatar de Ania
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Par défaut
    sinon peux nous donner ton message d'erreur

    [Edit...]
    En supprimant une ligne (en gras) de ton code ca marche correctement car en fait tu ne peut pas ouvrir deux fois Excel

    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
        Dim xlApp As Excel.Application
        Dim xlBook As Excel.Workbook
        Dim xlSheet As Excel.Worksheet
        Dim pt As Excel.PivotTable
        Dim db As DAO.Database, Rst As DAO.Recordset, fld As DAO.Field
        
        Set xlApp = New Excel.Application
        Set xlBook = xlApp.Workbooks.Add
        Set xlSheet = xlBook.Worksheets.Add
    
        xlBook.Sheets.Add
        xlBook.Activate
    
        xlBook.Sheets(1).Activate
        Set xlSheet = ActiveSheet
        MsgBox (xlSheet.Name)
    Et comme ca fonctionne dans le MsgBox j'ai bien Feuil5

  9. #9
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Par défaut
    super c'était effectivement l'ouverture répétée d'Excel Merci bcp en tout cas.

    Pour info, maintenant je teste de la façon suivant si excel est déjà ouvert et si ce n'est pas le cas je l'ouvre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Set xlApp = GetObject(, "Excel.Application")
    If xlApp Is Nothing Then
                    Set xlApp = New Excel.Application
    End If

  10. #10
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Par défaut
    ahh, j'ai mis l'affaire trop tôt comme étant résolu

    J'ai un problème avec le GetObject, car si je mets ça autour du Set New Application il me sort des résultats tout bizarres.

    Comment je peux effectivement récupérer l'objet Excel et s'il n'existe pas en créer un nouveau?

Discussions similaires

  1. Problème avec "ActiveWorkbook.FollowHyperlink Address"
    Par lbar012001 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/01/2008, 13h43
  2. Problème avec ActiveWorkbook et ActiveSheet
    Par pschmidtke dans le forum Access
    Réponses: 2
    Dernier message: 20/06/2006, 12h12
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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