Probléme CHDIR version d' Excel

seagull

XLDnaute Nouveau
Bonjour,
Pour éviter la boite de dialogue de mise à jour des liens à l'ouverture d' un fichier, je l'ouvre à partir d'un autre (Classeur1.xls, qui ne sert qu'a cela d'ailleur) dans lequel, en Workbook_Open j'ai mis ceci:
Code:
Workbooks.Open "C:\mon dossier\mon sous dossier\Classeur2.xls", 0

Dans le classeur2, en Feuil1 B3, j'ai une formule du genre:
='C:\mon dossier\mon sous dossier\[classeurexistepas.xls]feuilleexistepas'!$A$1

j'ai affecté à un bouton dans cette feuille1 une macro qui fait ceci:
Code:
Private Sub CommandButton1_Click()
ThisWorkbook.Activate
    Sheets("feuil1").Select
    Range("b3").Select
    Selection.Interior.ColorIndex = 5
    ChDir "C:\mon dossier\mon sous dossier"
    ActiveWorkbook.ChangeLink Name:= _
      "C:\mon dossier\mon sous dossier\classeurexistepas.xls", NewName:= _
       "C:\mon dossier\mon sous dossier\.xls", Type:= _
        xlExcelLinks
End Sub

Cette macro a pour effet de lancer la fenêtre de choix du fichier en suivant le chemin de
Chdir (C:\mon dossier\mon sous dossier)afin de faire le lien avec ma formule.
mon souci est que cela fonctionnait trés bien sous Excel 2000 (titre de fenêtre = "Fichier non trouvé") et que ça ne fonctionne pas avec 2003 ou 2007 (titre de fenêtre = "Mettre à jour les valeurs:.xls").
c'est en fait le chdir qui ne fonctionne plus et me propose bibliothéque/documents.

si quelqu' un peut m' aider à retrouver un bon fonctionnement quelle que soit la version, je l'en remercie d'avance.
 

Pierrot93

XLDnaute Barbatruc
Re : Probléme CHDIR version d' Excel

Bonjour,

pas de souci chez moi avec "chdir" sous Excel 2003, mais peut être y a t il lieu de modififier le lecteur en cours si pas celui que tu veux utiliser :
Code:
ChDrive "C"
ChDir "C:\mon dossier\mon sous dossier"
bon après midi
@+
 

seagull

XLDnaute Nouveau
Re : Probléme CHDIR version d' Excel

Merci pour ton intervention, Pierrot
effectivement ça fonctionne avec Chdrive mais j'avais mis un lien bidon pour que l'exemple soit le plus clair possible et il se trouve que j' ai un chemin réseau qui est, non pas "C:" mais "//mon réseau" et là ça ne fonctionne plus.
 

tototiti2008

XLDnaute Barbatruc
Re : Probléme CHDIR version d' Excel

Bonjour seagull, Bonjour Pierrot :),

De mémoire, ChDrive n'a jamais fonctionné sur un lecteur réseau, à moins peut-être qu'il soit mappé sur une lettre du poste de travail (connecter un lecteur réseau)
Mais je peux me tromper :)
 

Pierrot93

XLDnaute Barbatruc
Re : Probléme CHDIR version d' Excel

Re,

@Pierrot : , oui, la remarque s'adressait à seagull, aucun moyen de deviner qu'il s'agissait d'un lecteur réseau au départ
pas de souci toto:), je l'avais bien compris ainsi... sinon pour un lecteur réseau, essaye de t'inspier de ceci seagull, foncionne sous 2003 mais ne sera plus opérationnel sur 2007 "FileSystemObject" n'étant plus un objet disponible :

Code:
Option Explicit
Sub test()
Dim fs As Object, d As Object
Set fs = CreateObject("Scripting.FileSystemObject")
For Each d In fs.Drives
    If d.ShareName Like "\\NomServeur\*" Then
        ChDrive (Split(d.RootFolder.Path, ":")(0))
        ChDir "\Dossier\SousDossier"
        Exit For
    End If
Next d
End Sub
 

seagull

XLDnaute Nouveau
Re : Probléme CHDIR version d' Excel

Merci à vous deux, je vais essayer la solution de Pierrot .
Et de ton coté, en local avec le chemin C: que tu as simulé, quel type de fenêtre tu ouvrais :
"Mettre à jour les valeurs" ou "fichier non trouvé" ou "ouvrir"...? car cette invit est déclenché par la formule qui contient des valeurs erronées.

Merci..
 

Pierrot93

XLDnaute Barbatruc
Re : Probléme CHDIR version d' Excel

Re,

Et de ton coté, en local avec le chemin C: que tu as simulé, quel type de fenêtre tu ouvrais :
"Mettre à jour les valeurs" ou "fichier non trouvé" ou "ouvrir"...? car cette invit est déclenché par la formule qui contient des valeurs erronées.

pas été jusqu'à là... me suis contenté de t'indiquer le changement de lecteur / répertoire courant... pas trop de matière pour tester... essaye peut être un :
Code:
Application.DisplayAlerts = False

A voir....
 

tototiti2008

XLDnaute Barbatruc
Re : Probléme CHDIR version d' Excel

Re,

Sinon, si tu as besoin de créer un lecteur, tu peux tenter un truc du genre

Code:
Sub test()
Dim V As String, z
    'Si la lettre X n'est pas utilisée !!!!
    Shell "subst x: ""\\Serveur\""", vbHide
    Do
    DoEvents
    V = Dir("x:\", vbVolume)
    Loop Until V <> ""
    ChDrive "x"
    ChDir "\Dossier\"
    'ton code
    z = Application.GetOpenFilename
    'suppression du lecteur virtuel à la fin
    Shell "subst x: /D"
End Sub

mais je ne suis pas sûr que ça corresponde vraiment ici...

mais ne sera plus opérationnel sur 2007 "FileSystemObject" n'étant plus un objet disponible

C'est FileSearch qui a disparu, pas FileSystemObject ;)
 

seagull

XLDnaute Nouveau
Re : Probléme CHDIR version d' Excel

Bonsoir,
N'étant pas parvenu à mes fins sur le sujet, j'ai changé de méthode pour importer des valeurs de mon fichier fermé vers mon fichier ouvert en utilisant ExecuteExcel4Macro .
tout va bien, aprés bien des recherches pour trouver les bonnes syntaxes comme par exemple sur cette ligne :
Range((ThisWorkbook.Sheets("Feuil1").Cells(Z, 1).Value)).Value = ExecuteExcel4Macro("'P:\macros\Vba\montage moules\5.11.2012\[" & (ThisWorkbook.Sheets("prévisions").Cells(10, 2).Value) & "]" & Cells(10, 4).Value & "'!" & (ThisWorkbook.Sheets("Feuil1").Cells(Z, 5).Value) & "")
sauf qu'un autre probléme viens se greffer.
J'ai besoin d'importer la liste des noms de feuilles de mon classeur fermé dans des cellules de mon classeur ouvert et pour cela j'ai fait ceci (je n'ai rien inventé...)
Code:
Private Sub CommandButton1_Click()

Dim XlConnect As Object, XlCatalog As Object
Dim Fichier As String, Resultat As String
Dim Feuille As Object
Dim objCell As Range

Fichier = "h:\monfichierferme.xls"

Set XlConnect = CreateObject("ADODB.Connection")
Set XlCatalog = CreateObject("ADOX.Catalog")

XlConnect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Fichier & _
";Extended Properties=Excel 8.0;"
Set XlCatalog.ActiveConnection = XlConnect

Cells(1, 1).Select

'je ne récupére que les noms qui se terminent par "$"

For Each Feuille In XlCatalog.Tables
If UCase(Right(Feuille.Name, 1)) = "$" Then
ActiveCell = Feuille.Name


'et suprime le "$"

For Each objCell In Selection
    If Right(objCell.Value, 1) = "$" Then
        objCell.Value = Left(objCell.Value, Len(objCell.Value) - 1)
    End If
Next objCell

ActiveCell.Offset(1, 0).Select

End If

Next

End Sub
ce code fonctionne parfaitement sous excel 2003 ou 2010 mais bug sous 2000 avec un message d'erreur:
"projet ou bibliothéque introuvable" et surligne de cette façon la ligne

If UCase(Right(Feuille.Name, 1)) = "$" Then

que me faut-il modifier pour que cela fonctionne svp ?
s' agit-il de Microsoft office 11.0 object library coché d'un coté et Microsoft office 9.0 object library de l'autre ?:confused:
puis-je contourner le pobléme ?

Un grand merci pour vos réponses :eek:
 

tototiti2008

XLDnaute Barbatruc
Re : Probléme CHDIR version d' Excel

Bonjour seagull, Bonjour à tous,

Quand les fonctions de base de VBA (Date, Right, Left, etc...) ne fonctionnent plus, c'est en général un problème de référence
Va dans l'éditeur VBA, Menu Outils - Références
Il y a surement une référence cochée indiquée "MANQUANT", qu'il faut décocher
Après ça, si ça ne marche toujours pas, il faudra peut-être cocher la référence équivalente (mais version différente) à celle qui était manquante
 

Discussions similaires

Statistiques des forums

Discussions
312 330
Messages
2 087 342
Membres
103 524
dernier inscrit
Smile1813