VBA - Raccourcir chemin vers classeur

Bonjour,

Je sèche devant un problème sans doute fort simple, mais dont je n'arrive pas à trouver la solution :

Je cherche à faire des recherches dans un autre classeur, qui se situe à une adresse du genre :

D:\Utilisateur\Documents\Dossier\Sous-dossier1\Sous-dossier2\Sous-dossier3\Fichier.xlsx

Et qui possède bien sûr plusieurs onglets.

D'où mes questions :

Est-il possible de définir un raccourci à l'adresse du classeur ?

Comment utiliser ce raccourci dans une fonction vba ? (pour info, si nécessaire, je souhaite utiliser la fonction SumIfs, qui irait chercher dans ce classeur "source" les valeurs correspondant aux variables de mon classeur ouvert)...

Je ne sais pas si je suis clair, n'hésitez pas à me questionner...

Bonsoir Totor, bonsoir le forum,

Pas sûr d'avoir bien compris ton problème... Pourquoi ne pas utiliser une variable de type Workbook ? Ensuite tu utilises la variable...

Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Set CS = Workbooks.open(D:\Utilisateur\Documents\Dossier\Sous-dossier1\Sous-dossier2\Sous-dossier3\Fichier.xlsx)

à partir de là, tu fais référence à ce classeur juste avec CS.

Par exmple :

CS.Sheets("Feuil1").Select

CS.Close

etc...

Bonjour ThauThème,

Merci pour ta réponse.

En cherchant à droite et à gauche, j'essayais de partir dans cette direction, mais je m'emmêlais les pinceaux dans la syntaxe.

Quand on est sûr de la réponse, c'est plus facile.

Mais maintenant, question complémentaire :

Mon classeur source est lui-même assez lourd, et avec pas mal de liens/formules. Avec ta proposition, quand j'exécute la macro, Excel ouvre ce classeur source, ce qui prend une bonne dizaine de secondes (et qui ralentit considérablement l'exercice). Comme j'ai une cinquantaine de classeurs sur lesquels appliquer la macro, je souhaiterais pouvoir l'exécuter une fois le classeur source ouvert ; or, je ne réussis pas à définir de variable Workbook pour un classeur ouvert différent du classeur actif...

Bonjour Totor, bonjour le forum,

Quand je travaille avec plusieurs classeurs qui se trouvent dans le même dossier, j'utilise le code ci-dessous que je place dans le classeur Destination :

Sub Macro1()

Dim CD As Workbook 'déclare la variable CD (Classeur Destination)

Dim CH As String 'déclare la variable CH (CHemin d'accès)

Dim OD As Object 'déclare la variable OD (Onglet Destination)

Dim CS As Workbook 'déclare la variable CS (Classeur Source)

Dim OS As Object 'déclare la variable OS (Onglet Source)

Set CD = ThisWorkbook 'définit le classeur destination CD

CH = CD.Path & "/" 'définit le chemin d'accès CH

Set OD = CD.Sheets("Feuil1") 'définit l'onglet destination OD

On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)

Set CS = Workbooks("Mon_Classeur_Source.xlsx") 'définit le classeur source (génère une erreur si le classeur est fermé)

If Err <> 0 Then 'condition : si une erreur a été générée

Err.Clear 'suprime l'erreur

Workbooks.Open (CH & "Mon_Classeur_Source.xlsx") 'ouvre le classeur source

Set CS = ActiveWorkbook 'définit le classeur source

End If 'fin de la condition

On Error GoTo 0 'annule la gestion des erreurs

Set OS = CS.Sheets("Feuil1") 'définit l'onglet source

'travail...

OS.Range("A1").Copy OD.Range("A1") 'pour l'exemple

'fin de travail...

CS.Close SaveChanges:=False 'ferme le classeur source CS

End Sub

Merci pour cette réponse !

Je venais justement pour prévenir que j'avais trouvé la solution, à savoir que pour définir la variable quand le classeur est ouvert, il suffit d'indiquer son nom, et non pas son chemin d'accès...

Bon, maintenant, c'est mon SumIfs qui ne fonctionne pas, mais je devrais finir par m'en sortir.

Merci encore de ton aide et du temps passé.

Rechercher des sujets similaires à "vba raccourcir chemin classeur"