[Catégorie modifiée VB6 -> VBA] naviguer dans 2 excel.exe ouverts ?

Signaler
Messages postés
13
Date d'inscription
mardi 13 juillet 2010
Statut
Membre
Dernière intervention
20 août 2012
-
cs_Jack
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour,

Mon problème est que lorsque j'extrait des données de l'ERP de ma boite vers excel, lorsqu'Excel est déjà ouvert, il m'ouvre une deuxième application excel.exe avec mon perso.xls en lecture seule. je voulais savoir s'il serait possible de faire une macro dans mon perso.xls qui me permettrait d'une part de copier les données extraites de l'ERP, puis de fermer le deuxième excel.exe et de coller le contenu du pressepapier dans le un classeur du premier excel.exe qui était déjà ouvert ?

Je ne sais pas si c'est possible ?

Je ne sais même pas si vous m'avez compris...

D'avance merci pour vos réponses.

Guillaume

7 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Bonjour,
Je ne "cerne" pas vraiment ce que tu cherches
Serait-ce simplement déterminer si une instance de Excel est déjà ouverte (afin de ne pas en créer inutilement une seconde) ?

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
13
Date d'inscription
mardi 13 juillet 2010
Statut
Membre
Dernière intervention
20 août 2012

Bonjour,

Non en fait je veux copier des données d'une instance excel pour les copier dans une seconde instance par une macro
Messages postés
13
Date d'inscription
mardi 13 juillet 2010
Statut
Membre
Dernière intervention
20 août 2012

*pour les coller daans une autre instance pardon...
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Inutile pour cela d'ouvrir deux instances de Excel ?
Une seule suffit, mais tu auras besoin, par contre de créer deux objets Classeur (pas deux instances de Excel).
Tu as ouvert la présente discussion dans la section :
Forum > Visual Basic 6

ce qui donne à pernser que tu "pilotes" Excel depuis VB6 et non depuis VBA.
Montre alors le code écrit pour créer les objets nécessaires (appli Excel, classeurs et feuilles)
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
13
Date d'inscription
mardi 13 juillet 2010
Statut
Membre
Dernière intervention
20 août 2012

Oui c'est vba c'est exact.

En fait c'est l'erp de mon entreprise qui ouvre une deuxième instance d'excel, ce n'est pas moi. Une fois cette instance ouverte je voudrais juste faire un activesheet.paste pour pouvoir coller ces données dans un classeur déjà ouvert, mais ouvert dans une autre instance d'excel, d'ou mon problème. N'y a t'il pas moyen de faire un truc du genre "activeapplication.close false" et de garder les données dans lepresse papier ?
Messages postés
13
Date d'inscription
mardi 13 juillet 2010
Statut
Membre
Dernière intervention
20 août 2012

et si je fais :

sub tralala()

activesheet.copy
application.quit


comment puis je récupérer le presse papier ?
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
63
Salut

Catégorie modifiée.

ERP : Tu es dans ton monde et ces acronymes ne sont pas connus de tous. Bien penser à expliquer l'environnement, c'est important surtout lorsque celui-ci peut influer sur la solution.

Perso, je n'ai jamais réussi à remplir un Range avec un tableau de variable.
Voilà donc un exemple de récupération des données puis d'écriture dans ta feuille :
    ' Dans l'éditeur VB, ajoutez une référence à "Microsoft Form 2.0 Object Library."
    '   Menu Outils --> Références
    Dim MyData      As New MSForms.DataObject
    Dim sTemp       As String
    Dim aLines()    As String
    Dim NbLines     As Long
    Dim aCols()     As String
    Dim NbCols      As Long
    Dim oStartRange As Range
    Dim r           As Long
    Dim t           As Long
    
    ' Récupère le texte du presse papier
    MyData.GetFromClipboard
    ' Risuqe d'erreur si le Clipboard est vide
    On Error Resume Next
        sTemp = MyData.GetText()
        r = Err.Number
    On Error GoTo 0
    If r = 0 Then
        ' Ok
        ' Supprime l'éventuel vbCrLf en fin de chaine
        If Right$(sTemp, Len(vbCrLf)) = vbCrLf Then
            sTemp = Left$(sTemp, Len(sTemp) - Len(vbCrLf))
        End If
        ' Chaque ligne est séparée par un retour chariot
        aLines = Split(sTemp, vbCrLf)
        ' on a donc le nombre de lignes (base 0)
        NbLines = UBound(aLines)
        ' Récupère chaque colonne séparées par des tabulations (de la première ligne)
        aCols = Split(aLines(0), vbTab)
        ' on a donc le nbr de colonnes (base 0)
        NbCols = UBound(aCols)
        ' Traitement des données
        Set oStartRange = ActiveSheet.Range("A1")
        If NbLines > 0 Or NbCols > 0 Then
            ' Nettoyage avant écriture
            ActiveSheet.Range(oStartRange, oStartRange.Offset(NbLines, NbCols)).ClearContents
            ' Ecriture des données
            For r = 0 To NbLines
                aCols = Split(aLines(r), vbTab)
                For t = 0 To NbCols
                    oStartRange.Offset(r, t).Value = aCols(t)
                Next t
            Next r
        Else
            ' Pas de lignes ni colonnes
            oStartRange.Value = sTemp
        End If
    Else
        Debug.Print "/!\ Pas de texte dans le presse-papier"
    End If

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)