VBA: Fonctions de manipulation de la chaîne 'Chemin[classeur]Feuille'!AdresseRange

  • Initiateur de la discussion Initiateur de la discussion Guy_M
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Guy_M

XLDnaute Occasionnel
Bonjour,

Excel utilise souvent la syntaxe "'Chemin[classeur]Feuille'!AdresseRange" pour désigner des cellules. (par exemple PivotTable.SourceData).

Savez-vous s'il existe (en ligne) des procédures/fonctions permettant de manipuler simplement cette chaine ?

Par avance, je vous remercie de vos réponses

A bientôt
Guy
 
Re : VBA: Fonctions de manipulation de la chaîne 'Chemin[classeur]Feuille'!AdresseRan

Bonjour,

Il semble que cela n'existe pas. J'ai écrit 4 petites fonctions qui jouent ce rôle. L'idéal serait de disposer d'une classe "CheminCellule".

A tester, car je ne sais pas si c'est totalement débogué.
VB:
'CheminCellule est de la forme 'Chemin[classeur]Feuille'!AdresseRange, Chemin[classeur] et "'" sont facultatifs à remarquer qu'il y a 2 apostrophes "'"

Function CheminCheminCellule(CheminCellule As String) As String
If InStr(CheminCellule, "[") = 0 Then
    CheminCheminCellule = ""
    Exit Function
End If
CheminCheminCellule = Mid(CheminCellule, 2, InStr(CheminCellule, "[") - 1)
End Function

Function ClasseurCheminCellule(CheminCellule As String) As String
If InStr(CheminCellule, "[") = 0 Then
    ClasseurCheminCellule = ""
    Exit Function
End If
ClasseurCheminCellule = Mid(CheminCellule, InStr(1, CheminCellule, "[") + 1, InStr(1, CheminCellule, "]") - InStr(1, CheminCellule, "[") - 1)
End Function

Function FeuilleCheminCellule(CheminCellule As String) As String
Dim DebutNomFeuille As Long
Dim FinNomFeuille As Long
If InStr(CheminCellule, "'") = 0 Then
    DebutNomFeuille = InStr(CheminCellule, "]") + 1
    FinNomFeuille = InStr(CheminCellule, "!") - 1
Else
    DebutNomFeuille = IIf(InStr(CheminCellule, "]") = 0, 1, InStr(CheminCellule, "]")) + 1
    FinNomFeuille = InStr(2, CheminCellule, "'") - DebutNomFeuille
End If
FeuilleCheminCellule = Mid(CheminCellule, DebutNomFeuille, FinNomFeuille)
End Function

Function AdresseRangeCheminCellule(CheminCellule As String) As String
'Attention l'adresse est sous la forme L1C1
AdresseRangeCheminCellule = Right(CheminCellule, Len(CheminCellule) - InStr(CheminCellule, "!"))
End Function

A bientôt
Guy
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
849
Réponses
3
Affichages
851
Réponses
7
Affichages
959
Retour