Retour à la FAQ


Mais pourquoi ( <27) +2 ???

et la fonction Split

= Split(ActiveCell.Address, "$")(1)
Laurent peut nous expliquer ce que c'est ???

Pour obtenir la "lettre" de la colonne, il faut extraire soit le premier
caractère de l'adresse si la colonne est avant la colonne 27 (soit les
lettres A-Z), soit les deux premiers caractères si c'est une colonne
plus à droite (AA => IV = deux caractères).

ActiveCell.Address(0, 0) donne l'adresse avec des coordonnées
"relatives" (sans les $). (ActiveCell.Column < 27) renvoie True si la
condition colonne < 27 est vérifiée, False sinon. En ajoutant 2 à cette
valeur, le booléen True/False est tranformé en nombre: -1 si True, 0 si False.

Donc :

- si colonne < 27, (ActiveCell.Column < 27) + 2 = True + 2 = -1 + 2 = 1
et la fonction Left$ extrait le premier caractère (lettre unique, A à Z)

- si colonne > 26, (ActiveCell.Column < 27) + 2 = False + 2 = 0 + 2 = 2
et Left$ extrait les deux premiers caractères (colonne = 2 lettres, AA à IV)

Quant à la fonction Split, elle fait partie d'un lot d'une dizaine de
nouvelles fonctions de manipulations de chaînes de caractères apportée
par VBA 6 (Excel 2000) et exporte une chaîne comportant des caractères
séparateurs dans une variable tableau. Comme elle n'existe pas sous
Excel 97, je déconseillerais de l'utiliser sauf pour un usage perso.
Laurent

======================
Je n'avais jamais vu ce truc-là non plus.
Fonction de traitement de chaînes trouvée dans l'aide d'XL2000, inexistante
pour XL97( Split y était une propriété de fenêtres).
J'ai pas tout tou compris à l'écran d'aide :-(, mais j'ai à peu près compris le principe :

Si on fait Split("$A$BC$D", "$") ça enlève de la chaîne les $ et renvoie un tableau (A,BC,D).
De ce tableau, on prend l'item (1) (cf les item) et ça donne A l'item (2) renvoie BC etc...

ActiveCell.Address est $A$10
Split(ActiveCell.Address,"$") est donc (A,10)
dont l'item (1) est A

Je sais, c'est pas très technique comme explication, mais au moins, j'ai essayé :-)
Et si je me suis plantée, faut me corriger !
--
Gros bisous, Kenavo (et Miaou).
Catherine (et Sainte Zaza)

==========================
C'est bon, Catherine. Juste à ajouter qu'il y a un item 0 pour ce qui est
avant le premier délimiteur. Donc, rien pour $A$10. Voir exemple avec : ou,
ce que je n'ai pas fait dans mon exemple, avec une virgule dans le cas d'une
plage non contigues comme $AE$8,$AF$10:$AF$15.
--
----------------

Dans la doc :

Description

Renvoie un tableau de base zéro à une dimension contenant le nombre spécifié de sous-chaînes.

Syntaxe

Split(expression[, delimiter[, limit[, compare]]])

La syntaxe de la fonction Split comprend les arguments nommés suivants :

Élément Description
expression Expression de chaîne contenant des sous-chaînes et des
séparateurs. Si l'argument expression est une chaîne de longueur nulle (""),
la fonction Split renvoie un tableau vide, c'est-à-dire un tableau ne
comportant ni éléments, ni données.
delimiter Facultatif. Caractère de chaîne utilisé pour identifier les
limites de sous-chaîne. S'il est omis, le caractère espace (" ") est utilisé
comme séparateur par défaut. Si l'argument delimiter est une chaîne de
longueur nulle, un tableau à un élément contenant toute la chaîne expression est renvoyé.
limit Facultatif. Nombre de sous-chaînes à renvoyer; -1 indique que toutes les sous-chaînes sont renvoyées.
compare Facultatif. Valeur numérique indiquant le type de comparaison à
utiliser lors de l'évaluation des sous-chaînes. Reportez-vous à la section Valeurs.

Valeurs

L'argument compare prend les valeurs suivantes :

Constante Valeur Description
vbUseCompareOption -1 Effectue une comparaison à l'aide de la valeur de
l'instruction Option Compare.
vbBinaryCompare 0 Effectue une comparaison binaire.
vbTextCompare 1 Effectue une comparaison de texte.
vbDatabaseCompare 2 Microsoft Access seulement. Effectue une comparaison
basée sur des informations contenues dans votre base de données.

--------------------------------------
Avec $ en délimiteur, $AF$7 qui commence par $ donne AF avec
Split(ActiveCell.Address, "$")(1) et 7 avec Split(ActiveCell.Address,
"$")(2) - Le split (0) donnerait une chaîne vide (rien avant le 1er $).

Avec : en délimiteur, une sélection $AF$7:$AH$12 [qui ne commence pas par :
(donc index 0 pour le premier)] donne $AF$7 avec Split(Selection.Address,
":")(0) et $AH$12 avec Split(Selection.Address, ":")(1).
Qu'on peut ensuite respliter sur le $.
Eric Jeanne

 


[top]