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.
 

seagull

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

Bonjour,
Merci à vous, au final je suis parvenu, avec votre aide:p, à ce résultat qui fonctionne dans tous les cas de figure.
reste un cas particulier à gérer qui est le suivant:
quand je lance ma macro fichier fermé tout est ok et j'ai bien la liste des feuilles visibles avec leur nom propre par contre si d'aventure le fichier se trouve être ouvert alors viennent aussi s'ajouter les feuilles cachées(en hidden), ce que je ne souhaite pas:mad:.
Code:
Private Sub CommandButton1_Click()
Dim XlConnect As Object, XlCatalog As Object
Dim Fichier As String, Resultat As String
Dim Feuille As Object


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 teste si le nom de chaque feuille se termine par $ ou par $' et si oui l'importe dans ma ellule
For Each Feuille In XlCatalog.Tables
If UCase(Right(Feuille.Name, 1)) = "$" Or UCase(Right(Feuille.Name, 2)) = "$'" Then
ActiveCell.Value = nom
ActiveCell = Feuille.Name

'je reprend chaque valeur et si elle se termine par $ je suprime 1 caractére à la fin
'si elle se termine par $' je suprime 2 caractéres à la fin
Dim objCell As Range

For Each objCell In Selection

    If Right(objCell.Value, 1) = "$" Then
        objCell.Value = Left(objCell.Value, Len(objCell.Value) - 1)
    End If
    If Right(objCell.Value, 2) = "$'" Then
        objCell.Value = Left(objCell.Value, Len(objCell.Value) - 2)
    End If
    
Next objCell

ActiveCell.Offset(1, 0).Select

End If

Next

End Sub
Merci encore......:rolleyes:
 

Discussions similaires

Statistiques des forums

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