![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
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 http://www.excel-downloads.com/forum...seur.htm#53167. 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 |
|
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
Guest
Messages: n/a
|
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 ![]() http://www.excelabo.net/xl/fichiers....riresansouvrir (oui je sais honte à moi, je suis allée 'lurker' le forum d'un concurrent holallalalalalalaaaa!! ) |
|
|
|
#3 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Messages: 3 816
|
bonjour Dom , bonjour Deedo
tu trouveras aussi quelques exemples dans ce lien http://www.excel-downloads.com/compo.../id,9498/#9498 bonne soiree MichelXld |
|
|
|
|
|
#5 (permalink) |
|
Guest
Messages: n/a
|
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 : http://www.excel-downloads.com/forum...e-classeur.htm) 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 |
|
|
|
#7 (permalink) |
|
Guest
Messages: n/a
|
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] |
|
|
|
#8 (permalink) |
|
XLDnaute Accro
Date d'inscription: février 2005
Localisation: Aubenas
Version Excel : Excel 2000 (PC)
Messages: 1 126
|
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]
__________________
A+ Michel_M Dernière modification par michel_m ; 21/07/2007 à 00h53. |
|
|
|
|
|
#9 (permalink) |
|
Guest
Messages: n/a
|
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] |
|
|
|
#10 (permalink) |
|
XLDnaute Accro
Date d'inscription: février 2005
Localisation: Aubenas
Version Excel : Excel 2000 (PC)
Messages: 1 126
|
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
__________________
A+ Michel_M |
|
|
|
|
|
#11 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
|
#12 (permalink) |
|
XLDnaute Accro
Date d'inscription: février 2005
Localisation: Aubenas
Version Excel : Excel 2000 (PC)
Messages: 1 126
|
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]
__________________
A+ Michel_M Dernière modification par michel_m ; 21/07/2007 à 00h53. |
|
|
|
|
|
#13 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Messages: 3 816
|
bonjour Dom , Deedo et Michel
Michel , Excellent ta solution pour insérer des formules dans un classeur fermé . Cela faisait plusieurs semaines que je cogitais sur le meme theme sans y arriver encore merci et bonne soirée MichelXld |
|
|
|
|
|
#15 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
| ANNONCES | |
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|