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

VBA Access Discussion :

Ecrire dans un fichier Excel 2013 ouvert [AC-2013]


Sujet :

VBA Access

  1. #1
    Membre averti
    Homme Profil pro
    Consultant en Gestion
    Inscrit en
    Mars 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2014
    Messages : 40
    Par défaut Ecrire dans un fichier Excel 2013 ouvert
    Bonjour,

    Peut-on écrire dans un fichier Excel ouvert ?

    Si oui, comment et à quelles conditions ?

    Merci à tous

    ULK

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonjour,

    Fais donc un tour dans la FAQ, par exemple ici : http://access.developpez.com/faq/?page=Excel#PilotExcel

  3. #3
    Membre averti
    Homme Profil pro
    Consultant en Gestion
    Inscrit en
    Mars 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2014
    Messages : 40
    Par défaut
    Bonjour ClaudeLELOUP,

    et merci !


    j'ai bien galéré quand même entre les Forums, FAQ et tutoriel. Et après une nuit blanche, 200 millions de lignes de code lues, 250 test et 37 litres de Kawa sucré j'ai finalement réussi à obtenir ce que je cherchais.

    j'arrive à écrire dans un classeur Excel ouvert ou non par une application Excel active ou non. je ne comprends pas bien comment et pourquoi ça marche (il y plein de choses plus ou moins magiques qui marchent en opposition avec toutes celles testées et qui, inexplicablement, ne marchent pas alors qu'elles le devraient). Quoi qu'il en soit voici ci-dessous mon code qui me permet même de voir les cellules se remplir au fur et à mesure.

    je suis preneur de toute idée de modification et de remarques pour m'éviter d'être à la merci du vice de toute bestiole sous-jacente

    merci encore
    bonne journée

    ULK

    Private Sub OUVREclasseurEXCEL()

    Dim NomFichierExcel As String
    Dim NomFeuilleExcel As String
    Dim NomCelluleExcel As String
    Dim NomClasseur As String

    Dim bascOuvert As Boolean


    ' **************** Déclarer les proprietes Excel
    Dim ApplicationExcel As Excel.Application 'Application Excel
    Dim FichierExcel As Excel.Workbook 'Classeur Excel
    Dim FeuilleExcel As Excel.Worksheet 'Feuille Excel


    NomClasseur = "(MonClasseur.xlsx" 'Nom du Classeur
    NomFichierExcel = "C:\MonRepertoire\" & NomClasseur 'Chemin du Classeur


    ' **************** Atteindre la session active d'Excel
    On Error GoTo GestionErreur 'Si on ne peut pas atteindre la session active d'Excel

    Set ApplicationExcel = GetObject(, "Excel.Application") 'Session active d'Excel
    'Note : ne fonctionne que si Excel est déjà actif ??????? , donc si ça ne fonctionne pas alors il faut une nouvelle instance d'Excel ( par GestionErreur: )


    GoTo OuvertureClasseur 'on saute GestionErreur: puisque ça fonctionne et que Excel est déjà actif


    ' **************** Ouvrir une nouvelle Instance d'Excel si Excel n'est pas actif
    GestionErreur:
    Set ApplicationExcel = Nothing 'Vide mémoire, on ne sait jamais ...
    Set ApplicationExcel = New Excel.Application 'Ouvre une nouvelle (donc première) instance d'Excel



    OuvertureClasseur:

    On Error Resume Next 'Pour éviter de revenir à GestionErreur: en cas de pépin ...

    bascOuvert = False 'Par défaut, le Classeur cherché n'est pas ouvert

    'Vérifier si le Classeur cherché est déjà ouvert
    For Each FichierExcel In ApplicationExcel.Workbooks
    With FichierExcel


    If .Name = NomClasseur Then 'Si le Classeur cherché fait partie des classeurs ouverts ...
    bascOuvert = True 'alors le Classeur cherché est ouvert !
    Exit For
    End If
    End With
    Next FichierExcel




    If bascOuvert = False Then
    'Si le Classeur n'est pas ouvert
    SetAttr NomFichierExcel, vbNormal 'Donne la propriété Lecture-écriture au Classeur, on ne sait pas par avance le caractère protectionniste de l'utilisateur actuel ...
    Set FichierExcel = ApplicationExcel.Workbooks.Open(NomFichierExcel) 'Ouvre le Classeur
    ApplicationExcel.Visible = True 'Affiche le Classeur

    Else
    'Si le Classeur est ouvert
    SetAttr NomFichierExcel, 0 'Donne la propriété Lecture-écriture au Classeur ouvert, synonime de SetAttr NomFichierExcel, vbNormal ??????????

    End If



    ' **************** Sélectionner une feuille
    NomFeuilleExcel = "MaFeuille" 'Nom de la Feuille

    Set FeuilleExcel = FichierExcel.Worksheets(NomFeuilleExcel)


    ' **************** Ecrire dans une Cellule de la feuille séléctionnée
    NomCelluleExcel = "A1"
    FeuilleExcel.Range(NomCelluleExcel).Value = "Blablabla"



    ' **************** Formater la Cellule séléctionnée
    FeuilleExcel.Range(NomCelluleExcel).Borders(xlEdgeLeft).LineStyle = xlContinuous
    FeuilleExcel.Range(NomCelluleExcel).Borders(xlEdgeRight).LineStyle = xlContinuous
    FeuilleExcel.Range(NomCelluleExcel).Borders(xlEdgeTop).LineStyle = xlContinuous
    FeuilleExcel.Range(NomCelluleExcel).Borders(xlEdgeBottom).LineStyle = xlContinuous

    FeuilleExcel.Range(NomCelluleExcel).Interior.ColorIndex = 6
    FeuilleExcel.Range(NomCelluleExcel).Font.Size = 16
    FeuilleExcel.Range(NomCelluleExcel).Font.Bold = False

    FeuilleExcel.Range(NomCelluleExcel).RowHeight = 28
    FeuilleExcel.Range(NomCelluleExcel).VerticalAlignment = xlCenter
    FeuilleExcel.Range(NomCelluleExcel).HorizontalAlignment = xlLeft

    'et c ...



    FichierExcel.SAVE 'Sauvegarder les modifs

    'FichierExcel.Close (True) si on veut fermer le classeur en sauvegardant les modifs
    'applicationExcel.Quit si on veut quitter l'instance Excel en cours


    Set ApplicationExcel = Nothing 'Vide mémoire
    Set FichierExcel = Nothing 'Vide mémoire
    Set FeuilleExcel = Nothing 'Vide mémoire



    End Sub

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

Discussions similaires

  1. [Débutant] ecrire dans un fichier excel ouvert
    Par gregm954 dans le forum VB.NET
    Réponses: 7
    Dernier message: 01/05/2015, 19h58
  2. [C#] Comment écrire dans un fichier Excel ?
    Par chorokari dans le forum C#
    Réponses: 8
    Dernier message: 09/02/2007, 09h17
  3. comment ecrire dans un fichier excel
    Par dietrich dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 15/01/2007, 12h46
  4. [C#] Comment écrire dans un fichier Excel ?
    Par FoxDeltaSierra dans le forum ASP.NET
    Réponses: 2
    Dernier message: 07/05/2006, 15h29
  5. [VB]Ecrire dans un fichier excell
    Par Empty_body dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 07/02/2006, 12h55

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