ECRIRE DANS FICHIER FERMÉ

D

DOM

Guest
Bonjour forum

COmment vas tu ce midi?
CE fil fait en quelques sorte suite a la la recherche de solution au pb évoqué dans le fil Lien supprimé.

Je souhaite etablir les liens entre mon fichier actif et un fichier fermé ou au moins copié les valeurs dans ce dernier.

Le groupe de cellule que je souhaite copier se trouve dans playa. Ce st des cellules qui se trouvent a des endroits distincts dans le classeur.
je souhaiterai que ces 11 valeurs viennent s ajouter sur une meme ligne de la cellule b5 a la cellule L 5 de mon fichier fermé.
J ai regardé les quelques de demos de michel et du web et j avoue etre un peu perdu avec ces recordset et command text.. notamment dans la définition de l endroit exact du classeur ou je vais copier et la manière de copier les valeurs.

Voici un esquisse de mon code

Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Fichier As String, Cible As String, Feuille As String
Dim n As Byte
Dim valeur As Integer

‘union sous le nom « Playa » des cellule de mon classeur actif que je souhaite copier dans mon fichier fermer
Set playa = Application.Union(Worksheets(« PM »).Range(« C41 »),Worksheets(« donnee »).Range(« D20 »), Worksheets(« Outils »).Range(« E27 »); Worksheets(« PM »).Range(« C41 »), Worksheets(« PM »).Range(« I6 »), Worksheets(« PM »).Range(« av104 »), Worksheets(« Etat »).Range(«E12”), Worksheets(« Etat »).Range(«g50”), Worksheets(« Etat »).Range(«G52”), Worksheets(« Etat »).Range(«I50”), Worksheets(« Etat »).Range(«H50'))
‘utilisation d´un redim pour faciliter la copie
Redim Valeur(11)
For each cell in Playa
Valeur(n) = Cell.formula ’ attribution du lien
N=n+1
Next

Fichier = “X:\\Models\\Plan\\Etat_plan.xls”
Feuille = 'Etat$' 'attention a ne pas oublier le '$'
Set Cn = New ADODB.Connection
Cn.Open 'Provider = Microsoft.Jet.OLEDB.4.0;' & _
'data source=' & Fichier & ';' & _
'extended properties=''Excel 8.0;''
Set Cd = New ADODB.Command
Cd.activeConnection = Cn
Cd.commandText = 'SELECT * from `Etat!$A1:A1`' ‘ je ne sais pas trop ce que ca veut dire je suppose que c est la case d origine
Set Rst = New ADODB.Recordset
Rst.Open Cd, , adOpenKeyset, adLockOptimistic
For n=0 to 11
Rst(0).Value = Valeur(n) je n ai pas trouvé assez d info sur le recordset mais j imagine que c est les valeurs qu on souhaite transféréRst.Update
Cn.Close
Set Cn = Nothing
Set Cd = Nothing
Set Rst = Nothing
End Sub



Je sais que ce code est un peu long masi je remercie tout ce qui auront pris le soin de le lirre

DOM
 
D

Deedo

Guest
bonjour DOM

pfew il est clair que lire depuis un fichier fermé est plus aisé...

j'ai fait mes petites recherches sur le net. Je ne sais pas si tu as fait un tour sur cette URL mais peut être qu'elle pourra t'aider :)

Ce lien n'existe plus

(oui je sais honte à moi, je suis allée 'lurker' le forum d'un concurrent holallalalalalalaaaa!! :eek: )
 
D

DOM

Guest
Bonjour Forum, Bonjour Michel


Comment ca va? CA vbase en puissance???

J´espère que tu ne passeras pas à côté de ce fil... et que tu pourras lire ma question...

Je suis entrain de découvrir les objets ADODB..
Et j ´avoue que ca devient du haut niveau.. c´est sûrement pour ca que je m´embrouille beaucoup...

Que de programmes je viens regarder des dizaines d´exemples et j avoue que c´est le tien qui me paraît le plus maniable...

Je veux insérer ma macro 'transfert_ds fichier fermé' dans plusieurs fichiers 'projets' distincts... Le fichier fermé en question sera donc le fichier 'bilan' de tous ces projets en quelques sortes...

ds le code suivant ou tu passes par un USF (classeurSaisie . fil : Lien supprimé)

Comment as tu attribué at on Recordset:

Field(0) -> Range('a1') du fichier fermé
' ' (1) -> '' ('a2') ' '
' ' (2) -> '' ('a3') ' '
' ' (3) -> '' ('a4') ' '

Je souhaiterai passer directement par des cellules au lieu d usf

un peu ds ce genre

With Rs
.AddNew
.Fields(0) = Range('d40') 'date
.Fields(1) = Range('f35') 'nom
.Fields(2) = Range('h10') 'prenom
.Fields(3) = Range('l3') 'valeur
.Fields(4) = Range('j3') 'commentaire
.Update

End With

Peux tu m´éclairer???
MERCI d avance

A+

DOM
 
D

DOM

Guest
bonjour forum bonjour michel

comment allez vous?

j ai joint 2 fichiers pour mieux te rendre coompte de l application que je veux mettre en place...

Si tu peux y jeter un coup d oeil....

Meric d avance

bonne journée

DOM [file name=ecrire_ds_fichier_ferme.zip size=17379]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ecrire_ds_fichier_ferme.zip[/file]
 

Pièces jointes

  • ecrire_ds_fichier_ferme.zip
    17 KB · Affichages: 60

michel_m

XLDnaute Accro
Bonjour Dom, Michel

Dom,

J'ai repris ton idée de playa et j'ai nommé les cellules de départ ainsi que la destination dans classeur fermé. Cela simplifie l'écriture de la macro 'ecrire'( 'nommer' permet de ne pas tenir compte des adresses de feuilles et de cellules) et te permet d'envoyer plus facilement tes données à transfèrer.
J'ai mis des petites notes pour tenter d'expliquer le pourquoi du comment.n'hésites pas à poster si tu doutes

En espèrant que cela répondra à ton pb

Le deuxième Michel

Michel_M [file name=Dom_xld.zip size=24170]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Dom_xld.zip[/file]
 
Dernière édition:
D

DOM

Guest
Merci Bcp The Michels

Je viens de tester ton code.. et ca marche très bien.. je m en réjouis enormement car j ai pas mal galéré avec ce truc.. Il fallait que ca passe entre les mains d un expert... ;-) :whistle:

Il me reste juste une question je souhaiterai inserer la formule ou liaison de la cellule a transférer au format (u autre)

Fields(0)= '='X:\\Modeles\\projets\\[' & Workbook.FullName & ']playa(0)'

Une fiche projet ('fichier ouvert') par projet

Le 'fichier fermé'pourra me renseigner sur l etat de chacune des fiches projets ('fichier ouvert') en cours.

Copier les valeurs des cellules de playa dans le fichier fermé implique une activation régulière de la macro pour mettre a jour l etat du projet.

Le fait d´insérer les liaisons aux cellules au lieu de seulement copier les valeurs me limiterait le nombre d activation de la macro a une fois en début de projet (ou de remplissage du fichier ouvert)..
L´actualisation se ferait ensuite lors de l ouverture du fichier fermé.

C est faisable tu crois?
Si je ne suis pas clair, tu me le dis?

Merci pour ton aide dans tous les cas...


Bonne soiréee
DOM [file name=Dom_xld_20050726200635.zip size=25634]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Dom_xld_20050726200635.zip[/file]
 

Pièces jointes

  • Dom_xld_20050726200635.zip
    25 KB · Affichages: 66

michel_m

XLDnaute Accro
Re,

OK, je crois avoir compris ce que tu veux; confirme ou infirme le

Tu crées P+q projets et à chaque nouveau tu inscris les celules voulues dans une nouvelle ligne de 'classeur fermé';

Ensuite si des valeurs changent dans un des projets créés tu voudrais que les changements soient reportés dans 'classeur fermé' d'où ta demande sur l'inscription de formules inter-classeurs.

C'est ty ça?

Petite question peut-être inutile: les classeurs 'projets' sont ils toujours les mêmes (même adresse des cellules 'source')?

J'essaierai demain , quand? je sais pas, mais je ne garantis rien car je n'ai jamais essayé de mettre une formule dans un champ. enfin, on verra.

A+
Michel_M
 
D

DOM

Guest
Salut michel..

COMMENT VA TU?

C´est exactement ce que je compte faire...

Pour ce qui est de ta question, oui le format des fiches projets est le meme..
C´est un peu comme un formulaire.. Donc toutes les informations determinant l etat d un projet se trouvent au même en droit.

Mon but est de la faire utiliser le moins de fois possible cette macro.. Comme les fiches projets se situent dans le réseau.. Certaines personnes (hors de la centrale) se trouvent deja penaliser par la lenteur de celui ci...
Je voudrai les pénaliser le moins possible en limitant au max la taille de mon fichier (donc eviter les macros inutiles)...


Voilà je suis a t a dispo si t as d autres question bien entendu...

Bonne journée
DOM
 

michel_m

XLDnaute Accro
Salut Dom, Michel et le forum

Ouf! Sacrés pièges dans le fait de mettre une formule dans une base de données construite par ADO! ca m'a bouffé la matinée (pas grave je suis en vacances mais ca va 'encore' raler parce que le ménage n'est pas fait, question d'habitude!)

Dans fichier fermé la formule était bien écrite mais en tant que texte! Ce que je redoutais…

J'ai donc bricolé une usine à gaz qui reconvertit le texte en formule et qui est lancé par un Workbook_open

J'ai installé 3 fichiers projets;

IMPORTANT:Quand tu auras fini tes essais, active les lignes de la macro cachant le bouton écrire (juste avant End sub), sinon tes utilisateurs s'amuseront pas mal...

Playa est maintenant inutile.

J'espère que ca marche: toutefois comme tu es sur réseau, la mise à jour des liens peut être très longue en utilisateur 'fichier fermé' si tu as beaucoup de projets.Pour aller vite, il faudrait faire alors une 2° macro ADO dans l'autre sens...

tiens moi au courant.
cet après midi, c'est promis, je fais le ménage!

A+
Michel_M
[file name=Dom_XLD2.zip size=47700]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Dom_XLD2.zip[/file]
 
Dernière édition:
D

dom

Guest
Salut Michel

Je viens d´étudier ton chef d oeuvre.. je suis vraiment épater..
Ca marche très bien
Je te remercie vraiment de m´avoir encore accorder de ton temps et laisser de côté tes tâches ménagères.

je vois que tu es un passionné même si le ménage c´est pas ce qu on met en priorité généralement.. en tout cas pour moi...

J´ai mis en place le module dans mon fichier atomique..
Mais j avais juste omis un détail...

C´est que les fichier ouvert et fermé ne se situent pas dans le même repertoire...
LE fichier ouvert peut se ranger dans 2 repertoires différents en fonction du contenu de la range('39').

donc j´ai modifié le code de la manière suivante...

!= slash car ca passe pas
.Fields(0) = '= 'X:!Modele!Plan!' & Range('C39') & '![' & classeur & ']Cel1'

le transfert se passe bien mais le contenu de mes cellules m affiche la formule de la liaison et non le contenu de la cellule avec laquelle elle est liée..

Si tu as un idée?

n´hésite pas


Merci encore

j ai avancé enormément grace a toi

Bonne soirée
A dem

dom
 

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 098
Membres
103 116
dernier inscrit
kutobi87