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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA Excel] Problème chemin absolu 2 classeurs - 2 chemins différents

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA Excel] Problème chemin absolu 2 classeurs - 2 chemins différents

n°2122179
Alex_94
Posté le 18-01-2012 à 21:20:57  profilanswer
 

Bonsoir à tous,  
 
Comme le titre l'indique, j'ai un petit problème à propos d'un code utilisant des chemins absolus.
 
J'ai un classeur dans lequel il y a la macro. Cette macro remplit un tableau à l'aide de chiffres contenus dans un autre classeur ouvert mais qui n'est pas dans le même dossier.
 
Pour pouvoir aller chercher ces données, j'ai voulu faire passer le chemin de ce classeur dans une variable de type string. Le nom du fichier est entré par l'utilisateur dans un UserForm qui appelle ensuite ma Sub. J'ai donc une variable string Report_FileName contenant le nom du classeur externe.  
 
Pour le chemin, je fais :  
 

Code :
  1. Report_FileNamePath = Workbooks(Report_FileName).Path  ' Report_FileNamePath de type string
  2. Report_FileNameFullPath = Report_FileNamePath & "\" & Report_FileName  ' évidemment de type string aussi
  3. MsgBox(Report_FileNameFullPath) ' ---> OK !


 
Ensuite, c'est là que rien ne vas plus... J'essaye de boucler sur le classeur externe en utilisant cette variable  
 

Code :
  1. For i = 1 to 1000
  2. if Workbooks(Report_FileNameFullPath).Sheets("Tab 1" ).Cells(10,i).value="FRANCE" Then   ' le Workbooks(Report_FileNameFullPath) ne fonctionne pas (checker par MsgBox)
  3. [...]
  4. End If
  5. Next i


 
Auriez-vous une idée du problème?

mood
Publicité
Posté le 18-01-2012 à 21:20:57  profilanswer
 

n°2122324
SuppotDeSa​Tante
Aka dje69r
Posté le 19-01-2012 à 14:46:51  profilanswer
 

Si tu veux aller verifier des infos dans un fichier il faut d'abord l'ouvrir.
Tu fais ton truc.
Tu le fermes.
 
Et comme tu es "obligé" de l'ouvrir (faudrait rechercher dans mes messages j'avais donné une methode pour ne pas etre obligé) bah tu n'as plus besoin du fullpath pour verifier ce qu'il y a en "Tab 1"


---------------
Soyez malin, louez entre voisins !
n°2122412
Alex_94
Posté le 19-01-2012 à 21:13:26  profilanswer
 

Alex_94 a écrit :


 
J'ai un classeur dans lequel il y a la macro. Cette macro remplit un tableau à l'aide de chiffres contenus dans un autre classeur ouvert mais qui n'est pas dans le même dossier.
 
 


 
J'ai précisé justement que celui-ci était bien ouvert au moment de l'exécution.

n°2122419
SuppotDeSa​Tante
Aka dje69r
Posté le 19-01-2012 à 21:34:38  profilanswer
 

SuppotDeSaTante a écrit :

Si tu veux aller verifier des infos dans un fichier il faut d'abord l'ouvrir.
Tu fais ton truc.
Tu le fermes.
 
Et comme tu es "obligé" de l'ouvrir (faudrait rechercher dans mes messages j'avais donné une methode pour ne pas etre obligé) bah tu n'as plus besoin du fullpath pour verifier ce qu'il y a en "Tab 1"


donc il faut pas utiliser le fullpath mais le nom du classeur. [:le colonel moutarde:5]


---------------
Soyez malin, louez entre voisins !
n°2122423
Alex_94
Posté le 19-01-2012 à 21:49:28  profilanswer
 

SuppotDeSaTante a écrit :


donc il faut pas utiliser le fullpath mais le nom du classeur. [:le colonel moutarde:5]


 
Oui justement j'ai bien essayé mais ça ne fonctionne pas. De plus, il me semblait qu'il faut que les 2 classeurs soient dans le même dossier pour faire cela.  
 
J'essaye d'utiliser le chemin complet (avec le nom du fichier inclus) parce qu'ils ne sont pas au même endroit. Après, je m'embête avec ça parce que le nom du classeur externe (source de données qui sera mise à jour) changera au cours du temps et devra être entrer par l'utilisateur à ce moment.

n°2122431
SuppotDeSa​Tante
Aka dje69r
Posté le 19-01-2012 à 22:41:03  profilanswer
 

Quand ton fichier est ouvert dans Excel seul son nom compte.
Donc si tu veux l'ouvrir tu utilises le chemin, logique. Et si tu veux l'atteindre c'est avec son nom court.
Pour l'ouvrir : C:\test.xls
Pour l'atteindre dans Excel : WorkBooks("test.xls" )
 
Sinon donne le code entier ;)


---------------
Soyez malin, louez entre voisins !
n°2122437
Alex_94
Posté le 19-01-2012 à 23:15:08  profilanswer
 

Ok donc je laisse tomber l'idée du chemin.  
 
Reste que, je voudrais passer le nom du fichier dans une variable donc en l'occurence avoir un  
 

Code :
  1. Workbooks(FileName)  'Avec FileName = "test.xls"


 
au lieu de  
 

Code :
  1. Workbooks("test.xls" )


 
Ca marche bien quand les 2 fichiers sont au même endroit mais pas si ils ne sont pas dans le même dossier (en gros, sans chemin, Excel considère que c'est dans le même dossier et donc ne le trouve pas)

n°2122547
SuppotDeSa​Tante
Aka dje69r
Posté le 20-01-2012 à 11:25:37  profilanswer
 

Exemple, j'ai deux fichiers :
FichierSurC.xls qui est sur C:\
FichierSurD.xls qui est sur D:\
 
(oui je sais j'ai beaucoup d'imagination)
 
Avec une macro sur FichierSurC je vais ouvrir FichierSurD puis l'atteindre pour mettre à jour la cellule A1 :
 
En dur ca donne :

Code :
  1. Workbooks.Open "D:\FichierSurD.xls"
  2. Workbooks("FichierSurD.xls" ).Sheets("Feuil1" ).Cells(1, 1).Value = "Alex_94"


 
Deux solutions :
 
1) Tu passes en parametres dans deux variables le chemin et le nom du fichier.

Code :
  1. Sub Alex_94()
  2.    'Nos deux variables
  3.    Dim CheminFichier As String, NomFichier As String
  4.    
  5.    'On les alimente
  6.    CheminFichier = "D:\"
  7.    NomFichier = "FichierSurD.xls"
  8.    
  9.    'On ouvre le fichier avec le chemin et le document
  10.    Workbooks.Open CheminFichier & NomFichier
  11.    
  12.    'On va sur le fichier et on change la valeur de A1
  13.    Workbooks(NomFichier).Sheets("Feuil1" ).Cells(1, 1).Value = "Alex_94"
  14.  
  15. End Sub


 
2) Tu ne passes une seule variable, et a l'aide d'une petite routine on recupere le nom du fichier à l'interieur du fullpath

Code :
  1. Sub Alex_94()
  2.    'Une seule variable qui contient chemin et fichier
  3.    Dim CheminFichier As String
  4.    
  5.    'On les alimente
  6.    CheminFichier = "D:\FichierSurD.xls"
  7.    
  8.    
  9.    'On ouvre le fichier avec le chemin
  10.    Workbooks.Open CheminFichier
  11.    
  12. 'ici on va inverser l'ordre des caracteres de chaine pour trouver le premier "\" qui _
  13. nous indique le début du nom du fichier
  14.    'Declaration des variables
  15.    Dim InverseCheminFichier, EmplacementAntiSlash, NomFichier
  16.    
  17.    'on retourne l'ordre des caracteres
  18.    InverseCheminFichier = StrReverse(CheminFichier)
  19.    
  20.    'on cherche le premier \
  21.    EmplacementAntiSlash = InStr(1, InverseCheminFichier, "\", vbTextCompare)
  22.    
  23.    'S'il trouve un \
  24.    If EmplacementAntiSlash <> 0 Then
  25.        'on recupere le nom du fichier à l'interieur du fullpath
  26.        NomFichier = Right(CheminFichier, Len(CheminFichier) - i - 3)
  27.    End If
  28.    
  29.    'On va sur le fichier et on change la valeur de A1
  30.    Workbooks(NomFichier).Sheets("Feuil1" ).Cells(1, 1).Value = "Alex_94"
  31.  
  32. End Sub


 
Et aucun souci les deux fonctionnent bien chez moi, et partout d'ailleurs.


Message édité par SuppotDeSaTante le 20-01-2012 à 11:27:05

---------------
Soyez malin, louez entre voisins !
n°2122731
Alex_94
Posté le 22-01-2012 à 11:05:50  profilanswer
 

Magnifique, je te remercie dje69r ;-)

n°2122786
SuppotDeSa​Tante
Aka dje69r
Posté le 22-01-2012 à 22:53:38  profilanswer
 

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

  [VBA Excel] Problème chemin absolu 2 classeurs - 2 chemins différents

 

Sujets relatifs
Element aléatoire parmi différents types[VBA Excel] concatener nom de champ et variable
Problème d'arrondiProblème de lettrine (Internet Explorer vs Firefox)
problème affichage css sous différents navigateursProbleme Wamp//PATH_INFO
Séparer données cellule Excelpseudos frames et probleme
Plus de sujets relatifs à : [VBA Excel] Problème chemin absolu 2 classeurs - 2 chemins différents


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