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-E]Fonction GetObject


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 8
    Par défaut [VBA-E]Fonction GetObject
    Salut,

    J'essaie de manipuler un fichier excel à partir d'une macro située dans un autre fichier. J'utilise pour cela la fonction getobject qui va chercher le fichier en question. Les manips que je fais ensuite semblent fonctionner mais quand j'ouvre le fichier qui a dû Être manipulé, les feuilles excel ont disparues. voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub essai2()
    Dim Classeur As Excel.Workbook
    Set Classeur = GetObject("C:\Documents and Settings\nouveau.xls")
    Classeur.Sheets(1).Range("B3").Value = "saluth"
    Classeur.Save
    Classeur.Close
    Set Classeur = Nothing
    Excel.Application.Quit
    End Sub
    Merci de m'indiquer pourquoi les feuilles ecxel n'existent plus quand j'ouvre le fichier nouveau.xls ???
    Merci d'avance de votre aide précieuse,

    Tinose

  2. #2
    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
    As-tu essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set Classeur = GetObject("C:\Documents and Settings\nouveau.xls") 
    With classeur
        .Sheets(1).Range("B3").Value = "saluth" 
        .Save
        DoEvents
        .Close
    End with
    A+

  3. #3
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 8
    Par défaut Utilisation fonction GetObject
    Ca ne marche toujours pas, les feuilles sont toujours désactivées quand j'essaie de rouvrir le fichier excel que je voulais modifier avec la fonction getobject sans ouvrir le fichier.

    Rappel: je cherche à modifier un fichier excel fermé à partir d'un autre fichier qui contient du code.

    Malheureusement, quand j´écris la macro avec la fonction getobject les modifs doivent se produire mais quand je rouvre le fichier qui est censé être modifié, la session excel apparaît mais plus les feuilles de calcul.
    Est que l´on peut réactiver les feuilles ou est ce qu'il faut utiliser la fonction getobject avec d'autres précautions ?

    Merci pour vos précisions !

  4. #4
    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
    J'ai cette réponse fournie par stormless voici quelques temps.
    Pour voir le contexte, cherche dans les réponses qu'il a données sur le forum, elles ne sont pas si nombreuses...

    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
    Sub TravaillerSurFichierFermé() 'de la part de stormless
    'activer la reference Microsoft ActiveX Data Objects x.x Library
    'activer la reference Microsoft ADO Ext 2.7 for DLL ans Security
    Dim connect As String
    Dim Sql As String, onglet As String
    Dim données As ADODB.Recordset
    Dim Fichier As String, Direction As String, texte_SQL As String
    Dim x As Integer, NbFichiers As Integer, Y As Integer, N As Integer, p As Integer, w As Integer
    'On Error Resume Next
    Dim Tableau() As String
        onglet = "dim$" 'InputBox("Saisissez le nom d'un onglet :")
        If onglet = "" Then Exit Sub
        Direction = Dir(ThisWorkbook.path & "\*.xls")
        Do While Len(Direction) > 0 'liste tous les classeurs du repertoire
            NbFichiers = NbFichiers + 1
            ReDim Preserve Tableau(1 To NbFichiers)
            Tableau(NbFichiers) = Direction
            Direction = Dir()
        Loop
        If NbFichiers > 0 Then
            For x = 1 To NbFichiers 'boucles sur les classeurs
                ' pour ne pas prendre en compte le classeur contenant la macro (synthese)
                If Tableau(x) <> ThisWorkbook.Name Then
                Fichier = ActiveWorkbook.path & "\" & Tableau(x)
                N = 0
                connect = "DRIVER={Microsoft Excel Driver (*.xls)};" & "ReadOnly=1;DBQ=" & Fichier
                Set données = New ADODB.Recordset
                données.Open source:="SELECT * FROM [" & onglet & "Q10:Q56]", ActiveConnection:=connect
                    If Not données.EOF Then
                         ' pour etre synchro avec les colonnes
                           p = x
                           Cells(1, 2 + p) = Tableau(x)
                           Cells(2 + N, 2 + p).CopyFromRecordset données
                           p = p + 2
                           N = N + 1
                    End If
                End If
            Next x
        End If
        Application.ScreenUpdating = True
        'delete de l'objet recordset
        données.Close
        Set données = Nothing
    End Sub
    Si ça peut t'aider...

    A+

  5. #5
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 8
    Par défaut Fonction GetObject VBA
    Effectivement, merci, cette méthode peut marcher mais elle utilise la fonction open qui ouvre le fichier et le modifie ensuite.

    Ce que je ne comprends pas c'est que la fonction getobject qui n'ouvre pas à l'écran le fichier marche parfaitement si on modifie un fichier word fermé mais par conrtre je n'arrive pas à l'utiliser avec excel puisque les feuilles ne sont plus affichées.

    Si quelqun c'est comment utiliser la fonction getobject sous excel je suis preneur !

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Par défaut
    Bonjour,
    En réalité, la fonction GetObject fonctionne (à moitié), quand tu ouvres le fichier, Excel s'ouvre et tu ne vois pas le fichier ,tu fais Fenêtre/Afficher, et tu verras que ton fichier est bien là, tu l'affiche et tu le ferme en l'enregistrant.
    Pourquoi tout ne se fais pas d'un coup avec GetObject, là ???

    jpleroisse

  7. #7
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 8
    Par défaut Fonction GetObject VBA
    Effectivement Merci beaucoup ![/img]

  8. #8
    Nouveau candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Par défaut Solution
    bonjour , voici la solution que j'ai trouvé, avant d'enregistrer votre "GetObject "
    ajouter cette ligne, "Stock.xlsx correspond a votre nom de fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Windows("Stock.xlsx").Visible = True
    Cdt

Discussions similaires

  1. [VBA/Excel] Fonction open sous Excel 97
    Par nico01984 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/01/2006, 14h19
  2. [VBA EXCEL] Fonction Instr
    Par thulvar dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/01/2006, 14h43
  3. [VBA-E] Fonction "FIND"
    Par cinc dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/09/2005, 11h16
  4. [VBA-E] lien en VBA et fonction generatrice
    Par Smoke666 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/07/2004, 11h47
  5. [VBA-E] Fonction sum() dans une cellule
    Par Gonzo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/12/2002, 10h18

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