Ouvrir indifféremment un .xls ou un .xlsx (VBA)

migou

XLDnaute Nouveau
Bonjour,

je suis face à un curieux problème que je n'arrive pas à résoudre. Je vous explique.

Je dois depuis un classeur donné en ouvrir un autre pour effectuer des opérations dessus. Je souhaite que cet autre classeur soit au choix au format .xls ou .xlsx. Il se situe dans un sous-répertoire nommé "sources" par rapport au classeur sur lequel je travaille.

Voici la macro que j'ai rédigée :

Code:
Private Sub OuvertureFichiers() 
   
    ChDir ThisWorkbook.Path

    Set classeur_rmf = Workbooks.Open(ThisWorkbook.Path & "\Sources\Mon Fichier.xls*")
    
End sub

Jusqu'à présent je travaillais sur le serveur de ma boite et cela fonctionnait très bien, peu importe si je déplaçais le dossier de mon projet, il arrivait toujours à trouver le fichier.

Seulement je viens d'essayer de déplacer le projet sur le bureau et j'obtiens désormais une erreur (excel n'arrive pas à trouver Mon Fichier.xls*). De même quelque soit l'endroit où je positionne le projet sur le lecteur C. Pourtant le chemin renvoyé par ThisWorkbook.path est toujours bon.

Si j'enlève l'étoile cela fonctionne toujours mais il faut alors que mon classeur soit un .xls (logique). Je trouve ça curieux.

Je vous appelle à l'aide, merci par avance :D
 
Dernière édition:

Vorens

XLDnaute Occasionnel
Re : Ouvrir indifféremment un .xls ou un .xlsx (VBA)

Hello,

On peut imaginé un double test sur le type de fichier pour résoudre ton problème.

J'entend par la tu fait une
Code:
On Error Resume Next
au dessus de la ligne qui ouvre le classeur. si sa bug car tu essais d'ouvrir un fichier .xls tu passe à la ligne suivante ou tu tente d'ouvrir le .xlsx avec la même ligne en gros sa donne un truc du style.

Code:
Private Sub OuvertureFichiers()
   
    ChDir ThisWorkbook.Path
        On Error Resume Next
        Set classeur_rmf = Workbooks.Open(ThisWorkbook.Path & "\Sources\Mon Fichier.xls*")
        
        If Not classeur_rmf Is Nothing Then 'Control si le classeur a été ouvert précèdement
        
        Set classeur_rmf = Workbooks.Open(ThisWorkbook.Path & "\Sources\Mon Fichier.xlsx*")
        
        End If
End Sub

En espérant que sa répond à ton soucis

Meilleures salutations
 

job75

XLDnaute Barbatruc
Re : Ouvrir indifféremment un .xls ou un .xlsx (VBA)

Bonjour,

Où avez-vous vu qu'on peut utiliser des caractères génériques avec Workbooks.Open :confused:

Code:
Set classeur_rmf = Workbooks.Open(ThisWorkbook.Path & "\Sources\Mon Fichier")
ouvrira le 1er fichier nommé "Mon fichier" trouvé, quelle que soit l'extension.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 370
Messages
2 087 690
Membres
103 640
dernier inscrit
So pizza