Petit défi : Traitement de données séparées par des virgules

alexjs

XLDnaute Nouveau
Bonjour à tous,
c'est un peu difficile à expliquer, donc j'ai joint un fichier excel en exemple

j'ai deux colonnes dans mon fichier :
- une contenant des noms (beaucoup 14000)
- la deuxieme contenant des adjectifs (texte) associés aux noms (il peut en avoir jusqu'à une 50aine par nom)

le nombre d'adjectif par nom est aléatoire

J'aimerai à partir de ce fichier arriver à faire un tableau avec des lignes nom-adjectif avec un seul adjectif par ligne (donc répéter les lignes avec le meme nom autant de fois qu'il le faut)


J'ai réussi en bidouillant avec texttocolumn mais ca m'a pris 30 mins, et comme je vais devoir traiter beaucoup de données je voulais savoir si quelqu'un connais un moyen simple ou une macro permettant de faire ce que je cherche à faire;

Je traite ces données pour créer une table qui sera à terme utilisée dans access pour créer une table multicritère.

Merci à ceux qui essaierons de relever le défi !!

Bonne journée
 

Pièces jointes

  • exemple - nom adjectifs.xlsx
    31.8 KB · Affichages: 76

Hervé

XLDnaute Barbatruc
Re : Petit défi : Traitement de données séparées par des virgules

salut

un petit code vite fais, attention, pense à créer une feuille nommée "Feuil1"

renvoi des données en Feuil1

Code:
Public Sub decoupe()
Dim c As Range
Dim tablo
Dim i As Integer, ligne As Integer
For Each c In Range("a4:a" & Range("a65536").End(xlUp).Row)
    tablo = Split(c.Offset(0, 1), ",")
    For i = 0 To UBound(tablo)
        ligne = ligne + 1
        Sheets("Feuil1").Cells(ligne, 1) = c
        Sheets("Feuil1").Cells(ligne, 2) = Trim(tablo(i))
    Next i
Next c
End Sub

a plus
 

alexjs

XLDnaute Nouveau
Re : Petit défi : Traitement de données séparées par des virgules

Merci Hervé,
je suis épaté par ta rapidité !
je regarde ce que ca donne dans excel...je ne suis pas un pro du VBA
peux-tu m'expliquer brievement le "cheminement" que tu as suivi ?
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Petit défi : Traitement de données séparées par des virgules

Bonjour Alexjs, bonjour le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim cel As Range 'déclare la variable cel (CELlule)
Dim nb As Byte 'déclare la variable nb (NomBre)
Dim x As Byte 'déclare la variable x (incrément)
Dim Dest As Range 'déclare la variable dest (DESTination)
 
For Each cel In Range("A4:A" & Cells(Application.Rows.Count, 1).End(xlUp).Row) 'boucle 1 : sur toutes les valeurs éditées de la colonne A
    nb = UBound(Split(cel.Offset(0, 1).Value, ",", -1)) 'définit la variable nb
    For x = 0 To nb 'boucle 2 : sur le nombre d'adjectifs
        Set Dest = Cells(Application.Rows.Count, 5).End(xlUp).Offset(1, 0) 'définit la cellule de destination
        Dest.Value = cel.Value 'récupère le nom
        Dest.Offset(0, 1).Value = Split(cel.Offset(0, 1).Value, ",", -1)(x) 'récupère l'adjectif
    Next x 'prochain adjectif de la boucle
Next cel 'prochaine cellule de la boucle 1
End Sub

[Édition]
Bonjour Hervé, tu perds pas la main je vois...
 

alexjs

XLDnaute Nouveau
Re : Petit défi : Traitement de données séparées par des virgules

Merci les gars !! ca marche niquel !
Je suis surpris qu'access ne dispose pas d'un wizard qui le fasse tout seul cependant (a moins que je ne connaisse pas !)
 

Discussions similaires

Statistiques des forums

Discussions
312 451
Messages
2 088 525
Membres
103 877
dernier inscrit
imen.chaaba