Bonjour,
j'ai, d'un côté une feuille "S0" avec dans les trois premières colonnes, ce qui concaténé, sert d'identifiant PK.
d'un autre coté, j'ai une autre feuille, S2 du meme format.
A partir de ces deux feuilles, je veux constituer une troisième feuille en alternant les S0 et les S2 en fonction pour les lignes qui on un PK qui figure dans une table de correspondance (4 ieme feuille "conversion").
J'ai utilisé une macro VBA mais je n'arrive pas à lire
conv_flag = Sheets("lut").Cells(i + 1, 3).Value 'lit le code pour déterminer si la ligne va etre en S2
nblignes_S0 = 0
iii = 1
xx = 0
While Sheets("S0").Cells(iii + 1, 1).Value > 0
xx = Sheets("S0").Cells(iii + 1, 1).Value
nblignes_S0 = nblignes_S0 + 1
iii = iii + 1
Wend
nblignes_S0 = nblignes_S0 - 1
nb_li = 0 'nombre de lignes en sortie
MsgBox (Str(nblignes_S0))
nblignes_S2 = 0
iiii = 1
xxx = 0
While Sheets("mgt2_S2").Cells(iiii + 1, 1).Value > 0
xxx = Sheets("mgt2_S2").Cells(iiii + 1, 1).Value
nblignes_S2 = nblignes_S2 + 1
iiii = iiii + 1
Wend
nblignes_S2 = nblignes_S2 - 1
nb_li = 0 'nombre de lignes du mgt2 en sortie
MsgBox (Str(nblignes_S2))
'conv_flag = Sheets("S3").Cells(i + 1, 3).Value 'pour déterminer si la ligne va etre en S2
For a = 1 To nblignes_S2
conv_flag = Sheets("S3").Cells(i + 1, 3).Value
If conv_flag = 1 Then
PK(a, conv_flag) = Trim(v1 & "-" &v2 & "-" & v3) & conv_flag
For j = 1 To 67
Sheets("S3").Cells(a + 1, j + 0).Value = Sheets("mgt2_S2").Cells(a + 1, j + 0).Value
Next j
Sheets("S3").Cells(a + 1, 18).Value = Sheets("mgt2_S2").Cells(a + 1, 18).Value
Sheets("S3").Cells(a + 1, 4).Value = Sheets("mgt2_S2").Cells(a + 1, 4).Value
Sheets("S3").Cells(a + 1, 10).Value = Sheets("mgt2_S2").Cells(a + 1, 4).Value
End If
If conv_flag = 0 Then 'cas du flag =0 -> la ligne n'est pas à convertir et on doit recopier les lignes du S0
For b = 1 To nblignes_S0
For jj = 1 To 67
PK(b, conv_flag) = Trim(sbv & "-" & HRU) & conv_flag
Sheets("S3").Cells(b + 1, jj + 0).Value = Sheets("S0").Cells(b + 1, jj + 0).Value
Next jj
Sheets("S3").Cells(b + 1, 18).Value = Sheets("S0").Cells(b + 1, 18).Value
Sheets("S3").Cells(b + 1, 4).Value = Sheets("S0").Cells(b + 1, 4).Value
Sheets("S3").Cells(b + 1, 10).Value = Sheets("S0").Cells(b + 1, 4).Value 'sol SWAT
Next b
End If ' de conv_flag
Next a
Sheets("S3").Rows(1).Value = Sheets("mgt2_ligne1").Rows(1).Value
J'arrive à lire le flag dans la feuille lut, qui indique ce qui doit etre recopié en S0 ou bien en S2 mais je n'arrive pas a copier séquentiellement les lignes S0 à la suite des lignes en S2 dans la feuille S3.
Merci d'avance
Aude
Partager