FORUM Tom's Hardware » Programmation » Autre » VBA Excel: travailler avec fichiers fermes
 

VBA Excel: travailler avec fichiers fermes

96 utilisateurs inconnus
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : VBA Excel: travailler avec fichiers fermes
 
Plus d'informations

Bonjour,
 
J'ai vu qu'il y a deja eu quelques posts sur ce sujet mais aucune des reponses que j'ai pu lire ne semble correspondre a mon probleme.
 
Voici mon "cas":
 
J'ai un fichier Master ouvert dans Excel qui me montre les depenses de mes centres de cout par ligne (j'ai 80 lignes) ainsi que le budget correspondant et l'ecart entre le reel et le budget. Dans ce fichier, je peux choisir un mois de l'annee 2006 ainsi qu'un centre de cout. Suivant mon choix, ma macro va chercher dans un fichier intitule Targets qui se trouve dans le meme repertoire le budget correspondant au mois pour chacune des 80 lignes.
 
J'ai ouvert le fichier Targets par l'instruction Open tName For Input as #1 (ou tName comprend le chemin d'acces complet du fichier Targets).
 
Jusque la, pas de problemes, c'est apres que cela se complique. Je veux faire une recherche dans ce fichier pour trouver la bonne worksheet (j'ai une worksheet par centre de cout). J'ai donc ecrit (note: toutes les variables ont ete definies prealablement of course):
 
' Identifies the correct tab in the file
            myWSName = myCostCenter & " " & myPeriod1
            myTargetsTabs = Workbooks(tName).Worksheets.Count
                For t = 1 To myTargetsTabs
                    If Workbooks(myTargets).Worksheets(t).Name = myWSName Then
                        Workbooks(myTargets).Worksheets(t).Activate
                        c = 1
                            Do Until ActiveSheet.Cells(6, c).Value = myMonth
                                c = c + 1
                            Loop
                        ActiveSheet.Cells(6, c).Select
                        ActiveCell.Offset(5, 0).Select
                        ActiveSheet.Range(Selection, Selection.End(xlDown)).Copy
                         
                        mySGA.Activate
                        Range("F18" ).Select
                        ActiveCell.PasteSpecial (xlPasteValues)
                         
                        Exit For
                    End If
                Next t
 
Ca marche impeccable quand mon fichier tName est ouvert dans Excel. Si j'essaie de faire tourner la macro avec le fichier ferme, l'instruction Open... fonctionne bien mais la macro plante a la ligne myTargetsTabs = Workbooks(tName).Worksheets.Count ou j'obtiens l'erreur "Subscript out of Range". Pour info aussi, j'ai defini tName comme une String, je pense que le probleme pourrait venir de la, mais je ne vois pas comment faire une reference a ce fichier autrement. Merci d'avance pour votre aide. J'espere avoir ete clair dans mes explications, n'hesitez pas a me demander si je me suis mal explique.
 
Pascal

Profil : Pointeur
Plus d'informations

balise [code] :o


---------------
Da Bidz Triad©®™: Bidz Interceptor
.:: Smileyz version 4.2 [050625]::. -- Code source disponible sous licence GPL.
[u
Plus d'informations

Desole, je ne comprends pas balise [code]. Dois-je rajouter kekechose au code, ai-je oublie une info dans mon message?

zeb
Profil : Modérateur libre
Plus d'informations

Lis le topik "Quelques règles simples à respecter -- /!\ A lire avant de poster !". Tu sauras ce que signifie le message laconique "balise [code] :o"
 

Plus d'informations

Bonjour,  
 
J'ai vu qu'il y a deja eu quelques posts sur ce sujet mais aucune des reponses que j'ai pu lire ne semble correspondre a mon probleme.  
 
Voici mon "cas":  
 
J'ai un fichier Master ouvert dans Excel qui me montre les depenses de mes centres de cout par ligne (j'ai 80 lignes) ainsi que le budget correspondant et l'ecart entre le reel et le budget. Dans ce fichier, je peux choisir un mois de l'annee 2006 ainsi qu'un centre de cout. Suivant mon choix, ma macro va chercher dans un fichier intitule Targets qui se trouve dans le meme repertoire le budget correspondant au mois pour chacune des 80 lignes.  
 
J'ai ouvert le fichier Targets par l'instruction Open tName For Input as #1 (ou tName comprend le chemin d'acces complet du fichier Targets).  
 
Jusque la, pas de problemes, c'est apres que cela se complique. Je veux faire une recherche dans ce fichier pour trouver la bonne worksheet (j'ai une worksheet par centre de cout). J'ai donc ecrit (note: toutes les variables ont ete definies prealablement of course):  
 

Code :
  1. ' Identifies the correct tab in the file
  2.             myWSName = myCostCenter & " " & myPeriod1
  3.             myTargetsTabs = Workbooks(tName).Worksheets.Count
  4.                 For t = 1 To myTargetsTabs
  5.                     If Workbooks(myTargets).Worksheets(t).Name = myWSName Then
  6.                         Workbooks(myTargets).Worksheets(t).Activate
  7.                         c = 1
  8.                             Do Until ActiveSheet.Cells(6, c).Value = myMonth
  9.                                 c = c + 1
  10.                             Loop
  11.                         ActiveSheet.Cells(6, c).Select
  12.                         ActiveCell.Offset(5, 0).Select
  13.                         ActiveSheet.Range(Selection, Selection.End(xlDown)).Copy
  14.                        
  15.                         mySGA.Activate
  16.                         Range("F18" ).Select
  17.                         ActiveCell.PasteSpecial (xlPasteValues)
  18.                        
  19.                         Exit For
  20.                     End If
  21.                 Next t


 
Ca marche impeccable quand mon fichier tName est ouvert dans Excel. Si j'essaie de faire tourner la macro avec le fichier ferme, l'instruction Open... fonctionne bien mais la macro plante a la ligne myTargetsTabs = Workbooks(tName).Worksheets.Count ou j'obtiens l'erreur "Subscript out of Range". Pour info aussi, j'ai defini tName comme une String, je pense que le probleme pourrait venir de la, mais je ne vois pas comment faire une reference a ce fichier autrement. Merci d'avance pour votre aide. J'espere avoir ete clair dans mes explications, n'hesitez pas a me demander si je me suis mal explique.  
 
Pascal  
 

zeb
Profil : Modérateur libre
Plus d'informations

Tu as fait un effort de présentation, c'est bien :)
Encore une critique : le bouton http://img.presence-pc.com/forum/themes_static/images_forum/1/edit.gif est là pour ça, pas besoin de tout réécrire :D
 
Tu veux ouvrir un classeur au sens Excel. Mais en fait, tu ouvres un fichier au sens VB !
Donc quand il est DEJA ouvert, pas de problème, et quand il n'est pas ouvert, ça plante.
 
Pour ouvrir un classeur, utilise :

Code :
  1. Workbooks.Open FileName:="ton_classeur.xls"


Message édité par zeb le 11-01-2006 à 19:55:02

Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » Autre » VBA Excel: travailler avec fichiers fermes
 

Annonces Google
Publicité