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

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
 

Guy_M

XLDnaute Occasionnel
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
 

Discussions similaires

Statistiques des forums

Discussions
312 088
Messages
2 085 199
Membres
102 816
dernier inscrit
bolivier