XL 2010 Concatener

mic6259

XLDnaute Occasionnel
Bonjour
D'après la pièce jointe, j'aimerais Concatener dans la cellule L16 Les cellule A14 a BJ14 et avoir le même nombre de 0
Par exemple 06,00,00,17 etc... .
Pourriez-vous m'expliquer la méthode pour que je puisse le faire sur les grilles suivantes.

Merci pour votre aide
 

Pièces jointes

  • 1.xlsx
    16.9 KB · Affichages: 18

st007

XLDnaute Barbatruc
Tu peux utiliser un pack de fonction supplémentaire à installer ( ou tu retrouveras une fonction joindre, avec un séparateur à définir)
Ou en v18
VB:
=L18&$U$18&M18&$U$18&N18&$U$18&O18&$U$18&P18&$U$18&Q18&$U$18&Q18&$U$18&R18&$U$18&S18&$U$18&T18
avec une virgule en U18
 

Pièces jointes

  • pack-de-fonctions-xlp.zip
    190 KB · Affichages: 5

mic6259

XLDnaute Occasionnel
Bonjour st007
Merci beaucoup pour le pack, je le conserve précieusement, il pourrait m'être utile.
J'ai repris ton ta première réponse et Jai tout simplement concatener de K14 a S14 et çà fonctionne.
Je considère donc la question comme résolu
Cordialement
 

soan

XLDnaute Barbatruc
Inactif
Bonjour mic6259, st007,

je te retourne ton fichier Excel (converti en .xlsm) ; les 8 formules proposées sont toutes basées sur ma fonction personnalisée JNE() : Joindre Nombres Entiers ; seuls les paramètres sont différents.

en M16 : =JNE(", ";0;A2:I4)
en M17 : =JNE(", ";1;A2:I4)

en M19 : =JNE(", ";0;A2:I4;"00")
en M20 : =JNE(", ";1;A2:I4;"00")

en M24 : =JNE(", ";0;A2:I4;;1)
en M25 : =JNE(", ";1;A2:I4;;1)

en M27 : =JNE(", ";0;A2:I4;"00";1)
en M28 : =JNE(", ";1;A2:I4;"00";1)

d'où ces résultats :

Résultats des 8 formules.jpg


code VBA :

VB:
Option Explicit

'JNE : Joindre Nombres Entiers

'5 paramètres (les 2 derniers sont optionnels) :
'  sép : séparateur ; par exemple ", " (virgule espace)
'  ivd : ignorer vide ; 0 = non ; 1 = oui
'  plg : plage ; par exemple A2:I4
'  fmt : format de nombre d'une donnée ; ex : "00"
'  slc : sens de lecture en colonne ; 0 = non ; 1 = oui

Function JNE(sép$, ivd As Byte, plg As Range, Optional fmt$, Optional slc As Byte) As String
  Dim chn$, v0&, s0$, s1$, s2$, l1&, l2&, c1%, c2%, i&, j%
  s0 = plg.Address(0, 0): s1 = Split(s0, ":")(0): s2 = Split(s0, ":")(1)
  l1 = Range(s1).Row: c1 = Range(s1).Column: l2 = Range(s2).Row: c2 = Range(s2).Column
  If slc = 0 Then
    For i = l1 To l2
      For j = c1 To c2
        v0 = Val(Cells(i, j))
        If fmt = "" Then s0 = CStr(v0) Else s0 = Format(v0, fmt)
        If v0 <> 0 Or (v0 = 0 And ivd = 0) Then chn = chn & s0 & sép
      Next j
    Next i
  Else
    For j = c1 To c2
      For i = l1 To l2
        v0 = Val(Cells(i, j))
        If fmt = "" Then s0 = CStr(v0) Else s0 = Format(v0, fmt)
        If v0 <> 0 Or (v0 = 0 And ivd = 0) Then chn = chn & s0 & sép
      Next i
    Next j
  End If
  JNE = Left$(chn, Len(chn) - Len(sép))
End Function

si besoin, tu peux demander une adaptation.
merci de me donner ton avis. :)

soan
 

Pièces jointes

  • Exo mic6259.xlsm
    25.4 KB · Affichages: 4

TooFatBoy

XLDnaute Barbatruc
Re,

Une autre proposition de fonction (légèrement moins paramétrable...😁) :
VB:
Function ConcatGrille(MesCellules As Range) As String
'
Dim c As Range
Dim MonTexte As String

    For Each c In MesCellules
        MonTexte = MonTexte & Right("00" & c.Value, 2) & ","
    Next c

    ConcatGrille = Left(MonTexte, Len(MonTexte) - 1)

End Function

Exemple d'utilisation : écrire en L15 la formule =ConcatGrille(A2:I4)
 

Pièces jointes

  • 1_Marcel32-v1.xlsm
    20.8 KB · Affichages: 5
Dernière édition:

Discussions similaires

Réponses
12
Affichages
288

Statistiques des forums

Discussions
299 706
Messages
1 978 622
Membres
206 310
dernier inscrit
koumb