Traitement de données en colonnes (VBA)

Bonjour à tous,

Ceci est mon premier post !

Je rencontre une difficulté, je dois traiter une donnée qui ressemble à ceci :

NS 100 102 [...] 108 109

NS 110 111 -112 1

NS 401 102 [...] 409 410

NS 411 412 -414 2

[...]

Pour faire simple le nombre négatif marque la fin de la suite et le chiffre final (ici 1 et 2 ) représente l' "ID" de la suite en question.

La première étape était de regrouper ces valeurs de manière à ce que ça ressemble à ça dans une seule colonne:

100

101

[...]

-112

1

401

402

[...]

-414

2

Pour cela j'ai utilisé le code suivant :

Sub Translate_lim_bc()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim DL As Integer 'déclare la variable DL (Cerdière Ligne)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Dim TL() As Variant 'déclare la variable TL (Tableau de Lignes)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)

Set OS = Sheets("lim.bc") 'définit l'onlget source OS
Set OD = Sheets("lim.bc") 'définit l'onlget destination OD
DL = OS.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 3 (=C) de l'onglet OS
TC = OS.Range("J4:S" & DL) 'définit la tableau de cellules TC
For I = 1 To UBound(TC, 1) 'boucle 1 : sur toutes les lignes I du tableau de cellules TC
    For J = 1 To UBound(TC, 2) 'boucle 2 : sur toutes les colonnes J du tableau de cellules TC
        ReDim Preserve TL(K) 'redimensionne le tableau de lignes TL
        TL(K) = TC(I, J) 'récupère dans TL(K) la valeur ligne I colonne J de TC
        K = K + 1 'incrémente K
    Next J 'prochaine colonne de la boucle 2
Next I 'prochaine ligne de la boucle 1
'renvoie dans B1 redimensionnée de l'onglet OD, le tableau TL transposé
OD.Range("U4").Resize(UBound(TL) + 1, 1) = Application.Transpose(TL)
OD.Range("V3").Resize(UBound(TL) + 1, 1) = Application.Transpose(TL)
End Sub

Je remercie vivement l'un des collaborateurs de ce forum pour cela ! ( ThauThème je crois bien )

Comme vous pouvez le voir aux trois dernières lignes je répète la transposition, c'est voulu ! La donnée que je cherche à obtenir est la suivante :

___ 100

100 101

101 102

102 103

[...]

111 -112

[b]-112 1

1[/b]

Je voudrais récupérer chaque "Suites" dans une seule colonne, à la suite les une des autre mais sans les donnée en gras soulignées. (repérage à partir des cellules vides je suppose)

Vous trouverez donc si joint mon l'exemple qui sera certainement plus parlant.

2donnees-lim.xlsm (24.60 Ko)

Je vous remercie pour votre aide !

A+ -Maxime

Rechercher des sujets similaires à "traitement donnees colonnes vba"