Titre du sujet : Re: répertoire non reconnu ! par Guy le 10/11/2009 15:09:33
Bonjour coline54,
Je ne vois pas bien à quoi sert tout ça, pas bien du tout.
Mais, bon, pour ce qui est du code l'erreur signalée provient de ce que l'instruction :
AdrCel = RangeSelection
affecte une chaîne vide ("") à AdrCel puisque RangeSelection est une variable de type Variant non déclarée vide.
Cette chaîne vide est ensuite traitée avec :
VPath = Mid(AdrCel, 3, Pos - 2)
et comme AdrCel contient zéro caractère Paff! Une erreur.
Quelques corrections :
- Forcer la déclaration obligatoire des variables. Menu Outils/Options..., Onglet Éditeur, cocher la case "Déclaration des variables obligatoire"
- Cette déclaration obligatoire ne changera rien au module Module1 en cours. Cette directive ne sera inscrite qu'à la création d'un autre module. Donc inscrire en première ligne du module Module1Option Explicit.
- Une fois cette directive inscrite modifier RangeSelection, qui ne signifie absolument rien, par Selection.Formula comme dans le code suivant :
-
Option Explicit
Sub AtteindreCellule()
' Touche de raccourci du clavier: Ctrl+Maj+Q
'
Dim AdrCel As String, Wbk As String, Sht As String, Cel As String
Dim VPath As String, Pos As Integer, Pos2 As Integer
AdrCel = Selection.Formula ' La formule porte le chemin complet de la liaison.
' AdrCel = RangeSelection <- Est un Variant vide, l'affecter à une chaîne (String)
' entraîne AdrCel = "", chaîne vide portant zéro caractère.
'AdrCel = cellule comportant un lien
Pos = InStrRev(AdrCel, "]")
Pos2 = InStrRev(AdrCel, "'!")
' Déterminer le classeur
VPath = Mid(AdrCel, 3, Pos - 2)
Wbk = Replace(VPath, "[", "")
Wbk = Replace(Wbk, "]", "")
' Déterminer la feuille
Sht = Mid(AdrCel, Pos + 1, Pos2 - Pos - 1)
' Déterminer la cellule
Cel = Mid(AdrCel, Pos2 + 2, 10)
Workbooks.Open Wbk
ActiveWorkbook.Sheets(Sht).Select
ActiveSheet.Range(Cel).Select
End Sub
- Ensuite il faudra prévoir un gestionnaire d'erreur car si la cellule sélectionnée est vide ou ne porte pas la liaison attendue une erreur surviendra encore.
Cordialement,
Guy
|