XL 2013 Fonction avec range en entrée et range modifiée en sortie

massepi

XLDnaute Nouveau
Bonjour, je vais essayer de décrire mon pb clairement...
J'ai une fonction format_nom_prenom qui formate une chaine en remplaçant les caractères accentués, tirets, espace,... Cette fonction reçoit une string en entrée et retourne une string. Jusque là pas de soucis.
Mon pb est que j'aimerai avoir l'équivalent mais avec un range en entrée et un range en sortie. Une sorte de format_nom_prenom_range(range_entree as range) as range
Dans mon cas de figure, le range est juste une plage d'une seule colonne et donc de plusieurs lignes.
Et donc j'ai essayé d'appeler pour chaque cellule de range_entree ma fonction de formatage de chaîne format_nom_prenom. Voici mon code :
VB:
Function Format_nom_prenom(chaine As Variant)
'remplacement des caractères accentués
Dim accents, sans_accents, chaine_sortie As String
Dim pos As Long
Dim i As Integer
accents = "ÀÁÂÃÄÅÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåèéêëìíîïðñòóôõöùúûüýÿçÇ-"
sans_accents = "AAAAAAEEEEIIIINOOOOOUUUUYaaaaaaeeeeiiiionooooouuuuyycC "

chaine_sortie = chaine

For i = 1 To Len(chaine)
    pos = InStr(1, accents, Mid(chaine, i, 1), 0)
    If pos Then Mid(chaine_sortie, i, 1) = Mid(sans_accents, pos, 1)
Next i
Format_nom_prenom = UCase(Replace(chaine_sortie, " ", vbNullString))
End Function

Function Format_nom_prenom_range(range_entree As Range)
Dim range_sortie As Range
Dim accents, sans_accents As String
Dim pos As Long
Dim i, c, l As Integer
Dim nb_lignes As Integer

Dim cellule As Range
Dim val_avant, val_apres As String

accents = "ÀÁÂÃÄÅÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåèéêëìíîïðñòóôõöùúûüýÿçÇ-"
sans_accents = "AAAAAAEEEEIIIINOOOOOUUUUYaaaaaaeeeeiiiionooooouuuuyycC "

nb_lignes = range_entree.Rows.Count
For Each cellule In range_entree
    l = cellule.Row
    c = cellule.Column
    val_avant = cellule.Value
    val_apres = Format_nom_prenom(val_avant)
    Cells(l, c) = val_apres
Next cellule
range_sortie = range_entree
Format_nom_prenom_range = range_sortie

End Function

mais j'ai une erreur #VALEUR et la modif de la valeur de la cellule avec Cells(l,c) = val_apres ne se fait pas.
J'ai cru comprendre qu'en effet on ne pouvait pas modifier la valeur d'une cellule directement dans une fonction, mais du coup, comment faire pour modifier les cellules du range d'entrée et récupérer le range avec les valeurs modifiées en sortie...

Merci d'avance
 

Discussions similaires

Réponses
12
Affichages
247

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 116
dernier inscrit
kutobi87