Nous sommes actuellement le 02 Juil 2026, 19:39

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 8 message(s) ] 
Auteur Message
MessagePublié: 12 Juin 2007, 18:47 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 25 Jan 2002, 06:05
Message(s) : 502
Localisation : Montréal
Salut à tous,

Voilà deux post de suite maintenant auxquels je n'ai eu aucune réponse :oops: :P , est ce que mes questions deviennent trop compliquées ou est ce parceque vous êtes tannés de m'entendre?

je m'essaye quand même. Mon but est de, à partir du fichier A, allez chercher des valeurs dans le fichier B. C'est plus compliqué mais je simplifie au maximum. Voici pour le moment comment je m'y prends :

Code :
'Stocker le nom du fichier A pour le ramener plus tard
thisFile = ActiveWorkbook.Name
'Ouvrir le fichier B
ChDir "G:\Test"
Workbooks.Open Filename:="G:\Test\B.xls"
'Prendre une valeur du fichier B
totalValue = Sheets(2).Range("H11").Value
'Fermer le fichier B
ActiveWindow.Close
'Revenir au fichier A
Windows(thisFile).Activate


Ceci fait parfaitement l'affaire, mais je trouve le code trop lourd. Dans la réalité, il s'agit d'une boucle qui va faire ouvrir plusieurs dizaines de fichiers. Je voulais donc savoir si cela pouvait être fait sans avoir à lancer le GUI à chaque fois que ça lit dans Excel, ce qui pourrait être beaucoup plus rapide.

En fait, n'importe quelle manière d'optimiser ce mini-script pour gagner de la vitesse serait bonne... Faut dire qu'il y a un petit bonhomme qui doit sélectionner le fichier à lire à chaque passage... :twisted:

Merci,

Simo

_________________
Desktop : Core2 Duo E8600 3.33GHz - 8GB DDR3 - 2x NVIDIA GeForce 9600 GT - 3x Fujitsu 22" - Win7 Ultimate
Laptop - Asus V1V : Core2 Duo P8600 2.4GHz - 4GB DDR2 - ATI Mobility Radeo HD 3650 - Win7 Ultimate
Tablet - Asus Transformer Prime : NVIDIA Tegra 3 Quad-core - 1GB - Android ICS


Dernière édition par Simo Bk le 04 Juil 2007, 06:22, édité 1 fois.

Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 12 Juin 2007, 19:02 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 06 Jan 2002, 22:38
Message(s) : 5949
Localisation : Quebec
Ce qui pourrait accelerer le traitement, c'est de preloader excel en mémoire, il y aurait donc juste la lecture du fichier et non pas le fermer et l'ouvrir complètement à chaque fois. Normalement cela ce fait, tu peux aussi spécifier que l'on ne voit pas excel à l'écran, je me rappele l'avoir fait en VB y a une coupe d'années à l'école.

_________________
Herakles Informatique Inc
Collaborateur pour HardGamers


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 12 Juin 2007, 20:11 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 25 Jan 2002, 06:05
Message(s) : 502
Localisation : Montréal
Euuuhhh... As tu un moyen de le faire? :lol:

_________________
Desktop : Core2 Duo E8600 3.33GHz - 8GB DDR3 - 2x NVIDIA GeForce 9600 GT - 3x Fujitsu 22" - Win7 Ultimate
Laptop - Asus V1V : Core2 Duo P8600 2.4GHz - 4GB DDR2 - ATI Mobility Radeo HD 3650 - Win7 Ultimate
Tablet - Asus Transformer Prime : NVIDIA Tegra 3 Quad-core - 1GB - Android ICS


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 21 Juin 2007, 02:20 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 25 Jan 2002, 06:05
Message(s) : 502
Localisation : Montréal
Désolé de remonter ça, mais personne n'a d'idée ? :? :oops:

_________________
Desktop : Core2 Duo E8600 3.33GHz - 8GB DDR3 - 2x NVIDIA GeForce 9600 GT - 3x Fujitsu 22" - Win7 Ultimate
Laptop - Asus V1V : Core2 Duo P8600 2.4GHz - 4GB DDR2 - ATI Mobility Radeo HD 3650 - Win7 Ultimate
Tablet - Asus Transformer Prime : NVIDIA Tegra 3 Quad-core - 1GB - Android ICS


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 21 Juin 2007, 08:21 
Hors-ligne
Modérateur
Modérateur
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 15:10
Message(s) : 3551
Localisation : Beauport, Québec
C'est quelque chose comme ça:

Code :
Sub RecupererValeur(strNomFichier As String)

    Dim ExcelApp As Excel.Application
   
    Set ExcelApp = New Excel.Application
   
    With ExcelApp
       
        .Workbooks.Open strNomFichier
       
        a = .Cells(2, 2).Value
       
    End With
   
    ExcelApp.Quit
   
    Set ExcelApp = Nothing
   
End Sub

_________________
Procyon,
Modérateur de la section Trouvailles


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 04 Juil 2007, 06:22 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 25 Jan 2002, 06:05
Message(s) : 502
Localisation : Montréal
Salut,

Désolé j'avais oublié de mentionner que ça avait marché parfaitement...

Merci :)

Simo

_________________
Desktop : Core2 Duo E8600 3.33GHz - 8GB DDR3 - 2x NVIDIA GeForce 9600 GT - 3x Fujitsu 22" - Win7 Ultimate
Laptop - Asus V1V : Core2 Duo P8600 2.4GHz - 4GB DDR2 - ATI Mobility Radeo HD 3650 - Win7 Ultimate
Tablet - Asus Transformer Prime : NVIDIA Tegra 3 Quad-core - 1GB - Android ICS


Haut
 Profil  
Répondre en citant  
MessagePublié: 18 Oct 2007, 16:27 
Hors-ligne
Nouvel adepte
Nouvel adepte
Avatar de l’utilisateur

Inscription : 15 Jan 2002, 21:46
Message(s) : 81
Localisation : Laval
J'ai pas trop compris pourquoi tu ouvrais le fichier B.

C'est certain que ca sera plus rapide si tu va chercher la valeur directement avec juste une ligne de code

TaVariable = "='C:\TEST\[B.xls]Sheet2'!R11C8"


Salutations
Eric


Haut
 Profil  
Répondre en citant  
MessagePublié: 18 Oct 2007, 16:28 
Hors-ligne
Nouvel adepte
Nouvel adepte
Avatar de l’utilisateur

Inscription : 15 Jan 2002, 21:46
Message(s) : 81
Localisation : Laval
Bill_Gates a écrit:
J'ai pas trop compris pourquoi tu ouvrais le fichier B.

C'est certain que ca serait plus rapide si tu allais chercher la valeur directement ...

totalValue = "='G:\TEST\[B.xls]Sheet2'!R11C8"


Salutations
Eric


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 8 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 0 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Recherche de:
Aller vers :  
cron
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site