Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1387 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

gérer trois classeurs différents

n°1546015
galopin01
Posté le 20-04-2007 à 20:37:33  profilanswer
 

Reprise du message précédent :
Public ou pas c'est sans intéret, ce ne me semble pas le problème.
Si l'on utilise une notation conventionnelle avec des variables dans les procédures, celà oblige à passer des paramètres et/(ou) à utiliser des blocs With pour travailler sur des objets diférents.
Ce ne me semble pas beaucoup plus compliqué que les contorsions que tu essaies de faire...
Il me semble (mais je ne suis pas du tout sur de cette affirmation) que le fait de déclarer des objets Workbook et Worksheet en tête de module rallonge exagérément la durée d'exécution de la procédure. Il faudrait vérifier en mettant un timer mais bon...
Quoi qu'il en soit, bien que cette méthode ne m'inspire guère, malgré ma répugnance, je l'ai testé sur 2 classeurs bidons, je vous passe un tas de commentaire...
J'ai juste résumé scrupuleusement le code :  
 

Code :
  1. Dim k, o
  2. Dim Wb As Workbook
  3. Dim WbB As Workbook
  4. Dim Ws As Worksheet
  5. Dim WsB As Worksheet
  6. Sub test()
  7. Set Wb = Workbooks.Open("A.xls" )
  8. Set WbB = ThisWorkbook
  9. Set Ws = Wb.Worksheets(1)
  10. Set WsB = WbB.Worksheets(1)
  11. For Each o In WsB.Range("A1:A10" )
  12. k = k + 1
  13. galopin
  14. Next
  15. End Sub
  16. Sub galopin()
  17. Ws.Cells(k, 1).Value = WsB.Cells(k, 1).Value
  18. End Sub


 
Et ça passe sans encombre ! Ce qui n'est en aucune façon un encouragement à coder de cette manière !
 
J'en déduit qu'il y a matière à examiner plus à fond l'ensemble du classeur de notre ami pour voir si dans les autres modules au hasard de ses déclarations globales, il n'y aurait pas des déclarations contradictoires.  
Pour ma part dans le code en image je ne vois pas d'anomalie criante (sauf peut-être cellule qui est déclarée) mais pas instanciée et ensuite utilisée à la volée de manière... (à vérifier mais bon...)
Tant qu'à mettre une pièce jointe, tu aurais aussi vite fait de balancer tout ton classeur sur cjoint ( en virant les données inutiles dans les feuilles.
Bonsoir.


Message édité par galopin01 le 20-04-2007 à 20:42:48
mood
Publicité
Posté le 20-04-2007 à 20:37:33  profilanswer
 

n°1546024
galopin01
Posté le 20-04-2007 à 21:04:57  profilanswer
 

Après vérification il se trouve que la macro (ci dessus) que je viens de tester  (avec un Timer) est 3 à quatre fois plus rapide que si on intègre "tout en une".
Malgré ma répugnance et le peu d'orthodoxie apparente il y a donc intéret à essayer de solutionner le problème de notre ami sous la forme originale plutôt qu'avec du tout en un...
Mais à ce stade pièce jointe avec l'intégralité du code de tous les modules indispensable...
A+

n°1546028
seniorpapo​u
Posté le 20-04-2007 à 21:22:54  profilanswer
 

Bonsoir,
Où est déclaré Feuilledefautpointagefinal dans tes Dim??
Je ne vois que feuilledefautpointage
Cordialement
 
edit: comme le dit souvent galopin01: option explicit aurait donné la solution

Message cité 1 fois
Message édité par seniorpapou le 20-04-2007 à 21:33:06
n°1546030
Xocs
Posté le 20-04-2007 à 21:47:42  profilanswer
 

galopin01 a écrit :

Après vérification il se trouve que la macro (ci dessus) que je viens de tester  (avec un Timer) est 3 à quatre fois plus rapide que si on intègre "tout en une".
Malgré ma répugnance et le peu d'orthodoxie apparente il y a donc intéret à essayer de solutionner le problème de notre ami sous la forme originale plutôt qu'avec du tout en un...
Mais à ce stade pièce jointe avec l'intégralité du code de tous les modules indispensable...
A+


 
http://cjoint.com/?euvRogRHt1
http://cjoint.com/?euvSR2OFS2
http://cjoint.com/?euvS33VUwX
http://cjoint.com/?euvTkSCDmj
 
Tout est dans le fichier DefautPointage.xls
 
Attention aux répertoires qui peuvent changer (il faudra que je me décide à mettre un pathfile)
 

seniorpapou a écrit :

Bonsoir,
Où est déclaré Feuilledefautpointagefinal dans tes Dim??
Je ne vois que feuilledefautpointage
Cordialement
 
edit: comme le dit souvent galopin01: option explicit aurait donné la solution


 
En effet, c'était ça ...  :sweat:  
 
Maintenant, je l'ai fait, tout le code marche bien comme ilfaut, ça tourne sans erreur. Le seul problème, c'est que ça n'écrit pas ce qu'il faudrait dans DefautPointageFinal ...

n°1546038
seniorpapo​u
Posté le 20-04-2007 à 22:13:23  profilanswer
 

Bonne nuit
et ligne2  ??
à demain

n°1546056
galopin01
Posté le 20-04-2007 à 22:59:02  profilanswer
 

Bonsoir,
C'est pourtant pas faute de m'être esquinté les yeux sur ces variables à la noix.  
C'est sur qu'un petit coup d'Option Explicit et des noms de variables un peu plus clairs auraient pas fait de mal. Pourquoi faire compliqué...
 
A+

n°1546075
Xocs
Posté le 21-04-2007 à 00:14:42  profilanswer
 

Ah, cette fois ci, c'est bon. J'ai rajouté l'Option Explicit et le Dim Ligne2
 
Merci à tous de votre aide qui m'a fait bien avancer et même comprendre un peu mieux comment ça marche :)


Message édité par Xocs le 21-04-2007 à 00:14:56
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Beaucoup de formulaires utilisateur à gérer[C] Executables différents pour un même code source?
Gerer le chargement d'une page Webaffichage aléatoire d'images de format différents
Nombre de mois différents par rapport a des datesAppeler un meme script php en cliquant sur plusieurs liens differents
Faire tourner trois boucle for next en même temps ...?vitesse d'éxecution sur différents ordinateurs (Résolu)
Référencement des différents crossOver pour les algorithmes génétiques[VB.net] Différents problèmes sur mon logiciel
Plus de sujets relatifs à : gérer trois classeurs différents


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR