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 :

Lecture et fermeture de données dans un fichier fermé. [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut Lecture et fermeture de données dans un fichier fermé.
    Bonjour,

    Je vous écris car j'aurais besoin d'avis relatif un code que j'essai de mettre en place.

    Ce code à pour but de lire les données dans fichier XLS en étant fermée.

    Le soucis est que j'ai toujours une demande de sauvegarde et/ou de lecture seul lors de l'application du code.

    Malgré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Application.DisplayAlerts = False ' Suppression des alertes
    Application.ScreenUpdating = False ' Suppression des opérations visuels
    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
     
    Base = Sheets("data").Range("B4").Value
    nom = Sheets("data").Range("B2").Value
    onglet = Sheets("data").Range("B6").Value
    Fichier_src = Sheets("data").Range("B5").Value
     
    Dim appxl As Excel.Application
    Dim Fichier As Window
    Dim feuille As Worksheet
    Set appxl = CreateObject("Excel.application")
     
    With appxl
        .Workbooks.Open Base
        .Visible = False
     
        Set Fichier = appxl.Windows(Fichier_src)
                Fichier.Activate
                Set feuille = appxl.Sheets(onglet)
                feuille.Activate
                 feuille.ShowAllData
                feuille.Range("A1:BZ5000").Select
                feuille.Range("A1:BZ5000").Copy
     
     
            Windows(nom).Activate
     
                Sheets.Add
                Sheets(ActiveWorkbook.ActiveSheet.Name).Name = "Import"
                Sheets("Import").Select
                Sheets("Import").Range("a1").Select
                ActiveSheet.Paste
                ActiveSheet.Visible = False
     
     
     
              Set appxl = Nothing
            .Workbooks.Close
       End With
    Pourriez-vous me dire où se trouve l'anomalie, ou si j'applique la bonne méthodologie.

    Il est possible que cette méthode ne soit pas la meilleur.

    D'avance merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Pour ton cas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open(Filename:=filepath, ReadOnly:=True)

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    La proposition de dysorthographie est la plus propre.

    Mais tu as aussi cette autre possibilité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            .Workbooks.Close SaveChanges:=False
    Petit détail : contrairement à ce que tu dis, ton classeur n'est pas fermé quand tu le lis (de toute façon, il est impossible de lire un fichier fermé). Simplement, il n'est pas visible, ce qui n'est pas tout à fait la même chose.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut Suite#1
    Bonjour,

    Merci pour vos réponses.

    Dans les deux cas je rencontre une alerte erreur m'indiquant :

    Pour le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     .Workbooks.Close SaveChanges:=False
    => Erreur de compilation : Nombre d'argument incorrect ou affectation de propriété incorrecte.

    Pour le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     .Workbooks.Open(Filename:=filepath, ReadOnly:=True)
    => Erreur de compilation : Attendu : =.

    Ne voyant pas réellement l'origine de l'erreur dans les deux cas, reviens vers vous afin un complément d'information.

    D'avance merci.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    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
    Base = Sheets("data").Range("B4").Value
    nom = Sheets("data").Range("B2").Value
    onglet = Sheets("data").Range("B6").Value
    Fichier_src = Sheets("data").Range("B5").Value
     
    Dim Fichier As Window
    Dim feuille As Worksheet
     
     With CreateObject("Excel.application")
        With .Open(Filename:=Base, ReadOnly:=True)
            With .Sheets(onglet)
                .ShowAllData
                .Range("A1:BZ5000").Copy
                    With Windows(nom)
                        With .Add
                            .Name = "Import"
                             .Paste
                             .Visible = False
                        End With
                    End With
            End With
            .Close False
        End With
       .Quit
     End With

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut Suite#2
    Bonjour,

    Après quelques jours de test et de tentative, le code suivant ne fonctionne pas non plus?

    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
     
    Base = Sheets("data").Range("B4").Value
    nom = Sheets("data").Range("B2").Value
    onglet = Sheets("data").Range("B6").Value
    Fichier_src = Sheets("data").Range("B5").Value
     
    Dim Fichier As Window
    Dim feuille As Worksheet
     
     With CreateObject("Excel.application")
        With .Open(Filename:=Base, ReadOnly:=True) ' <= Erreur Propriété ou méthode non gérer par cet objet
            With .Sheets(onglet)
                .ShowAllData
                .Range("A1:BZ5000").Copy
                    With Windows(nom)
                        With .Add
                            .Name = "Import"
                             .Paste
                             .Visible = False
                        End With
                    End With
            End With
            .Close False
        End With
       .Quit
     End With
    Il y a une erreur "<= Erreur Propriété ou méthode non gérer par cet objet"
    Je ne sais pas la cause ni la raison ( Bibliothèques?..)

    Je continue à chercher

    Merci pour votre aide.

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Hybride76 Voir le message
    Il y a une erreur "<= Erreur Propriété ou méthode non gérer par cet objet"
    Quelle ligne de code est indiquée par le débugage ?

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut Suite#2.1
    Le ligne en défaut est la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     With .Open(Filename:=Base, ReadOnly:=True) ' <= Erreur Propriété ou méthode non gérer par cet objet
    Le code s'arrête avec le message d'alerte.

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut Solution
    Bonjour à tous,

    Après quelques semaines de réflexion voici une solution qui fonctionne.

    Encore merci pour votre aide et conseils.

    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
     
    Base = Sheets("data").Range("B4").Value
    nom = Sheets("data").Range("B2").Value
    onglet = Sheets("data").Range("B6").Value
    Fichier_src = Sheets("data").Range("B5").Value
     
    Application.DisplayAlerts = False ' Suppression des alertes
    Application.ScreenUpdating = False ' Suppression des opérations visuels
    Application.CutCopyMode = False ' Suppression des alerte du presse papier.
     
    ' Suppresion des pages d'importation des bases
        If FeuilleExiste("Import") = True Then
    Sheets("Import").Delete
        End If
       If FeuilleExiste("Import_UIVA") = True Then
    Sheets("Import_UIVA").Delete
        End If
     
    Dim Fichier As Window
    Dim feuille As Worksheet
     
     With CreateObject("Excel.application")
     Set appxl = .Workbooks.Open(Filename:=Base, ReadOnly:=False)
     
       CreateObject ("Excel.application")
        Set Fichier = appxl.Windows(Fichier_src)
                Fichier.Activate
                Set feuille = appxl.Sheets(onglet)
                feuille.Activate
                feuille.ShowAllData
                feuille.Range("A1:BZ5000").Select
                feuille.Range("A1:BZ5000").Copy
     
     
     
            Windows(nom).Activate
     
                Sheets.Add
                Sheets(ActiveWorkbook.ActiveSheet.Name).Name = "Import"
                Sheets("Import").Select
                Sheets("Import").Range("a1").Select
                ActiveSheet.Paste
                ActiveSheet.Visible = False
     
     
              Set appxl = Nothing
              ClearClipboard
              Fichier.Close SaveChanges:=False
     
            End With
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub ClearClipboard() ' Suppression des messages presse papier
    Dim oDataObject As DataObject
     
    Set oDataObject = New DataObject
    oDataObject.SetText ""
    oDataObject.PutInClipboard
     
    Set oDataObject = Nothing
    End Sub

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

Discussions similaires

  1. lecture et écriture de données dans un fichier
    Par follichon dans le forum C
    Réponses: 1
    Dernier message: 24/11/2011, 13h17
  2. [Débutant] Lecture de données dans un fichier
    Par Fragag dans le forum MATLAB
    Réponses: 3
    Dernier message: 20/01/2009, 19h13
  3. Lecture de données dans un fichier résultat
    Par gregterraz dans le forum C
    Réponses: 1
    Dernier message: 19/05/2008, 17h53
  4. Lecture de données dans un fichier déjà ouvert
    Par adnacademia dans le forum Fortran
    Réponses: 1
    Dernier message: 27/04/2007, 15h54
  5. Lecture de données dans un fichier txt
    Par Marcusss dans le forum MATLAB
    Réponses: 6
    Dernier message: 03/04/2007, 15h40

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