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 :

Comment utiliser une 2° session Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Par défaut Comment utiliser une 2° session Excel
    Bonjour,

    Tout d'abord un grand MERCI à tous pour votre aide qui a toujours été forte utile

    Il y a peu de temps j'ai découvert (merci Eriic!!!) qu'il était possible possible d'ouvrir une 2° session excel ce qui peut faciliter la tâche...
    Perso je fais des essais en ce moment et le code suivant ne performe pas du tout de la même façon suivant les versions excel et windows mais surtout attention de ne pas bloquer votre ordi en testant...
    Cette discussion pour essayer de résoudre des questions svp:

    Pour le moment je bute sur la taille de la feuille graphique dans le classeur de la 2° session Excel car autant les feuilles de calcul excel classique sont de taille 100% autant le graphique lui s'affiche à 115% et pas moyen de le faire revenir à 100% car la fenêtre active n'est pas celle du graphique...pourtant Activewindow.zoom existe, ou même pagesetup.zoom...
    voici le code:

    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
    Dim Excel2 As Object
    Dim wb2 As Workbook
     
    Sub Recap() 'pour tester la création d'une 2° session Excel
    Dim sh2 As Worksheet
    Dim graph2 As Chart 
     
    elmnt = "test_graph1"
    Set Excel2 = CreateObject("Excel.Application")
    Excel2.Visible = True 
    reper1 = ThisWorkbook.Path
    reper1 = reper1 & "\test_excel"
    On Error Resume Next
    MkDir reper1
    Err.Clear
    On Error GoTo 0
    flnc = reper1 & "\" & elmnt & ".xls"
     
    Set wb2 = Excel2.Workbooks.Add
    Excel2.Application.DisplayAlerts = False
    Excel2.ActiveWorkbook.SaveAs Filename:=flnc, FileFormat:=xlExcel8, CreateBackup:=False
    Excel2.Application.DisplayAlerts = True
     
    wb2.Sheets.Add(Before:=wb2.Sheets("Feuil1")).Name = "Test"
    Set sh2 = wb2.Sheets("Test")
    With sh2
            .Cells(1, 2).Value = "Nombre"
            .Cells(1, 3).Value = "Quantité"
            For i = 0 To 20
            .Cells(i + 2, 2).Value = i
            .Cells(i + 2, 3).Value = 2 * i
            Next
    End With
    sh2.Cells(1, "M").Select
    Set graph2 = wb2.Charts.Add 'la feuille graphique est à 115%!!!
    wb2.ActiveChart.ChartType = xlXYScatterLines
    wb2.ActiveChart.Name = "Graph1"
    wb2.ActiveChart.SeriesCollection.NewSeries
    wb2.ActiveChart.SeriesCollection(1).Formula = _
            "=SERIES('Test'!C1,'Test'!B2:B" & 22 & " ,'Test'!C2:c" & 22 & ",1)"
    graph2.Activate
    ActiveWindow.Zoom = 100 'ne réduit pas la taille de la feuille graphique toujours zoomée à 115%
    'wb2.ActiveChart.Zoom = 100 'ne marche pas
    graph2.PageSetup.Zoom = 100 'ne réduit pas la taille de la feuille graphique toujours zoomée à 115%
     
    wb2.Save
    wb2.Close
     
    Excel2.Application.DisplayAlerts = False
    Excel2.Visible = False 
    Set Excel2 = Nothing
    End Sub

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    je sais pas si on peut piloter le zoom d'un sheets graphique en vba etant donné que cela se fait automatiquement en fonction de la fenetre application contrairement a un sheets classique

    a ne pas confondre avec un graph dans un sheets
    ce que je soupconne etant donné ta Selection en colonne "M"
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre éclairé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Par défaut re
    Salut,

    En fait ce wb2 fait un peu / beaucoup ce qu’il veut pour le moment...
    Le graphique s’ouvre parfois en 118% en 108% en 93%...et il y a plein d’autres trucs bizarre qui se produisent...

    En 1° j’aimerais régler cette histoire de taille graphique et pour cela il faut que wb2 devienne le classeur actif (ce que je n’arrive pas à faire !!!) puis ensuite que la feuille graphique de wb2 devienne elle aussi active et la c’est gagné...

    mais est il possible de rendre wb2 (le 2° workbook qui est lui sous excel2 ) actif???

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    j'avoue que je pige pas ta question
    quand tu ouvre une new cession d'excel avec un new workbook c'est lui qui est actif
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre éclairé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Par défaut re
    ben c'est ce que je croyais aussi mais non ce n'est pas le cas (enfin sur l'ordi qui veut bien marcher parce que l'autre refuse l'ouverture d'une 2° session excel: problème à voir plus tard)...il ne va quand même pas falloir utiliser une API pour simplement détecter ce wb2 et le rendre actif...

    PS: fais bien attention à vba et excel en utilisant excel2 parce qu'ici j'ai le 1° et 2° ordi qui ont pris un shoot je crois que c’est parce que lors de la fermeture d’excel (la 1° session) il reste malgré tout la session Excel2 d’ouverte (tu la verras dans le gestionnaire de tâche ) et si tu rouvres un classeur excel et bien tu risques de travailler sous cette 2° session excel, et là je crois que ca a perturbé vba en mettant du désordre dans les DLL !!!donc termine le processus de la 2° session excel dans le gestionnaire de tâche (pour l’instant pas mieux comme idée)

    tu peux tester le code et me dire le résultat chez toi stp:
    pour info le nom du classeur sous excel pour faire le test est : excel2_test4
    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
    Dim Excel2 As Object
    Dim wb2 As Workbook
     
    Sub Recap() 'pour tester la création d'une 2° session Excel
     
    Dim sh2 As Worksheet
    Dim graph2 As Chart
    Dim test_AWbook  As Workbook
     
    Sheets(1).Select
    Cells.Clear
     
    Set Excel2 = CreateObject("Excel.Application")
    Excel2.Visible = True 'pour afficher Excel2 'attention si en mode sans échec il faut cliquer sur débogage puis F8
    'ou F5 pour relancer
    Set wb2 = Excel2.Workbooks.Add
    MsgBox "Nom du classeur actif " & ActiveWindow.Caption 'probléme c'est ce classeur excel2_test4 qui est actif sous Excel et non wb2 sous excel2 !!!
    MsgBox "Nom de la fenêtre active " & ActiveSheet.Name 'c'est Feuil1 de ce classeur qui est active
     
     
    wb2.Sheets.Add(Before:=wb2.Sheets("Feuil1")).Name = "Test"
    MsgBox "Nom du classeur actif " & ActiveWindow.Caption 'probléme c'est ce classeur excel2_test4 qui est actif sous Excel et non wb2 sous excel2 !!!
    MsgBox "Nom de la fenêtre active " & ActiveSheet.Name 'c'est Feuil1 de ce classeur qui est active
     
    Excel2.Application.DisplayAlerts = False
    wb2.Close
    Excel2.Application.DisplayAlerts = True
     
    Excel2.Visible = False
    Set Excel2 = Nothing
    End Sub

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    et oui comme je te l'ai dis il y a des chose que vba seul ne peut pas faire
    activewindow te donne le classeur actif de l'instance de l'application qui pilote le fichier qui execute la macro
    parti de la c'est choux blanc

    pourquoi tu le fait pas dans la meme instance de excel ?
    tu n'aura pas de soucis d'instance a gérer
    et tu pourra piloter le zoom
    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
    Dim wb2 As Workbook
     
    Sub Recap() 'pour tester la création d'une 2° session Excel
    Dim sh2 As Worksheet
    Dim graph2 As Chart
     
    elmnt = "test_graph1"
    reper1 = ThisWorkbook.Path
    reper1 = reper1 & "\test_excel"
    On Error Resume Next
    MkDir reper1
    Err.Clear
    On Error GoTo 0
    flnc = reper1 & "\" & elmnt & ".xls"
    Application.ScreenUpdating = False
    Set wb2 = Workbooks.Add
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=flnc, FileFormat:=xlExcel8, CreateBackup:=False
    Application.DisplayAlerts = True
     
    wb2.Sheets.Add(Before:=wb2.Sheets("Feuil1")).Name = "Test"
    Set sh2 = wb2.Sheets("Test")
    With sh2
            .Cells(1, 2).Value = "Nombre"
            .Cells(1, 3).Value = "Quantité"
            For i = 0 To 20
            .Cells(i + 2, 2).Value = i
            .Cells(i + 2, 3).Value = 2 * i
            Next
    End With
    sh2.Cells(1, "M").Select
    Set graph2 = wb2.Charts.Add 'la feuille graphique est à 115%!!!
    wb2.ActiveChart.ChartType = xlXYScatterLines
    wb2.ActiveChart.Name = "Graph1"
    wb2.ActiveChart.SeriesCollection.NewSeries
    wb2.ActiveChart.SeriesCollection(1).Formula = _
            "=SERIES('Test'!C1,'Test'!B2:B" & 22 & " ,'Test'!C2:c" & 22 & ",1)"
    graph2.Activate
    ActiveWindow.Zoom = 80 'ne réduit pas la taille de la feuille graphique toujours zoomée à 115%
    'wb2.ActiveChart.Zoom = 100 'ne marche pas
    graph2.PageSetup.Zoom = 80 'ne réduit pas la taille de la feuille graphique toujours zoomée à 115%
     
    wb2.Save
    wb2.Close
     
    Application.DisplayAlerts = False
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. [XL-2003] Comment utiliser une variable pour filtrer dans Excel
    Par MichaSarah dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/06/2010, 16h40
  2. Comment utiliser une boite de dialogue Excel ?
    Par mamou30 dans le forum Delphi
    Réponses: 6
    Dernier message: 18/06/2007, 00h24
  3. Réponses: 2
    Dernier message: 14/05/2006, 19h36
  4. [WebForms]Comment utiliser une variable de session depuis JavaScript ?
    Par ThunderBib dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 05/05/2006, 14h01
  5. [nero] Comment utiliser une ancienne session
    Par FFF dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 17/08/2005, 14h03

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