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

XL 2010 Concatener des cellules identiques et separer par statut.

fredobogoss

XLDnaute Junior
Hello everyone !!

J'ai besoin d'aide sur un fichier existant que je suis entrain d adapter a mon projet . Ca fait quelques temps que j'essai mais je suis debutant en macro.

Je souhaite dans une nouvelle feuille
- CONCATENER uniquement les 2 ou 3 ou plus PRENOMS qui sont dans le meme numero de chambre. (de preference le prenom de la fille en premier et celui des garcons apres).


et les separer par statut (GOLD, PLATINIUM, AUTRES : tous les autres statut sauf gold et platinium.

je vous joint mon fichier qui permettra de mieux comprendre ou se trouve mon probleme.

Je vous remercie de votre aide par avance.
 

Pièces jointes

  • BD PUBLI.xlsm
    104.7 KB · Affichages: 42

chris

XLDnaute Barbatruc
Bonjour

Ton profil indique 2007 et ton titre 2010. Tu as quelle version ?

Faisable par PowerQuery si tu installes l'add on gratuit de Microsoft.

Mais je vois que Dranreb t'as aidé sur ce classeur et sa gigogne doit aussi résoudre cela...
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Ce n'est pas très clair tout ça. Sont-ce les feuilles GOLD, PLATINIUM et AUTRES qu'il faut garnir ?
Si oui, mettez un exemple du résultat attendu dans la feuille AUTRES par exemple. Parce que là, il y a déjà nom-prénom en A:B et je ne sais ce que vous voulez en F.
 

fredobogoss

XLDnaute Junior

Bonjour Dranreb,

j ai joins un exemple au fichier avec une petite note sur la derniere feuille,
si on prend le cas de la premiere feuille en faisant un filtre sur le statut GOLD je souhaite pouvoir exporter les prenoms des personnes par numero chambre sur la nouvelle feuille comme dans l exemple
jy arrive manuellement en le faisant avec la formule CONCATENER sur une grande liste ca marche pas toujours car il peut y avoir parfois 3 ou 4 prenoms par numero de chambre,
je reste disponible si tu as une autre question,

PS Dranreb tu m as deja aider sur plusieurs sujet et je t en remercie vraiment
est ce que tu fais des formations en VBA en ligne en cours prive si oui je serais interesse a prendre des cours avec toi,

merci bcp
 

Pièces jointes

  • BD PUBLI.xlsm
    106.7 KB · Affichages: 42

chris

XLDnaute Barbatruc
Bonjour à tous

Pour info, avec PowerQuery j'avais obtenu cela pour Autres (adaptable)
Mais l'addon fonctionne sur 2010 pas 2007
Et comme déjà dit une partie de ton projet utilisant Gigogne, il est sans doute aussi bien de continuer avec
 

Dranreb

XLDnaute Barbatruc
Cette procédure remplit la feuille AUTRES comme demandé :
VB:
Sub Conaténer2()
Dim TRés(1 To 1000, 1 To 3), Statut As SsGr, Chambre As SsGr, Détail, L As Long, TPn() As String, N As Long
For Each Statut In Gigogne(WshBase, 5, 4, Null, -3, 2)
   For Each Chambre In Statut.Co
      L = L + 1
      ReDim TPn(1 To Chambre.Count): N = 0
      For Each Détail In Chambre.Co: N = N + 1: TPn(N) = Détail(2): Next Détail
      TRés(L, 1) = Join(TPn, " & ")
      TRés(L, 2) = Chambre.Id
      TRés(L, 3) = Statut.Id
      Next Chambre, Statut
Sheet3.[F2].Resize(1000, 3).Value = TRés
End Sub
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Et celle ci, ou plutôt ces 2 là sortiraient à part les GOLD et PLATINIUM et seulement le reste dans AUTRES :
Code:
Sub Concaténer()
Dim AUTRES As Collection, GOLD As Collection
Set AUTRES = Gigogne(WshBase, 5, 4, Null, -3, 2)
Set GOLD = New Collection: GOLD.Add AUTRES("GOLD"), "GOLD"
Sortir GOLD, Sheet1: AUTRES.Remove "GOLD"
Set GOLD = New Collection: GOLD.Add AUTRES("PLATINIUM"), "PLATINIUM"
Sortir GOLD, Sheet2: AUTRES.Remove "PLATINIUM"
Sortir AUTRES, Sheet3
End Sub
Private Sub Sortir(ByVal ClnDonnées As Collection, Wsh As Worksheet)
Dim TRés(1 To 1000, 1 To 3), Statut As SsGr, Chambre As SsGr, Détail, L As Long, TPn() As String, N As Long
For Each Statut In ClnDonnées
   For Each Chambre In Statut.Co
      L = L + 1
      ReDim TPn(1 To Chambre.Count): N = 0
      For Each Détail In Chambre.Co: N = N + 1: TPn(N) = Détail(2): Next Détail
      TRés(L, 1) = Join(TPn, " & ")
      TRés(L, 2) = Chambre.Id
      TRés(L, 3) = Statut.Id
      Next Chambre, Statut
Wsh.[F2].Resize(1000, 3).Value = TRés
End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…