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 :

[VBA][Excel] Copie écran


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 16
    Par défaut [VBA][Excel] Copie écran
    Bonjour à tous,

    Je suis en train de faire un tour de passe passe en essayant de récupérer des informations essentielles d'un logiciel utilisant le langage Cobol en créant une petite macro sous excel pour lancer des copies d'écran de ce logiciel. La difficulté c'est que lorsque je définie une zone, seule une partie des informations s'inscrivent dans la cellule vers laquelle je pointe avec la commande. Quelqu'un peut il me renseigner ? Je reste à votre disposition pour tout complément d'information au cas ou je n'aurai pas été assez clair.

    Merci

    Jeff

  2. #2
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Par défaut
    Salut, et bienvenue sur ce forum,

    VB ou VBA ? Si c'est bien du VBA, merci d'éditer ton titre pour corriger.

    Je pense que si tu nous copiais une partie de ton code sur un post à la suite, cela permettrait au VBA-pro de t'aider un peu mieux
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    En VBA Excel, tu peux définir le nbre de page en hauteur et en largeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        With ActiveSheet.PageSetup
            .FitToPagesWide = 1
            .FitToPagesTall = 1
        End With
        ActiveWindow.SelectedSheets.PrintOut Copies:=1
    Mais j'ignore si ça correspond à ton besoin

    A+

  4. #4
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 16
    Par défaut
    Etant néophyte je ne sais pas si je suis en VB ou VBA. Peux tu me dire la différence la plus notable ? Quand au code le voici :

    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
    Sub fbpk()
    Dim System As Object, Sessions As Object, Sess0 As Object
    Dim affaire As Object
    Dim Found, MyObject, MyCollection
     
    Set System = CreateObject("EXTRA.System")
    Set Sessions = System.Sessions
    Set Sess0 = System.ActiveSession
    Set MyCollection = Sheets(1).Range("a2:a10000")
     
    Sess0.Screen.SendKeys ("<Clear>")
     
    ' Initialise une variable.
    Found = False
    ' Se répète à chaque élément.
    For Each MyObject In MyCollection
        code = MyObject.Value
        If code = "" Then Exit For
        lig = MyObject.Row
        Sess0.Screen.SendKeys ("<Clear>")
        Sess0.Screen.SendKeys ("FBPK" & code & "<Enter>")
        Sess0.Screen.SendKeys (code) & "<Enter>"
        Sess0.Screen.WaitHostQuiet (100)
        'Cout direct
        Sheets(1).Range("e" & lig) = Sess0.Screen.GetString(8, 9, 21, 73)
        'Cession div
        MsgBox Sess0.Screen.GetString(4, 9, 4, 72)
        'Date
        d = Sess0.Screen.GetString(8, 58, 8, 63)
        d1 = Mid(d, 5, 2) & "/" & Mid(d, 3, 2) & "/" & Left(d, 2)
        Sheets(1).Range("d" & lig) = d1
    Next
     
    End Sub
    Merci d'avance pour votre aide si précieuse...

    [Edit] Balises Code powered by Xo, merci d'y penser plutôt que d'utiliser du violet [/Edit]

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Excuse mais comme je n'arrive pas à lire ton code, je le remets

    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
    Sub fbpk()
    Dim System As Object, Sessions As Object, Sess0 As Object
    Dim affaire As Object
    Dim Found, MyObject, MyCollection
     
    Set System = CreateObject("EXTRA.System")
    Set Sessions = System.Sessions
    Set Sess0 = System.ActiveSession
    Set MyCollection = Sheets(1).Range("a2:a10000")
     
    Sess0.Screen.SendKeys ("<Clear>")
     
        ' Initialise une variable.
        Found = False
        ' Se répète à chaque élément.
        For Each MyObject In MyCollection
            Code = MyObject.Value
            If Code = "" Then Exit For
            lig = MyObject.Row
            Sess0.Screen.SendKeys ("<Clear>")
            Sess0.Screen.SendKeys ("FBPK" & Code & "<Enter>")
            Sess0.Screen.SendKeys (Code) & "<Enter>"
            Sess0.Screen.WaitHostQuiet (100)
            'Cout direct
            Sheets(1).Range("e" & lig) = Sess0.Screen.GetString(8, 9, 21, 73)
            'Cession div
            MsgBox Sess0.Screen.GetString(4, 9, 4, 72)
            'Date
            d = Sess0.Screen.GetString(8, 58, 8, 63)
            d1 = Mid(d, 5, 2) & "/" & Mid(d, 3, 2) & "/" & Left(d, 2)
            Sheets(1).Range("d" & lig) = d1
        Next
    End Sub
    Maintenant, on va pouvoir le lire

    A tout'

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tout ça ne nous dit pas ce que tu veux imprimer... Mais je peux me tromper...

    Tu peux préciser

    A tout'

  7. #7
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 16
    Par défaut VBA sous excel
    Deux choses.

    Premièrement je me suis renseigné et c'est bien du VBA.

    Deuxièmement, je souhaiterai récupérer des informations affichées à l'écran pour les implémenter dans des cellules de excel (ou si possible access mais je crois que le code est différent)

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    A voir le code que tu utilises, je n'ai pas ta version (visiblement > 97) je ne peux pas t'aider.
    En outre, quand tu parlais de copie d'écran, je traduisais copie pixel par pixel de ton écran.
    Je te laisse avec Xo

    A+

  9. #9
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 16
    Par défaut
    Merci à tous pour votre aide mais j'ai finallement trouver la solution autour de moi. Pour info 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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    Sub fbpk()
    Dim System As Object, Sessions As Object, Sess0 As Object
    Dim affaire As Object
    Dim Found, MyObject, MyCollection
     
    Set System = CreateObject("EXTRA.System")
    Set Sessions = System.Sessions
    Set Sess0 = System.ActiveSession
    Set MyCollection = Sheets(1).Range("a2:a10000")
     
     
    Sess0.Screen.SendKeys ("<Clear>")
     
    ' Initialise une variable.
    Found = False
    ' Se répète à chaque élément.
    For Each MyObject In MyCollection
        code = MyObject.Value
        If code = "" Then Exit For
        lig = MyObject.Row
        Sess0.Screen.SendKeys ("<Clear>")
        Sess0.Screen.SendKeys ("FBPK " & "<Enter>")
        Sess0.Screen.SendKeys (code & "<Enter>")
        Sess0.Screen.WaitHostQuiet (50)
        Application.Wait (Now + TimeValue("0:00:02"))
        Sheets(1).Range("b" & lig) = Sess0.Screen.GetString(2, 1, 80)
        Sheets(1).Range("c" & lig) = Sess0.Screen.GetString(3, 1, 80)
        Sheets(1).Range("d" & lig) = Sess0.Screen.GetString(4, 1, 80)
        Sheets(1).Range("e" & lig) = Sess0.Screen.GetString(5, 1, 80)
        Sheets(1).Range("f" & lig) = Sess0.Screen.GetString(6, 1, 80)
        Sheets(1).Range("g" & lig) = Sess0.Screen.GetString(7, 1, 80)
        Sheets(1).Range("h" & lig) = Sess0.Screen.GetString(8, 1, 80)
        Sheets(1).Range("i" & lig) = Sess0.Screen.GetString(9, 1, 80)
        Sheets(1).Range("j" & lig) = Sess0.Screen.GetString(10, 1, 80)
        Sheets(1).Range("k" & lig) = Sess0.Screen.GetString(11, 1, 80)
        Sheets(1).Range("l" & lig) = Sess0.Screen.GetString(12, 1, 80)
        Sheets(1).Range("m" & lig) = Sess0.Screen.GetString(13, 1, 80)
        Sheets(1).Range("n" & lig) = Sess0.Screen.GetString(14, 1, 80)
        Sheets(1).Range("o" & lig) = Sess0.Screen.GetString(15, 1, 80)
        Sheets(1).Range("p" & lig) = Sess0.Screen.GetString(16, 1, 80)
        Sheets(1).Range("q" & lig) = Sess0.Screen.GetString(17, 1, 80)
        Sheets(1).Range("r" & lig) = Sess0.Screen.GetString(18, 1, 80)
        Sheets(1).Range("s" & lig) = Sess0.Screen.GetString(19, 1, 80)
        Sheets(1).Range("t" & lig) = Sess0.Screen.GetString(20, 1, 80)
        Sheets(1).Range("u" & lig) = Sess0.Screen.GetString(21, 1, 80)
        Sheets(1).Range("v" & lig) = Sess0.Screen.GetString(22, 1, 80)
        Sheets(1).Range("w" & lig) = Sess0.Screen.GetString(23, 1, 80)
        Sess0.Screen.SendKeys ("<Enter>")
     
     
        Application.Wait (Now + TimeValue("0:00:02"))
        Sheets(2).Range("b" & lig) = Sess0.Screen.GetString(2, 1, 80)
        Sheets(2).Range("c" & lig) = Sess0.Screen.GetString(3, 1, 80)
        Sheets(2).Range("d" & lig) = Sess0.Screen.GetString(4, 1, 80)
        Sheets(2).Range("e" & lig) = Sess0.Screen.GetString(5, 1, 80)
        Sheets(2).Range("f" & lig) = Sess0.Screen.GetString(6, 1, 80)
        Sheets(2).Range("g" & lig) = Sess0.Screen.GetString(7, 1, 80)
        Sheets(2).Range("h" & lig) = Sess0.Screen.GetString(8, 1, 80)
        Sheets(2).Range("i" & lig) = Sess0.Screen.GetString(9, 1, 80)
        Sheets(2).Range("j" & lig) = Sess0.Screen.GetString(10, 1, 80)
        Sheets(2).Range("k" & lig) = Sess0.Screen.GetString(11, 1, 80)
        Sheets(2).Range("l" & lig) = Sess0.Screen.GetString(12, 1, 80)
        Sheets(2).Range("m" & lig) = Sess0.Screen.GetString(13, 1, 80)
        Sheets(2).Range("n" & lig) = Sess0.Screen.GetString(14, 1, 80)
        Sheets(2).Range("o" & lig) = Sess0.Screen.GetString(15, 1, 80)
        Sheets(2).Range("p" & lig) = Sess0.Screen.GetString(16, 1, 80)
        Sheets(2).Range("q" & lig) = Sess0.Screen.GetString(17, 1, 80)
        Sheets(2).Range("r" & lig) = Sess0.Screen.GetString(18, 1, 80)
        Sheets(2).Range("s" & lig) = Sess0.Screen.GetString(19, 1, 80)
        Sheets(2).Range("t" & lig) = Sess0.Screen.GetString(20, 1, 80)
        Sheets(2).Range("u" & lig) = Sess0.Screen.GetString(21, 1, 80)
        Sheets(2).Range("v" & lig) = Sess0.Screen.GetString(22, 1, 80)
        Sheets(2).Range("w" & lig) = Sess0.Screen.GetString(23, 1, 80)
        Sess0.Screen.SendKeys ("<Enter>")
     
        Next
     
    End Sub

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Juste pour info, à la place de
    Sheets(1).Range("b" & lig) = Sess0.Screen.GetString(2, 1, 80)
    Sheets(1).Range("c" & lig) = Sess0.Screen.GetString(3, 1, 80)
    Sheets(1).Range("d" & lig) = Sess0.Screen.GetString(4, 1, 80)
    Sheets(1).Range("e" & lig) = Sess0.Screen.GetString(5, 1, 80)
    Sheets(1).Range("f" & lig) = Sess0.Screen.GetString(6, 1, 80)
    Sheets(1).Range("g" & lig) = Sess0.Screen.GetString(7, 1, 80)
    Sheets(1).Range("h" & lig) = Sess0.Screen.GetString(8, 1, 80)
    Sheets(1).Range("i" & lig) = Sess0.Screen.GetString(9, 1, 80)
    Sheets(1).Range("j" & lig) = Sess0.Screen.GetString(10, 1, 80)
    Sheets(1).Range("k" & lig) = Sess0.Screen.GetString(11, 1, 80)
    Sheets(1).Range("l" & lig) = Sess0.Screen.GetString(12, 1, 80)
    Sheets(1).Range("m" & lig) = Sess0.Screen.GetString(13, 1, 80)
    Sheets(1).Range("n" & lig) = Sess0.Screen.GetString(14, 1, 80)
    Sheets(1).Range("o" & lig) = Sess0.Screen.GetString(15, 1, 80)
    Sheets(1).Range("p" & lig) = Sess0.Screen.GetString(16, 1, 80)
    Sheets(1).Range("q" & lig) = Sess0.Screen.GetString(17, 1, 80)
    Sheets(1).Range("r" & lig) = Sess0.Screen.GetString(18, 1, 80)
    Sheets(1).Range("s" & lig) = Sess0.Screen.GetString(19, 1, 80)
    Sheets(1).Range("t" & lig) = Sess0.Screen.GetString(20, 1, 80)
    Sheets(1).Range("u" & lig) = Sess0.Screen.GetString(21, 1, 80)
    Sheets(1).Range("v" & lig) = Sess0.Screen.GetString(22, 1, 80)
    Sheets(1).Range("w" & lig) = Sess0.Screen.GetString(23, 1, 80)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For NoCol = 2 to 23
         Sheets(1).Cells(lig,NoCol) = Sess0.Screen.GetString(NoCol, 1, 80)
    Next
    A toutes fins utiles

Discussions similaires

  1. [VBA Excel] Copie d'un tableau lignes filtrées comprises
    Par gojira dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/08/2006, 12h53
  2. (vba excel) Copie automatique de charts
    Par moicwill dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/07/2006, 18h17
  3. [VBA Excel] - Copie Aléatoire de données entre 2 feuilles
    Par ethan64 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/07/2006, 17h34
  4. [VBA Excel] Copie automatique d'une donnée
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/07/2006, 13h21
  5. [VBA][Excel] Copie de feuille a l'identique
    Par le_sonic dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/01/2006, 16h48

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