XL 2016 Concatener particulier

  • Initiateur de la discussion Initiateur de la discussion piga25
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

piga25

XLDnaute Barbatruc
Bonjour,

Est-il possible dans une formule concatener, au lieu de répéter deux ou plusieurs fois la même chose (dans le résultat) d'indiquer le nombre de fois que cela est répété devant et si possible par formule.
Pour l'instant je n'ai rien trouvé.
Ex: RN AM AM, j'aimerai que cela indique RN 2AM

Le fichier exemple sera beaucoup plus parlant.

Par VBA je pense que cela soit possible. Mais pas encore assez doué pour y parvenir.

Cordialement
 

Pièces jointes

Bonjour piga25,

Cette fonction VBA est utilisée en A9:A14 :
Code:
Function Joindre$(P As Range, Q As Range)
Dim d As Object, i As Byte, a, b
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To 5
    If P(i) <> "" And Q(i) <> 0 Then d(P(i).Value) = d(P(i).Value) + 1
Next
If d.Count = 0 Then Exit Function
a = d.keys: b = d.items
For i = 0 To UBound(a)
    Joindre = Joindre & " " & IIf(b(i) = 1, "", b(i)) & a(i)
Next
Joindre = LTrim(Joindre)
End Function
Fichier joint.

A+
 

Pièces jointes

Bonsour®
Bonjour,

Est-il possible dans une formule concatener, au lieu de répéter deux ou plusieurs fois la même chose (dans le résultat) d'indiquer le nombre de fois que cela est répété devant et si possible par formule.
Pour l'instant je n'ai rien trouvé.
Ex: RN AM AM, j'aimerai que cela indique RN 2AM
Le fichier exemple sera beaucoup plus parlant.
Par VBA je pense que cela soit possible. Mais pas encore assez doué pour y parvenir.
Cordialement
😎Fonctions personnalisées , c'est parlant ?
VB:
Function RN(plage As Range)
Dim x As Integer
x = Application.CountIf(plage, "RN")
If x = 0 Then Exit Function
RN = IIf(x > 1, x, "") & "RN "
End Function

Function AM(plage As Range)
Dim x As Integer
x = Application.CountIf(plage, "AM")
If x = 0 Then Exit Function
AM = IIf(x > 1, x, "") & "AM "
End Function
🙄 le principe peut être étendu à d'autres abréviations

upload_2018-7-23_20-36-4.png
 
Dernière édition:
Bonsoir Modeste Geedee,

Pas mal également ta fonction. Ce n'est pas exactement la réponse que je recherche, mais elle va me servir pour un autre projet. Donc merci.
Celle de Job75, correspond exactement à mon attente.

Merci à vous deux et chapeau pour la rapidité des réponses.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Zéro Perdu
Réponses
12
Affichages
611
Réponses
31
Affichages
3 K
Retour