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

comment concatener via VBA une liste Variable

  • Initiateur de la discussion Initiateur de la discussion pasquetp
  • 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 !

pasquetp

XLDnaute Occasionnel
Bonjour,

je tente de concatener une liste qui est variable

l'objectif est que cela donne cela: %2B suivi du nom en a1 puis %2B de nouveau suivi du nom en a2 et ainsi de suite jusqu'au bout.

je dois donc passer par une macro et j'ai tenté celle ci:




sub essaimacro()

Dim i As Integer


Application.ScreenUpdating = False

finnn = Range("a65536").End(xlUp).Row



For i = 1 To finnn Step 1

Cells(i, 1).Select

Range("b1") = "%2B" & ActiveCell & "%2B" & ActiveCell
Range("b1") = Range("b1") & "%2B" & ActiveCell.Offset(1, 0)
Next i

Application.ScreenUpdating = True
End Sub

ca n'a pas marché

je vous ai mis en pièce jointe un fichier exemple de ce que je recherche

Merci à tous
 

Pièces jointes

Re : comment concatener via VBA une liste Variable

Bonjour pasquetp, Bonjour le forum,

Tu peux essayer ceci :
Code:
Sub essaimacro()
Dim i As Integer
Dim St As String
Application.ScreenUpdating = False
finnn = Range("a65536").End(xlUp).Row
For i = 1 To finnn
    If Range("A" & i) <> "" Then St = St & "%2B" & Range("A" & i)
Next i
Range("B1") = St
End Sub
A+ Jack2
 
Re : comment concatener via VBA une liste Variable

Bonjour pasquetp,

Soit le code dans module1:
VB:
Sub ConcatListe()
  With Sheets("Feuil1")
    .[b1] = Concat(.Range(.[a1], .Cells(.Rows.Count, "a").End(xlUp)), "%2B")
  End With
End Sub

Function Concat$(x As Range, sep$)
Dim t, i
  With Sheets("Feuil1")
    t = x.Value
  End With
  Concat = sep
  For i = 1 To UBound(t)
    Concat = Concat & t(i, 1) & sep
  Next i
End Function

Deux méthodes à disposition:
soit vous saisissez la formule suivante dans ca cellule B1:
Code:
=concat(A1:A3;"%2B")

soit vous exécutez la macro ConcatListe depuis module1
 
Dernière édition:
Re : comment concatener via VBA une liste Variable

Bonjour à tous.


Quelques autres bricoles.



  • Une procédure (dans le module de feuille de l'onglet concerné)
VB:
Sub toto()
Dim n&, t$
  With [A1]
    For n = 0 To .Offset(Rows.Count - .Row).End(xlUp).Row - .Row
      If Not IsEmpty(.Offset(n).Value) Then t = t & .Offset(n).Value & "%2B"
    Next
    If t <> "" Then t = "%2" & t
    .Offset(, 1).Value = t
  End With
End Sub

  • Une fonction (dans un module standard quelconque)
VB:
Function tata$(Cel As Range, prefX$, suffX$)
Dim n&
  Application.Volatile
  With Cel
    For n = 0 To .Offset(Rows.Count - .Row).End(xlUp).Row - .Row
      If Not IsEmpty(.Offset(n).Value) Then tata = tata & .Offset(n).Value & suffX
    Next
    If tata <> "" Then tata = prefX & tata
  End With
End Function

  • Une autre fonction (dans un module standard quelconque)
VB:
Function tutu$(Plg As Range, prefX$, suffX$)
Dim Cel As Range
  For Each Cel In Plg.Cells
    If Not IsEmpty(Cel.Value) Then tutu = tutu & Cel.Value & suffX
  Next
  If tutu <> "" Then tutu = prefX & tutu
End Function

  • Une autre fonction (dans un module standard quelconque)
VB:
Function titi$(Plg As Range, prefX$, suffX$)
Dim i&, j&, p
  p = Plg.Value
  If VarType(p) > vbArray Then
    For i = 1 To UBound(p): For j = 1 To UBound(p, 2)
      If Not IsEmpty(p(i, j)) Then titi = titi & p(i, j) & suffX
    Next j, i
  Else
    If p <> "" Then titi = p & suffX
  End If
  If titi <> "" Then titi = prefX & titi
End Function
Voir le classeur joint pour le paramétrage des fonctions.​


Bonne journée.


ℝOGER2327
#7505


Lundi 9 Phalle 141 (Saint Godemiché, économe - fête Suprême Quarte)
2 Fructidor An CCXXII, 1,0886h - millet
2014-W34-2T02:36:46Z
 

Pièces jointes

- 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

Réponses
5
Affichages
847
Réponses
11
Affichages
369
Réponses
2
Affichages
496
Réponses
10
Affichages
760
  • Question Question
Réponses
6
Affichages
751
Réponses
2
Affichages
739
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…