Ouvrir et fermer un fichier .xls via macro

dolphin

XLDnaute Occasionnel
Bonsoir forum,


J'aimerais savoir comment ouvrir un fichier .xls afin d'aller récupérer une donnée dans la cellule A1. De plus j'aimerais savoir comment fermer se fichier via la même macro ... Je ne désire pas que l'utilisateur intervient dans ce processus.


Je vous remercie à l'avance de toute votre aide ainsi que vos suggestion....

Dolphin

;)
 
M

Mytå

Guest
Salut Dolphin

Sans ouvrir le classeur

Sub test()
Dim fich$, feuil$, Cell As Range
fich = 'C:\\NomDuFichier.xls'
feuil = 'NomDeLaFeuille'
Set Cell = Range('A1')

MsgBox GetValueWithADO(fich, feuil, Cell)

End Sub
 

dolphin

XLDnaute Occasionnel
Bonsoir Myta, Bonsoir Forum,


J'aimerais savoir que signifie le signe $ a coté de tes variables ?

J'aimerais savoir si c'est aussi possible d'aller changer la valeur inscrit dans le fichier ? Je ne ssais pas si c,est possible d'o;u la raison que je voulais savoir comment faire un open et un close d'un fichier afin de lire le contenu de la cellule, le changer et aussi fermer le fichier en sauvegardeant la dernière modification.


J'attends de vos nouvelles et merci encore ...

Dolphin
 

Dull

XLDnaute Barbatruc
Salut Dolphin, Mytå, le Forum,

$ est le caractère de déclaration du type String

je te joint un petit fichier texte qui t'explique les differents type de variables et leur definitions

Arf!!! pas passé :huh: [file name=Definition_variable.zip size=1029]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Definition_variable.zip[/file]

Message édité par: dull, à: 07/05/2006 06:31

PS: Mytå Ton proverbe me fait bien rire c'est aussi la devise de mon service à la seule difference que je n'ai que 48 heures ...pour les miracles

Message édité par: dull, à: 07/05/2006 06:34
 

Pièces jointes

  • Definition_variable.zip
    1 KB · Affichages: 118

MichelXld

XLDnaute Barbatruc
bonjour Dolphin , bonjour Dull , bonjour cher Myta

Myta , tu as oublié de donner la fonction GetValueWithADO dans ton message

Ce site n'existe plus



un exemple pour ecrire dans la cellule A1 d'un classeur fermé

Sub Test()
'necessite d'activer la reference Microsoft ActiveX DataObjects x.x Library
Dim Cn As ADODB.Connection
Dim Cd As ADODB.Command
Dim Rst As ADODB.Recordset
Dim Fichier As String

Fichier = 'C:\\\\\\\\leClasseur.xls'

Set Cn = New ADODB.Connection
Cn.Open 'Provider=Microsoft.Jet.OLEDB.4.0;' & _
'Data Source=' & Fichier & ';' & _
'Extended Properties=''Excel 8.0;HDR=No;'';'

Set Cd = New ADODB.Command
Cd.ActiveConnection = Cn
Cd.CommandText = 'SELECT * from `Feuil1$A1:A1`'

Set Rst = New ADODB.Recordset
Rst.Open Cd, , adOpenKeyset, adLockOptimistic

Rst(0).Value = ' la Donnée à inserer'
Rst.Update

Rst.Close
Set Rst = Nothing
Set Cd = Nothing
Cn.Close
Set Cn = Nothing

MsgBox 'opération terminée '
End Sub




et plus classique : ouvrir le classeur pour ecrire dans la cellule A1 de la Feuil1


Sub Test_V02()
Dim WB As Workbook

Application.ScreenUpdating = False

Set WB = Workbooks.Open('C:\\\\\\\\leClasseur.xls')

WB.Sheets('Feuil1').Range('A1') = 'la nouvelle donnée'
WB.Close True

Application.ScreenUpdating = True
End Sub




en complément des infos données par Dull , je te joint un fichier au sujet des variables


bonne journée
MichelXld

Message édité par: michelxld, à: 07/05/2006 06:40
 

chris

XLDnaute Barbatruc
Bonjour

Je profite de ce fil pour poser une question :
y a t'il un intérêt à lire les données sans ouvrir le fichier ?

J'ai fait une application récement qui ouvre un à un tous les fichiers d'un dossier pour y picorer une dizaine de cellules et en mettre les valeurs dans un autre classeurs.
Cela marche très bien mais peut-être que faire la même chose sans ouvrir les fichiers a un avantage.

Merci d'éclairer ma lanterne.

Bon dimanche.

Message édité par: chris, à: 07/05/2006 11:53
 

MichelXld

XLDnaute Barbatruc
bonjour chère Chris

Travailler sur des classeurs fermés permet un gain de temps lorsque le traitement doit etre effectué sur plusieurs fichiers en série.
Bien sur, pour un seul classeur le gain est minime .

Lorsque que le classeur fermé est utilisé comme une base de données (de la meme maniere qu'Access) les requetes ADO deviennent interessantes (en gain de temps) si le nombre de lignes est conséquent .
Encore une fois , si l'opération est effectuée une fois par semaine, travailler sur un classeur fermé à moins d'interet.


bonne journée
MichelXld
 

chris

XLDnaute Barbatruc
Bonjour Michel et merci.
Dans mon cas, je ne prend qu'une cellule ici et là donc loin du style requête.
Mais j'ouvre et referme jusqu'à 19 classeurs.
Il faudra que je fasse une version classeurs fermés pour mesurer le gain de temps.
Cette technique pourra peut-être me servir à l'avenir.
@ bientôt
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Chris, Michel, Dull, le Fil, le Forum


Pour Chris, une démo interressante avec les Participations des ADOs de Service, the Michel's Gang !!! lol

Lien supprimé

Voir aussi le fil, bourré d'explications :

Lien supprimé (où Sylvie nous avait fait faire un truc assez géant ;)

Bon Dimanche
[ol]@+Thierry[/ol]
 

dolphin

XLDnaute Occasionnel
Bonjour Thierry, bonjour chris, bonjour Forum,


En utilisant une commande ADO, je ne peux changer la valeur inscrite dans un fichier fermé?

Voici ma problèmatique : Je dois avoir une fichier qui ne doit pas changer de nom. Dans ce fichier, il contiendra seulement une valeur ( elle répresente la dernière valeur attribuée pour un numéro de contrat ). Une fois que j'ai été chercher cette valeur et que l'utilisateur doit affecter un # de contrat je dois le changer.

Présentement j'utilisais un fichier 'bidon' sous forme .txt. le nom de ce fichier est le dernier numéro de contrat. Lorsqu'il y a affectation d'un nouveau #, j'effectue un rename de ce fichier. Cette façon de faire fonctionne très bien par contre pour ceux qui utilise des portable et qui ne sont pas connecter au réseau me cause des problèmes énormément. Je dois changer ma programmation afin que le nom du fichier ne change pas mais seulement le contenu.

Si vous avez des suggestions je vous remercie à l'avance ....


Bonne journée :)

dolphin
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 337
Messages
2 087 391
Membres
103 536
dernier inscrit
komivi