Macro avec autre logiciel

Lentz -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Pas de fichier exemple, c'est une question pour ma connaissance personnelle (pour le moment)

Je voulais savoir si c'était possible de faire une macro en exportant des fichiers sur excel via un ERP (SAP)

Merci d'avance

5 réponses

Résumé de la discussion

La discussion porte sur la faisabilité d'une macro permettant d'exporter des données de SAP vers Excel, afin d'automatiser l'interaction entre l'ERP et le classeur et d'accéder rapidement au contenu. Plusieurs pistes abordent l'usage de SendKeys et AppActivate, l'importance d'une temporisation et la nécessité de fermer l'application source pour basculer vers Excel, afin d'automatiser le copier-coller du contenu HTML. Des utilisateurs rapportent qu'un script final utilisant AppActivate, une temporisation et SendKeys peut fonctionner, à condition de gérer les fenêtres et le papier par lot et de valider le contexte Excel. En cas de changement des protocoles SAP, ce type d'automatisation peut devenir obsolète et nécessiter des ajustements, ce qui souligne la fragilité des solutions basées sur l'automatisation d'interfaces propriétaires.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    Si tu veux "exporter des fichiers sur excel" il faut faire la macro dans l'ERP.

    Plus exactement dans l'ERP, tu fais un export dans un fichier (CSV par exemple) puis dans excel tu peux faire un import du fichier avec une macro de traitement.
    0
    1. Lentz
       
      Merci de ta réponse, mais voilà je voulais éviter cette étape d'export dans un fichier, et que tout se fasse par macro !
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,

      Là c'est plus du coté des possibilités de SAP qu'il faudrait voir.
      Mais SAP est un monument tellement énorme qu'il faudrait peut-être chercher un forum qui lui est dédié.
      Attend un peu mais très peu de spécialistes de SAP passent par ici...

      eric
      0
    3. Lentz
       
      Mais SAP est un monument tellement énorme

      Je confirme,
      Merci de ton aide, du coup via excel je ne peux rien faire !
      0
    4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Je n'ai pas dit ça.
      Il y a peut-être des API (ou autre) SAP qui permettent d'interroger la base SAP...
      Mais la question pour l'instant est coté SAP, pas coté excel
      eric
      0
    5. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      On ne peut pas éditer mais j'ajoute mon avis perso :

      Tu vas passer un temps fou à trouver ça.
      Si c'est possible et que demain SAP change ses protocoles plus rien ne marchera et tout sera à refaire.
      Donc je remettrai cette idée dans ma poche avec mon mouchoir par dessus, et je ferai une macro qui travaille avec l'export xls de SAP ;-)

      eric
      0
  2. Lentz
     
    Malgré de nombreux test

    "Argument ou appel de procédure incorrect"

    S'affiche lors de l'éxécution de la macro !
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,

      Comme tu es le seul à savoir ce que tu as écris et où est l'erreur je suppose que tu veux trouver seul...
      Donc pas la peine de laisser de message ici.
      eric
      0
    2. Lentz
       
      ce que j'ai écris est simple

      Sub exportSAP()
      '    'codes à envoyer à SAP
          AppActivate "SAP logon"
          SendKeys "^+{F7}"
          SendKeys "{enter 3}", True
          AppActivate "Classeur5.xls"
      End Sub
      


      Sachant que mes tests se portaient sur le changement de "SAP logon" que j'ai beaucoup modifié!

      Et au préalable j'ai préparer SAP qui est prêt à se faire exporter !
      0
    3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Essaie de faire un effort, c'est pénible de devoir demander tous les détails 2-3 fois.
      Je sens que je vais me lasser...
      L'erreur est où ?
      0
    4. Lentz
       
      L'erreur est où ?

      J'ai juste le message "Argument ou appel de procédure incorrect" qui s'affiche dans une msg box, en aucun cas j'ai le code vba qui s'affiche avec une ligne jaune pour m'afficher où est l'erreur !
      0
    5. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      salut eriiic,
          AppActivate "SAP logon"
          SendKeys "^+{F7}"
          SendKeys "{enter 3}", True
          Workbooks("Classeur1.xls").Activate
      0
  3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Re-
    J'ai trouvé sur le net cette sub qui liste le titre de toutes les fenêtres ouvertes, toutes applications confondues. Cela pourrait également servir à déterminer qu'elle fenêtre activer avec AppActivate...

    Option Explicit 
    
    Private Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long 
    Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long 
    Private Declare Function IsWindowVisible Lib "user32" (ByVal hWnd As Long) As Long 
    Private Declare Function GetDesktopWindow Lib "user32" () As Long 
    
    Sub ListeFenetresOuvertes() 
    Dim hWnd As Long 
    Dim Titre_Fenetre As String * 255 
    Dim TitreFen As String 
    Dim ret As String 
    Dim j As Long 
    hWnd = GetWindow(GetDesktopWindow(), 5) 
    Do While (Not IsNull(hWnd)) And (hWnd <> 0) 'Passe en revue chaque fenêtre 
          Titre_Fenetre = String(255, 0)  'Formate la chaine destinée à accueillir le titre de la fenêtre 
          ret = GetWindowText(hWnd, Titre_Fenetre, 255)   'récupère le titre de la fenêtre et le nombre de caractères de ce titre 
          If Titre_Fenetre <> String(255, 0) Then             'Si le titre n'est pas vide 
                If IsWindowVisible(hWnd) = 1 Then                   'Pour ne tenir compte que des fenêtres visibles (regardez ce que ça donne en retirant cette condition) 
                   TitreFen = Titre_Fenetre        'récupère le titre de la fenêtre 
                   TitreFen = Left(TitreFen, ret)  'sans les caractères supplémentaires finaux 
                   j = j + 1 
                   Sheets("Feuil1").Range("A" & j) = TitreFen 
                   Sheets("Feuil1").Range("B" & j + 1) = Titre_Fenetre 
                   j = j + 1 
                End If 
          End If 
          hWnd = GetWindow(hWnd, 2) 'cherche la fenêtre suivant 
    Loop 
    End Sub


    Cordialement,
    Franck P
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Lentz
     
    Merci pour vos messages mais j'y connait pas grand chose en VBa et là ça dépasse vraiment mes petites compétences...
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Ce n'est pas parce que tu débutes qu'il faut laisser tomber...

      On te demande de continuer ce sujet pour réussir à réaliser ce que beaucoup d'autres n'ont pas su faire.

      Regarde sur Internet, ce genre de question s'est posée plusieurs fois sans solutions... Si, grâce à ton aide, Eriiic ou moi (voir les 2) trouvons la méthode se sera ça de gagné pour toi et toute la communauté...

      Donc essaye à nouveau, dis nous ou ça coince et ensemble on va peut être y parvenir...
      Je dis "peut être" car SAP est une rude machine dure à percer...........

      Persévérons, je suis persuadé que cela vaut le coup.

      ps : si je disposais de SAP et pouvais tester moi même, je ne te demanderais pas de rester mais là...
      0
    2. Lentz
       
      Bon d'accord je vais essayer,

      Je vais voir tes posts et je vais tester et jte dirais ;)
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Rien d'urgent, je reviendrais ici demain.
      0
    4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Re,

      Pour activer la fenetre il faut en paramètre soit :
      -prendre le début de la chaine (autant de caractères que tu veux, 2 ou 10 ou ...) affichée dans la barre de titre de la fenetre.
      - ou, si cette partie n'est pas constante ou suffisament discriminante, prendre ce qu'il y a après le tiret - , mais là il faut toute la chaine jusqu'au bout.

      Si avec ces 2 possibilités tu n'arrives pas à trouver une partie constante suffisament significative, il reste la possibilité dans lancer SAP par excel et là on aura le handle de la fenetre sans ambiguité. Mais c'est plus contraignant...

      eric
      0