Ecrire la cellule d'un fichier excel sans l'ouvrir

gagletor

XLDnaute Nouveau
Bonjour à tous,

Je souhaiterais écrire l'adresse d'un chemin d'accès dans la cellule d'un fichier excel situé dans un dossier réseau à partir d'un formulaire principale.

Mais la macro ne doit pas s'arrêter là, elle doit le faire sur toutes les feuilles excel se trouvant dans le dossier réseau.

En résumé, lorsque je valide sur ma feuille principale, un macro doit écrire mon texte dans la cellule A5 de la feuil2 de tous les classeurs excel du répertoire.

J'arrive à écrire dans un classeur sans l'ouvrir, mais je n'arrive pas faire la boucle sur tout le répertoire.

Quelqu'un aurait une idée??

Merci de votre aide

Bonne après midi

Grégory
 

dixit

XLDnaute Impliqué
Re : Ecrire la cellule d'un fichier excel sans l'ouvrir

bonjour à tous,
j'ai fait un exemple pour ce sujet avec DIR :
https://www.excel-downloads.com/thr...cellules-dans-plusieurs-fichiers-excel.76751/
en échange, je suis curieux de connaître le code utilisé pour écrire dans le fichier fermé
à suivre
ps : j'ai oublié :
ouvrir le classeur en désactivant les macros, il doit y avoir une macro de type Open si je souviens bien
la macro ouvre et ferme les classeurs d'un répertoire déterminé
 

michel_m

XLDnaute Accro
Re : Ecrire la cellule d'un fichier excel sans l'ouvrir

Bonsoir ttl monde,

Ci dessous proposition à adapter puisqu'on parle d'un formulaire restant mystérieux sans pièce jointe. Le chemin du dossier réseau est ici en constante

Petite remarque: Un code pour écrire dans un fichier fermé est dans le WIKI page 6 de MichelXLD depuis au moins 2 ans...

Code:
Option Explicit
Const dossier_reseau As String = "F:\documents\essai_xld" ' a adapter"
Public fichier As String
'------------------------------------------------------------------------
Sub repertorier()
ChDir dossier_reseau
fichier = Dir("*.xls")
 
    While fichier <> ""
        ecrire_fermé
        fichier = Dir
    Wend
MsgBox "opération terminée"
End Sub
'---------------------------------------------------------------
Sub ecrire_fermé()
Dim source As ADODB.Connection
Dim externe As ADODB.Recordset
Dim texte_SQL As String
 
 
Set source = New ADODB.Connection
Set externe = New ADODB.Recordset
'
fichier = dossier_reseau & "\" & fichier
source.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _
                "data source=" & fichier & ";" & _
                "extended properties=""Excel 8.0;HDR=NO"""
 
texte_SQL = "SELECT * FROM [feuil2$C5:C5];"
externe.Open texte_SQL, source, adOpenKeyset, adLockOptimistic
    'externe.MoveFirst
    externe.Fields(0) = dossier_reseau
    externe.Update
 
 
 externe.Close
 source.Close
End Sub

Ne pas oublier de cocher la référence "Microsoft ActiveX data object 2;X library"
 
Dernière édition:

gagletor

XLDnaute Nouveau
Re : Ecrire la cellule d'un fichier excel sans l'ouvrir

Bonjour à tous, et merci pour vos réponses,

Je n'ai pas mis mon fichier car il est assez compliqué, il y a énormément de macro à l'intérieur et ça risquerai de gêner plus qu'autre chose.

Je vais essayer d'expliquer comment fonctionne mon programme :

Mon programme permet de gérer des cartes de contrôle, qui sont utilisées pour contrôler nos produits. Ces cartes de contrôle sont des classeurs excel qui sont situés dans un répertoire sur le réseau.

Je dispose d'une feuille excel, dont je me sert comme moteur de recherche. On tape la référence ou la partie de référence souhaitée dans un textbox et ça m'affiche dans une listbox le listing des références correspondantes. On clic sur le fichier souhaité et ça l'ouvre.

J'ai un fichier excel qui se trouve sur le réseau, et qui me gère mes mots de passe d'accès, pour avoir plus ou moins de droit.

Il peut arriver que l'on change d'arborescence réseau, j'ai donc mis en place un système qui permet de changer les chemins d'accès automatiquement sans modifier le code vba.

En ce qui concerne le moteur de recherche, je change le chemin pour accéder à la carte vierge, celui pour accéder au fichier de gestion de mots de passe, et celui du répertoire où se trouvent les cartes. Cette partie fonctionne très bien.

Pour les cartes de contrôle, je dois changer le lien pour accéder à la feuille de gestion des mots de passe. C'est plus difficile puisque j'ai actuellement 500 cartes, et que l'on en fait tous les jours.

Je me vois donc mal changer le lien sur toutes les cartes les unes après les autres.
Je voudrais donc, à partir de mon moteur de recherche, mettre à jour le lien qui se trouve "cellule A5 feuil3" de toutes mes cartes de contrôle. Je pensais donc faire une macro pour automatiser tout ça, par exemple :

Je copie mon lien "cellule A4 feuil2" de mon moteur de recherche, et je le colle "cellule A5 feuil3" de mes cartes de contrôle situées sur le réseau après clic sur un bouton.

Voilà, j'espère que mes explications sont assez claire.

Merci pour votre attention, et surtout pour votre aide
 

Discussions similaires

Statistiques des forums

Discussions
312 613
Messages
2 090 233
Membres
104 460
dernier inscrit
Özlem