Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Concatener particulier

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

  • Classeur1.xlsx
    21 KB · Affichages: 29

job75

XLDnaute Barbatruc
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

  • Classeur(1).xlsm
    34.6 KB · Affichages: 29

piga25

XLDnaute Barbatruc
Bonjour JOB75 et le forum,

Merci.
Pas encore tout compris dans le code, mais si je veux avoir bien les 7 jours de la semaine, j'ai changé :
For i = 1 To 5 en For i = 1 To 7

Toujours un plaisir de te lire. Merci
 

Modeste geedee

XLDnaute Barbatruc
Bonsour® 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

 
Dernière édition:

piga25

XLDnaute Barbatruc
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.
 

Discussions similaires

Réponses
31
Affichages
2 K
Réponses
12
Affichages
447
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…