Création d'un programme VBA pour La séparation de différent éléments

Bonjour,

Je suis actuellement confronté a un problème,

Je dois transformé le tableau ci-joint en un autre tableau que j'ai aussi joint dans une autre feuille.

Je ne sais pas du tout comment faire et ça fait plusieurs jours que je cherche, pouvez-vous m'aider SVP

( En gros faire une macro qui permet de transformer le fichier )

Dans le fichier il y a: Le fichier de base, et dans une autre feuille le résultat souhaité.

Merci d'avance

Cordialement

Pierre

Bonjour,

dans les 3 autres T jamais de multi-lignes ?
S'il y en a, faut-il les prendre en compte également ?
eric

Bonjour,

Oui sur l'exemple il y en a pas mais il peuvent être aussi multi ligne.

Il peut très bien il y en avoir trois en multi ligne comme ils peuvent tous être en multi ligne.

(Les colonnes qui peuvent être multi ligne sont exclusivement:

TATSTCTRTMTLCTBH

Bonjour,

Une proposition Power Query.

Pour actualiser les résultats (requêtes) : Ruban, Données et Actualiser tout.

Cdlt.

Bonjour Jean-Eric,

C'est très gentil à vous mais malheureusement il me faut absolument une macro VBA,

J'ai comme même essaye votre solution mais je ne peux pas "actualiser tout".

Mais je vous remercie comme même beaucoup d'avoir pris de votre temps pour essayer de résoudre mon PB

Cordialement

Pierre

Re,

Etonnant que cela ne fonctionne pas ! Tu travailles bien avec Excel 2016

Regarde la feuille "Ce que je veux" et reproduit la manip. notée en A1.

Sinon, j'ai ajouté un peu de VBA ! La mise à jour est effective à l'activation de la feuille.

Cdlt.

Re bonjour,

Une fois de plus je le re précise c'est un programme en macro qu'il me faut !

Rien d'autre même si sa pourrais marcher, c'est très gentil a toi mais si ce n'est pas une macro je ne pourrais rien en faire. Tout simplement car après avoir fait le traitement je vais intégrer mon fichier dans une base Pl/Sql Oracle donc.....

Merci comme même!

Bonne journée

cordialement

Pierre

Re,

Une nouvelle proposition VBA.

Tu noteras la différence avec les versions précédentes.

Cdlt.

Option Explicit

Public Sub CreateTable()
Dim tbl, arr()
Dim lo As ListObject
Dim r As Range
Dim n
Dim I As Long, J As Long, K As Long, m As Long

    Application.ScreenUpdating = False

    tbl = Worksheets("Ce que j'ai").Cells(1).CurrentRegion.Value
    Set lo = Range("Résultat").ListObject

    With lo
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
        Set r = .InsertRowRange.Cells(1)
    End With

    For I = 2 To UBound(tbl)
        For J = 9 To UBound(tbl, 2)
            If tbl(I, J) <> "" Then
                On Error Resume Next
                n = VBA.Split(WorksheetFunction.Trim(tbl(I, J)), Chr(10))
                For K = LBound(n) To UBound(n)
                    If VBA.Len(n(K)) > 1 Then
                        ReDim Preserve arr(10, m + 1)
                        arr(0, m) = tbl(I, 1)
                        arr(1, m) = tbl(I, 2)
                        arr(2, m) = tbl(I, 3)
                        arr(3, m) = tbl(I, 4)
                        arr(4, m) = tbl(I, 5)
                        arr(5, m) = tbl(I, 6)
                        arr(6, m) = tbl(I, 7)
                        arr(7, m) = tbl(I, 8)
                        arr(8, m) = tbl(1, J)
                        arr(9, m) = n(K)
                        m = m + 1
                    End If
                Next K
            End If
        Next J
    Next I

    If m > 0 Then r.Resize(m, 10).Value = Application.Transpose(arr)

End Sub

Bonsoir

Merci beaucoup, avec mes connaissances j’ai juste modifié la fin du programme pour que la chose se fasse en boucle car le fichier réel fais 12446 lignes alors ...😂

Sa aurait été comment dire , un peux long 😂😂

Merci beaucoup de votre aide

Cordialement

Pierre

Re,

La procédure VBA n'avait pas à être revue en fonction d'un nombre de lignes, car tout est normalement prévu. Relis la procédure !

Sinon, tu auras remarqué la similitude des résultats entre Power Query, Power Query et VBA, et VBA seul.

La 1ère. proposition était plus simple à mettre en œuvre. Toutes deux sont transparentes pour l'utilisateur final.

Nota : Il peut y avoir un hic, si le premier caractère comporte un car 10 (ligne vide dans le tableau).

Bonne continuation.

Cordialement.

Re bonjour,

Effectivement il y a un hic, sa ne recopier pas si la case est vide.

Le programme marche a merveille, mais dans mon cas il faudrait vraiment que cela marche ( recopie même ci cela est vide )

Et j'ai aussi une autre petite chose a demander si cela ne vous dérangerais pas !

TA
01-Alarme >Bloquante
02-Alamre >non bloquante

J'aimerais que par exemple dans l'exemple si dessus ( mais par la suite que ce traitement s'applique a toute les colonnes de type T ) que 01 et Alarme >Bloquante sois séparé et tout ça pour tout est-ce possible ?

Encore merci de tout le temps que vous prenez pour moi !

cordialement

Pierre Berthier

Re bonjour,

Effectivement il y a un hic, sa ne recopier pas si la case est vide.

Le programme marche a merveille, mais dans mon cas il faudrait vraiment que cela marche ( recopie même ci cela est vide )

Et j'ai aussi une autre petite chose a demander si cela ne vous dérangerais pas !

TA
01-Alarme >Bloquante
02-Alamre >non bloquante

J'aimerais que par exemple dans l'exemple si dessus ( mais par la suite que ce traitement s'applique a toute les colonnes de type T ) que 01 et Alarme >Bloquante sois séparé et tout ça pour tout est-ce possible ?

Encore merci de tout le temps que vous prenez pour moi !

cordialement

Pierre Berthier

Rechercher des sujets similaires à "creation programme vba separation different elements"