XL 2013 Créer une feuille de données uniques (par ligne) à partir d'un export Excel avec plusieurs données dans une cellule

Elnono51

XLDnaute Nouveau
Bonjour à vous, les "cracs d'Excel",
Je suis débutant dans Excel et je souhaiterai créer, à l'aide d'une macro sous Excel 2013, une feuille de données en séparant les données d'une cellule d'une autre feuille du classeur.
J'ai dans la feuille Export les données de la cellule participant sous cette forme : X00000 - NOM PRENOM - EQUIPE; X00001 - NOM2 PRENOM2 - EQUIPE2... et je voudrai que ces données soient séparées dans la feuille Résultat dans trois colonnes avec une ligne par participant.
Ci-dessous un extrait des lignes 1 et 2 de la feuille Export concernant la réunion 1
NuméroTitreTypeParticipantsCommentaires
2020REU112450Reu 11/4h sécuJ45684 - TOTO CUCUGNO - AGENCE A; A45678 - MARCEL PROUST - AGENCE 5; CN586X - JEAN-CHRISTOPHE MAC-ENRO - MINISTERE 689/TREiuhqefpuhp qIEUEHFPIIUHQEF PUHQEPFUHVxdhsd rhsdr
Et un extrait de la feuille Résultat pour cette même réunion
NuméroTitreTypeIdentifiantNomEquipeCommentaires
2020REU112450Reu 11/4h sécuJ45684TOTO CUCUGNOAGENCE Aiuhqefpuhp qIEUEHFPIIUHQEF PUHQEPFUHVxdhsd rhsdr
2020REU112450Reu 11/4h sécuA45678MARCEL PROUSTAGENCE 5iuhqefpuhp qIEUEHFPIIUHQEF PUHQEPFUHVxdhsd rhsdr
2020REU112450Reu 11/4h sécuCN586XJEAN-CHRISTOPHE MAC-ENROMINISTERE 689/TREiuhqefpuhp qIEUEHFPIIUHQEF PUHQEPFUHVxdhsd rhsdr

Pour d'autres exemples de ce que je souhaite, je vous joint le fichier TestNono

Merci d'avance de vos réponses

Elnono
 

Pièces jointes

  • TestNono.xlsx
    10.5 KB · Affichages: 8

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @Elnono51, bienvenue sur XLD :),

Cliquer sur le bouton Hop ! qui est associé à la macro FormatExport() située dans le module Module1.

Le code de la macro :
VB:
Sub FormatExport()
Dim t, r(1 To 9999, 1 To 7), n&, i&, id, s

   With Sheets("Export")
      If .FilterMode Then .ShowAllData
      t = Sheets("Export").Range("a1").CurrentRegion
   End With
   With Sheets("Résultat")
      .Activate
      .Range("a1").CurrentRegion.ClearContents
      .Cells(1, 1) = "Numéro": .Cells(1, 2) = "Titre": .Cells(1, 3) = "Type": .Cells(1, 4) = "Identifiant"
      .Cells(1, 5) = "Nom": .Cells(1, 6) = "Equipe": .Cells(1, 7) = "Commentaires"
      n = 0
      For i = 2 To UBound(t)
         For Each id In Split(t(i, 4), ";")
            n = n + 1
            If n = 10000 Then
               .Cells(.Rows.Count, "a").End(xlUp).Offset(1).Resize(n, 7) = r
               n = 1
            End If
            r(n, 1) = t(i, 1): r(n, 2) = t(i, 2): r(n, 3) = t(i, 3): r(n, 7) = t(i, 5)
            s = Split(id, "-"): r(n, 4) = s(0): r(n, 5) = s(1): r(n, 6) = s(2)
         Next id
      Next i
      If n > 0 Then
         .Cells(.Rows.Count, "a").End(xlUp).Offset(1).Resize(n, 7) = r
         .Range("a:a").Resize(, 7).EntireColumn.AutoFit
      End If
   End With
End Sub
 

Pièces jointes

  • Elnono51- Ventiler- v1.xlsm
    19.8 KB · Affichages: 2
Dernière édition:

Elnono51

XLDnaute Nouveau
Bonsoir mapomme,
Merci de ta réactivité et cette ébauche presque parfaite !
J'ai pu corriger une petite anomalie sur la macro en remplaçant Split(id, "-") par Split(id, " - ") afin que les prénoms ou noms avec tiret (comme JEAN-CHRISTOPHE) soit bien pris en compte par contre, il y a encore un problème ou je sèche. Lorsque la macro doit générer plusieurs lignes pour une même réunion, elle ajoute un espace avant chaque identifiant à partir de la deuxième ligne générée. Par exemple, pour la réunion 1, il y a un espace devant A45678 et devant CN586X
Numéro
TitreTypeIdentifiantNomEquipeCommentaires
2020REU112450Reu 11/4h sécuJ45684TOTO CUCUGNOAGENCE Aiuhqefpuhp qIEUEHFPIIUHQEF PUHQEPFUHVxdhsd rhsdr
2020REU112450Reu 11/4h sécu A45678MARCEL PROUSTAGENCE 5iuhqefpuhp qIEUEHFPIIUHQEF PUHQEPFUHVxdhsd rhsdr
2020REU112450Reu 11/4h sécu CN586XJEAN-CHRISTOPHE MAC-ENROMINISTERE 689/TREiuhqefpuhp qIEUEHFPIIUHQEF PUHQEPFUHVxdhsd rhsdr

Est-ce que tu peux regarder le problème.
Je te joint le fichier en V2 où j'ai identifié les cellules en anomalie en jaune.

Encore merci pour ton aide

Elnono
 

Pièces jointes

  • Elnono51- Ventiler- v2.xlsm
    23.3 KB · Affichages: 3

Statistiques des forums

Discussions
314 732
Messages
2 112 285
Membres
111 498
dernier inscrit
romain36