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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Problème sur un programme VBA lorsqu'on ouvre 2 fichiers excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème sur un programme VBA lorsqu'on ouvre 2 fichiers excel

n°1879072
enjoycarab​in
gnagnagna
Posté le 29-04-2009 à 09:45:51  profilanswer
 

Bonjour à tous,
 
 
J'espère être au bon endroit pour poser ma question, j'ai quelques petits problèmes avec Excel et VBA. Je travaille sur un gros classeur excel que je vais appeler, disons, "BIG" (+ de 20 onglets différents) qui utilise quelques petits programmes de calcul en VBA. Je vous donne un exemple:
 
Function Echangeur(Temp_entrée, Débit_fumées, Chaleur)
 
'La fonction Echangeur renvoie la valeur de la température des fumées en sortie d'échangeur
' Elle récupère de la feuille Excel "Echangeurs" les trois données suivantes:
' La température d'entrée des fumées : Temp_entrée
' Le débit des fumées : Débit_fumées
' La chaleur nécessaire pour avoir 650°C comme température d'air de fluidisation : Chaleur
 
Dim a, b, C, d, T, dQ, Z As Single
 
' On récupère les valeurs des coefficients de la capacité calorifique des gaz en sortie du four
a = Application.Sheets("thermo" ).Cells(30, 8).Value
b = Application.Sheets("thermo" ).Cells(30, 9).Value
C = Application.Sheets("thermo" ).Cells(30, 10).Value
d = Application.Sheets("thermo" ).Cells(30, 11).Value
 
' On initialise les variables
Z = 0
T = Temp_entrée
 
'On effectue une itération (en retirant 1°C à chaque passage dans la boucle) sur la température T
'jusqu'à ce que la chaleur fournie z soit supérieure à la chaleure nécessaire pour atteindre 650°C
 
  Do Until Z > Chaleur
  dQ = Débit_fumées * (a + b * (T + 1) + C * (T + 1) ^ 2 + d / ((T + 1) + 273) ^ 2) / 4.1868
   
  Z = Z + dQ
  T = T - 1
   
  Loop
   
' La fonction renvoie la température ainsi calculée
  Echangeur = T
   
End Function
 
 
Le programme fonctionne y'a pas de soucis de ce côté (encore que pour les "vrais", il doit y avoir des choses qui fachent...) mais lorsque j'ouvre un autre fichier excel en même temps que BIG j'ai 3 cas possibles:
- des fois où le programme tourne (mais aucune idée du pourquoi, je pense que c'est un coup de chance car les cellules correspondantes doivent être vides)
- Des fois où il renvoie "#VALEUR"  dans la cellule. J'ai l'impression qu'il va chercher les cellules appelées non pas dans BIG comme je le voudrais mais dans l'autre fichier excel ouvert ... Le plus étonnant c'est que ça bug si j'ouvre BIG après en avoir ouvert un autre, alors que si j'ouvre BIG en 1er, je peux ensuite ouvrir tous les fichiers excels que je veux sans que ça bug...(à moins que ce soit un autre coup de chance ou que les calculs soient faux...)
- Si j'ouvre un fichier similaire, c'est-à-dire un BIG avant qu'il ait été modifié (qui avait quelques onglets en moins et quelques formules de changées), là ça bug complètement quand je fais F9 pour faire le calcul et je suis obligée d'arrêter Excel avec ctrl+alt+suppr...
 
 
Donc, revenons en à nos moutons, est-ce que c'est possible que cela vienne du fait que le programme VBA de BIG va chercher les valeurs dans le 2e fichier excel ouvert même s'il n'a pas d'onglet "thermo"? Sinon, avez-vous une idée du problème que je peux rencontrer?  
Je précise juste (ça a peut-être son importance?) que j'ai écrit mes programmes VBA dans:
VBAProject (BIG.xls)
dans la sous partie "Modules"
 
Je vous remercie par avance pour votre aide  


---------------
Il vaut mieux vivre avec des remords qu'avec des regrets {O.Wilde}
mood
Publicité
Posté le 29-04-2009 à 09:45:51  profilanswer
 

n°1879277
Fouinette8​5
Posté le 29-04-2009 à 14:25:29  profilanswer
 

Je pense que le problème viens du faite que tu utilises tes noms de feuilles mais sans tes noms de fichiers que tu peux récupérer en faisant :  
 
Sub Name()
Dim NomFichier As String
 
NomFichier = ThisWorkbook.Name
 
End Sub
 
Essai de selectionner le fichier sur lequel tu veux travailler avant chaque début de fonction. Car comme tu navigues entre divers fichiers il est indispensable de retourner sur le bon fichier avant de commencer tes calculs.


Message édité par Fouinette85 le 29-04-2009 à 14:25:43
n°1879308
enjoycarab​in
gnagnagna
Posté le 29-04-2009 à 15:00:54  profilanswer
 

merci bien, j'essaie ça de suite et je te dis si ça marche!


---------------
Il vaut mieux vivre avec des remords qu'avec des regrets {O.Wilde}
n°1879850
enjoycarab​in
gnagnagna
Posté le 30-04-2009 à 16:33:55  profilanswer
 

bon, finalement le problème est résolu: il suffit de faire appeler le calcul par un bouton vba, et comme ça la procédure appelée sait quel est le classeur actif puisqu'on clique dessus pour le calcul... Tout ça pour ça! merci fouinette, j'ai quand même adopter ta proposition pour être certaine que ça marche :)


---------------
Il vaut mieux vivre avec des remords qu'avec des regrets {O.Wilde}

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Problème sur un programme VBA lorsqu'on ouvre 2 fichiers excel

 

Sujets relatifs
Programme en Fortran 95Comparaison de deux fichiers
Problème redirection automatique et méthode POSTProblème d'affichage double boucle (mysql_fetch_array)
suppression dans un array (tableau) [modifié][Résolu] problème avec mon Code
Petit problème avec les guillemetsProblème connexion BDD SQl
[excel] Question de noob sur les commandes IFVBA Excel: comment créer un sub utilisant des parametres ?
Plus de sujets relatifs à : Problème sur un programme VBA lorsqu'on ouvre 2 fichiers excel


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