répertoire non reconnu !
#1
Débutant XLPages

Inscription: 09/11/2009

Messages: 2

Système d'exploitation:
PC
Version Excel utilisée:
2003
Posté le : 10-11-2009 12h18
Bonjour à toutes et à tous,


Le problème qui me préoccupe depuis quelque temps déjà intéresse un fichier comportant des liaisons.

exemple :

Soit une cellule comportant un lien. On la sélectionne et au moyen d'une macro-commande on ouvre le fichier comportant le lien et la cellule dépendante est sélectionnée. Si cette cellule est elle aussi dépendante d'un autre fichier, la macro-commande relancée ouvre le fichier et la cellule liée est sélectionnée.

Pour cette manipulation je dispose d'une marco-commande utilisant les fonctions excel, elle fonctionne. En VBA auquel je suis peu féru c'est la cata.

L'exemple suivant ne fonctionne pas, pourquoi ? Erreur d'exécution '5': Argument ou appel de procédure incorrecte à la ligne "VPath = Mid(AdrCel, 3, Pos - 2)

 
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 = RangeSelection
  'AdrCel = cellule comportant un lien
  Pos = InStrRev(AdrCel, "]")
  Pos2 = InStrRev(AdrCel, "'!")
  ' D?rminer le classeur
  VPath = Mid(AdrCel, 3, Pos - 2)
  Wbk = Replace(VPath, "[", "")
  Wbk = Replace(Wbk, "]", "")
  ' D?rminer la feuille
  Sht = Mid(AdrCel, Pos + 1, Pos2 - Pos - 1)
  ' D?rminer la cellule
  Cel = Mid(AdrCel, Pos2 + 2, 10)Workbooks.Open Wbk
  ActiveWorkbook.Sheets(Sht).Select
  ActiveSheet.Range(Cel).Select

End Sub
 

Je joins un dossier comportant les macros et les fichiers permettant de comprendre.

D'avance Merci



Pièce jointe:
zip répertoire.zip   [ Taille: 23.81 Ko - Téléchargements: 416 ]
Hors Ligne
Rapport   Haut 

Re: répertoire non reconnu !
#2
Accro XLPages

Inscription: 09/01/2008
De Montréal, Québec

Messages: 463

Système d'exploitation:
PC
Version Excel utilisée:
97 à 2016
Posté le : 10-11-2009 15h09
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


Hors Ligne
Rapport   Haut 

Re: répertoire non reconnu !
#3
Débutant XLPages

Inscription: 09/11/2009

Messages: 2

Système d'exploitation:
PC
Version Excel utilisée:
2003
Posté le : 10-11-2009 18h19

Merci à vous, Guy pour votre réponse expresse bien détaillée.

A quoi sert cette commande ? Simplement à se contrôler. Peu représentatif dans le dossier d'exemple joint mais vraiment essentiel lorsque le document remis à une entreprise par exemple comporte de nombreuses pages et qu'elle vous interroge sur la validité d'une quantité particulière.

Le hic, comme vous l'avez justement dit, si tous les documents sont ouverts ça ne fonctionne plus en VBA contrairement avec la commande établie avec les bonnes vieilles fonctions xl.

Quant à écrire un gestionnaire d'erreur ça dépasse mon entendement. - en fait je me suis déjà fait aidé pour les quelques lignes écrites sous VBA.

De plus sur le dernier fichier lié, positionné sur une cellule correspondant à une somme en général la même commande sous xl sélectionne toutes les cellules dépendantes.

En VBA où placer ActiveCell.FormulaR1C1

Vous voyez ça patine !

Cordialement

Coline54 [qui est en fait un vieil adolescent peu féru de VBA]
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes