Rapport de message :*
 

Re: répertoire non reconnu !

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