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 :

Modifier une cellule dans un fichier fermé


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
    Enseignant
    Inscrit en
    Décembre 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 59
    Par défaut Modifier une cellule dans un fichier fermé
    Bonjour tout le monde je vous souhaite une bonne et heureuse année 2018
    après + recherche je ne trouve pas une solution à mon problème
    je compte sur vous pour me donner un coup de mains
    j'ai un fichier qui contiens le code sous un répertoire
    j'ai un autre fichier base qui se trouve sous un autre répertoire
    je souhaite modifier la cellule AJ3 du fichier base a partir du fichier code sans ouvrir le fichier base

  2. #2
    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
    Il n'est pas possible de modifier une donnée (ni même de la lire) sans ouvrir le fichier.
    Cela dit, "ouvrir" peut avoir des significations multiples.

    En fonction de ce que tu souhaites faire exactement, il y a plusieurs solutions à ton problème.
    La plus simple serait sans doute de faire une mise à jour du fichier "base" lors de son ouverture.

    je souhaite modifier la cellule AJ3 du fichier base a partir du fichier code sans ouvrir le fichier base
    Je ne comprends pas cette formule.
    Quelle est la nature (type, emplacement) de la donnée que tu récupères dans le fichier code et quelle opération est faite sur cette donnée pour obtenir la valeur à implanter dans ton fichier base ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 59
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Il n'est pas possible de modifier une donnée (ni même de la lire) sans ouvrir le fichier.
    Cela dit, "ouvrir" peut avoir des significations multiples.

    En fonction de ce que tu souhaites faire exactement, il y a plusieurs solutions à ton problème.
    La plus simple serait sans doute de faire une mise à jour du fichier "base" lors de son ouverture.


    Je ne comprends pas cette formule.
    Quelle est la nature (type, emplacement) de la donnée que tu récupères dans le fichier code et quelle opération est faite sur cette donnée pour obtenir la valeur à implanter dans ton fichier base ?
    en fait je souhaite écrire "OUI" dans la cellule AJ3 du fichier base sans ouvrir ce dernier

  4. #4
    Membre expérimenté
    Homme Profil pro
    Pompier de service
    Inscrit en
    Février 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Pompier de service

    Informations forums :
    Inscription : Février 2014
    Messages : 146
    Par défaut
    je pensais pourtant que la modification sur un classeur fermé était possible (via OLE DB) ?

    http://silkyroad.developpez.com/VBA/...sFermes/#LIV-C

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Phil'oche
    que la modification sur un classeur fermé était possible (via OLE DB) ?
    et que ferait ta méthode, sans "ouvrir" ? Tu me le dis ?
    Ne pas confondre "ne pas ouvrir avec Excel" et "ne pas ouvrir".
    Il est impossible d'agir sur un fichier (même de simplement le lire) sans l'ouvrir, quelle que puisse être le mode choisi d'ouverture.

  6. #6
    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 Phil'oche Voir le message
    je pensais pourtant que la modification sur un classeur fermé était possible (via OLE DB) ?
    Comme je le disais, "ouvrir" peut avoir des significations multiples.
    Regarde bien le code que tu as mis en lien. A ton avis, à quoi sert le méthode "Open" qu'on voit vers la ligne 15 ?
    Si ce n'est pas une ouverture de fichier, ça y ressemble fortement, non ?

    Même mettre un lien dans Excel vers une donnée externe implique une ouverture.

    La seule méthode (à ma connaissance) de lire/écrire une donnée dans un fichier sans l'ouvrir est d'attaquer directement le secteur disque sur lequel elle se trouve.
    Perso, c'est une méthode que je n'ai plus rencontré depuis que les disquettes 5"1/4 ont été abandonnées et que les supports font plus de 360 ko.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    With CreateObject("Adodb.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;"""
        .Execute "Update [Feuil1$AJ3:AJ3] set [F1]='TOTO'"
        .Close
     End With
    End Sub

  8. #8
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 59
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    With CreateObject("Adodb.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;"""
        .Execute "Update [Feuil1$AJ3:AJ3] set [F1]='TOTO'"
        .Close
     End With
    End Sub
    merci pour votre réponse mais comme je suis débutant je vous demande de m'indiquer ou se trouve le nom du fichier que je souhaite modifier
    en fait ce que je souhaite est la chose suivante
    dans un sub teste se trouvant dans un module du fichier source je souhaite ecrire "OUI" dans la cellule AJ3 du fichier base qui se trouve dans un répertoire autre que celui du fichier source
    le fichier base se trouve dans ThisWorkbook.Path & "\BASES\"
    sub teste()

    je souhaite mettre "OUI" dans le fichier base sans l'ouvrir

    end sub

    merci d'avance

  9. #9
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    je souhaite mettre "OUI" dans le fichier base sans l'ouvrir
    Quand on insiste, on insiste, hein ...
    Bon -->> réponse --->> en utilisant le même procédé que celui que tu utiliserais pour mettre une étiquette à un vêtement qui se trouve dans ta valise sans ouvrir cette valise.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Fichier.XlsX
    [Onglet$Plage]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
    With CreateObject("Adodb.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;"""
        .Execute "Update [Feuil1$AJ3:AJ3] set [F1]='TOTO'"
        .Close
     End With End Sub

  11. #11
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 59
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Fichier.XlsX
    [Onglet$Plage]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
    With CreateObject("Adodb.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;"""
        .Execute "Update [Feuil1$AJ3:AJ3] set [F1]='TOTO'"
        .Close
     End With End Sub
    merci pour votre attention

    j'ai essayé d'adapter votre code comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    Dim Annee As Integer
    Annee = Year(Date)
    With CreateObject("Adodb.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\BASES\" & "BASE " & Annee - 1 & "\MENU PRINCIPAL.xlsm" & ";Extended Properties=""Excel 12.0;HDR=No;"""
        .Execute "Update [PARAMETRES$AJ3:AJ3] set [F1]='OUI'"
        .Close
     End With
    End Sub
    mais ça ne donne rien ou est l'erreur la cellule AJ3 se trouve dans une feuille PARAMETRES du classeur MENU PRINCIPAL.XLSM
    LE SUB TESTE se touve dans un module d'un autre classeur

  12. #12
    Invité
    Invité(e)
    Par défaut
    c'est un abus de langage communément employé et ce même sur ce forum!

    un forum est une communauté ou chaque participant en accepte les usage!

    Nom : Sans titre.png
Affichages : 2501
Taille : 33,2 Ko

  13. #13
    Invité
    Invité(e)
    Par défaut
    tu as ouvert le classeur en question pour voir le résultat, oui je présume! ça va sens dire mais ça va mieux en le disant!

  14. #14
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 59
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    tu as ouvert le classeur en question pour voir le résultat, oui je présume! ça va sens dire mais ça va mieux en le disant!
    désolé effectivement j'ai ouvert le dossier et la valeur de la cellule AJ3 de la feuille parametres n'a pas changé

  15. #15
    Invité
    Invité(e)
    Par défaut
    ThisWorkbook concerne le classeur qui exécute la macro!

    si
    .Execute "Update [PARAMETRES$AJ3:AJ3] set [F1]='OUI'" sens message d'erreur c'est que la macro est Ok mais sur quel fichier??????

    fais un debug.print
    ThisWorkbook.Path

  16. #16
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 59
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    ThisWorkbook concerne le classeur qui exécute la macro!

    si
    .Execute "Update [PARAMETRES$AJ3:AJ3] set [F1]='OUI'" sens message d'erreur c'est que la macro est Ok mais sur quel fichier??????
    effectivement ThisWorkbook concerne le classeur qui exécute la macro
    j'ai même regarder dans la cellule AJ3 de toutes les feuilles du fichier qui execute la macro je n'ai pas trouvé le mot OUI

Discussions similaires

  1. [XL-2013] Modifier une cellule dans plusieurs classeurs fermés
    Par Robindesbulle dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 16/04/2017, 12h10
  2. Impossible de lire une cellule dans un fichier fermé
    Par Mic13710 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/06/2015, 22h57
  3. Copier une plage de cellules dans un fichier fermé
    Par COCONUT2 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 31/07/2007, 17h23
  4. [VBA] Copier une plage de cellules dans un fichier fermé
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/01/2006, 16h52
  5. modifier une variable dans un fichier
    Par Guismay dans le forum Langage
    Réponses: 7
    Dernier message: 11/09/2005, 19h46

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