Je travaille actuellement sur un fichier d’exploitation de données sur excel et je rencontre des difficultés pour résoudre une petit problème. Bon déjà le fonctionnement général du fichier est le suivant:
Chaque ligne correspond à un retour d’expérience sur chantier, pour chaque ligne on précise le type de travaux, la quantité réalisée, la somme déboursée, … et notamment les moyens humains et matériels associés à ce type de travaux. Dans une cellule est regroupé tout le matériel suivi à chaque fois du nombre d’heure associé et idem pour les moyens humains. Il y a 2 types de séparateurs,
« : » pour séparer le type de matériel et le nombre d’heure
« ; » pour passer d’un type de matériel à un autre.
Concrètement le contenu de la case est le suivant:
"matériel1:8;matériel2:5;matériel3:12;matériel4:6;etc… (la cellule peut contenir jusqu’à environ 20 types de matériel différents)
Je souhaiterais donc extraire les données de cette cellule et les répartir afin d’obtenir une colonne matériel et une colonne nombre d’heure le point virgule étant le séparateur qui indique un changement de ligne et les " : " un changement de colonne Extraction données cellule en lignes et colonnes.xlsx (11,0 Ko)
Je ne sais pas si quelqu’un connait une fonction capable de faire cela ou s’il faut passer par du code VBA… le principal c’est d’obtenir quelque chose qui fonctionne et fiable ;).
Merci d’avance pour votre aide, je vous joint un fichier excel pour éclaircir la chose si besoin.
Sub Extract()
Dim sTab() As String
Dim sVal As String
Dim Ind As Integer
’ Contenu de la cellule
sVal = Range(« B2 »).Value
’ Eclater en tableau
sTab = Split(sVal, « ; »)
’ Répartir les données
For Ind = 0 To UBound(sTab) - 1
Range(« F » & 3 + Ind).Value = Left(sTab(Ind), InStr(1, sTab(Ind), « : ») - 1)
Range(« G » & 3 + Ind).Value = Mid(sTab(Ind), InStr(1, sTab(Ind), « : ») + 1)
Next Ind
End Sub
Ok! effectivement cela marche beaucoup mieux. C’est super! cela répond parfaitement à mon besoin, merci beaucoup!
Maintenant pour aller plus loin (et si je peux abuser une dernière fois de tes connaissances) je souhaiterais que cette macro s’applique automatiquement à chaque fois que la valeur de cette cellule change. De cette façon, plus besoin de cliquer sur un bouton pour appliquer la macro…
Si quelqu’un d’autre a la solution je suis preneur bien évidemment!