Bonjour,
Pour qu'elle fonctionne il faut autoriser excel à exécuter les macros.
Dans excel 2003 (ou moins) menu 'outils / options...', onglet 'sécurité'. En bas à droite bouton 'sécurité des macros...' il faut mettre 'niveau de sécurité moyen'.
Ensuite à l'ouverture du fichier joint cliquer sur 'activer les macros'
Je l'ai légèrement modifiée pour permettre à l'utilisateur de choisir le séparateur.
La syntaxe est maintenant
=ConcatPlage(A1:A6;";") si on désire séparer les mots par un ;
http://www.cijoint.fr/cjlink.php?file=cj200802/cij1536612915345.xls
Enregistrer le classeur sous le nom ConcatPlage.xls par exemple. Il faut qu'il soit ouvert pour pouvoir utiliser la fonction personnalisée dans un autre classeur, ou bien que le code soit recopié dans un module dans l'autre classeur.
Si la fonction est appelée d'un autre classeur il faut ajouter le nom du classeur devant pour l'appeler et ça devient :
=ConcatPlage.xls!ConcatPlage(A1:A6;";")
Pour conserver le résultat sans avoir besoin de la fonction d'origine (cad d'ouvrir toujours le classeur contenant la fonction) il faut copier la cellule puis faire collage spécial en cochant 'valeur'.
J'espère que ça va aller maintenant...
eric
Function ConcatPlage(plage As Variant, separateur As String) As String
Dim c As Range
Dim rep As String
For Each c In plage
rep = rep & separateur & c.Value
Next c
ConcatPlage = Mid(rep, Len(separateur) + 1)
End Function