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 SubJe 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.
Je vous remercie pour votre aide !
A+