[déplacé VB.NET -> VBA] Excel VBA: Fonction et utilisation du Split

JeanFrancoisPain Messages postés 1 Date d'inscription vendredi 28 août 2009 Statut Membre Dernière intervention 28 août 2009 - 28 août 2009 à 19:19
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 - 31 août 2009 à 14:13
Salut à tous,

Je cherche à faire une fonction.

Je rentrerai seulement une cellule en paramètre et toutes mes cellules ont la meme forme:

"XXX-XXX-888" mais le texte entre les "-" n'est pas toujours de meme longueur.

Je souhaite seulement selectionner la partie de mon String placée derriere le dernier tiret: "888" dans l'exemple.

J'ai pensé à ca:


Public Function Test (ByVal maCellule As String) As Variant

Dim temp As Variant

temp = Split(maCelulle, "-")

test = temp(3)

End Function


Mais ca marche pas...

Merci beaucoup de votre aide.
A voir également:

3 réponses

c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
29 août 2009 à 01:57
bonjour

A essayer

Function test()
longueurtotale = Len(Range("a1"))
Position = InStrRev(Range("a1"), "-", longueurtotale, vbTextCompare)
texterecherche = Mid(Range("a1"), Position + 1, longueurtotale - Position)
End Function

bonne journée
0
baboube Messages postés 1 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 29 août 2009
29 août 2009 à 10:17
bjr j'ai conçu une petite application en vba excel .est ce ke quelqu'un pourrait m'aider pour faire les calcul au niveau de la facturation
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
31 août 2009 à 14:13
Bonjour,

En réponse à JeanFrancoisPain

Dim Temp as String
Temp = Split(macellule,"-")(2)

La fonction Split renvoie un tableau de base 0, ce qui fait que tu avais une erreur, l'indice 3 n'existant pas.

Petit conseil, limites au maximum le type Variant, consommateur de temps et d'espace mémoire, dans ton cas tu pouvais écrire:

Dim Temp(2) as String

Calade
0
Rejoignez-nous