Phillip
XLDnaute Occasionnel
Bonjour,
Voilà mon problème. Je vérifie dans un tableau que chaque colonne ne comporte pas plus de x ligne (ici 50). Si elle en comporte plus de 50, j'en laisse 50 et j'insére 3 colonne et je colle le surplus, et je recommence....Mon problème c'est que je fais un boucle un nombre de fois maximum, qui ne peux être connu QU'APRES avoir inséré toutes mes colonnes....! J'ai mis, (voir ci-dessous) que ma boucle s'execute 1 fois, puis juste avant le next, j'incrémente ma valeur max...mais ma boucle ne s'éxecute qu'une fois !! Comment faire simplement, sans tout réécrire ? Merci !!
' boucle pour compter le nombre de lignes, trier et rajouter des colonnes
col = 1
newboucle2 = 1
For I = 1 To newboucle2
plig = 4
'compter le nombre de lignes, pour décider de séparer ou pas
Set AC = Cells(plig, col)
While AC <> ''
plig = plig + 1
Set AC = Cells(plig, col)
Wend
nblig = plig - 1
'Si j'ai moins 50 lignes, je trie simplement
If nblig <= 50 Then
Set sort150 = Range(Cells(4, col), Cells(2000, col + 1))
sort150.Select
Selection.Sort Key1:=sort150, Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'pour couper et coller les lignes en trop
Else
Cells(4, col + 3).Select
Selection.EntireColumn.Insert
Selection.ColumnWidth = 26.29
Cells(4, col + 4).Select
Selection.EntireColumn.Insert
Selection.ColumnWidth = 17.29
Cells(4, col + 5).Select
Selection.EntireColumn.Insert
Selection.ColumnWidth = 3.5
Range(Cells(51, col), Cells(nblig, col + 1)).Select
Selection.Cut
Cells(4, col + 3).Select
ActiveSheet.Paste
Range(Cells(3, col + 3), Cells(3, col + 4)).Value = entetecol
End If
'boucle pour compter le nombre de colonnes apres insertion de colonnes
Dim newboucle2max As Range
Set newboucle2max = Cells(4, newboucle2)
While newboucle2max <> ''
newboucle2 = newboucle2 + 3
Set newboucle2max = Cells(4, newboucle2)
Wend
newboucle2 = newboucle2 - 2
col = col + 3
nblig = 0
Next
Voilà mon problème. Je vérifie dans un tableau que chaque colonne ne comporte pas plus de x ligne (ici 50). Si elle en comporte plus de 50, j'en laisse 50 et j'insére 3 colonne et je colle le surplus, et je recommence....Mon problème c'est que je fais un boucle un nombre de fois maximum, qui ne peux être connu QU'APRES avoir inséré toutes mes colonnes....! J'ai mis, (voir ci-dessous) que ma boucle s'execute 1 fois, puis juste avant le next, j'incrémente ma valeur max...mais ma boucle ne s'éxecute qu'une fois !! Comment faire simplement, sans tout réécrire ? Merci !!
' boucle pour compter le nombre de lignes, trier et rajouter des colonnes
col = 1
newboucle2 = 1
For I = 1 To newboucle2
plig = 4
'compter le nombre de lignes, pour décider de séparer ou pas
Set AC = Cells(plig, col)
While AC <> ''
plig = plig + 1
Set AC = Cells(plig, col)
Wend
nblig = plig - 1
'Si j'ai moins 50 lignes, je trie simplement
If nblig <= 50 Then
Set sort150 = Range(Cells(4, col), Cells(2000, col + 1))
sort150.Select
Selection.Sort Key1:=sort150, Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'pour couper et coller les lignes en trop
Else
Cells(4, col + 3).Select
Selection.EntireColumn.Insert
Selection.ColumnWidth = 26.29
Cells(4, col + 4).Select
Selection.EntireColumn.Insert
Selection.ColumnWidth = 17.29
Cells(4, col + 5).Select
Selection.EntireColumn.Insert
Selection.ColumnWidth = 3.5
Range(Cells(51, col), Cells(nblig, col + 1)).Select
Selection.Cut
Cells(4, col + 3).Select
ActiveSheet.Paste
Range(Cells(3, col + 3), Cells(3, col + 4)).Value = entetecol
End If
'boucle pour compter le nombre de colonnes apres insertion de colonnes
Dim newboucle2max As Range
Set newboucle2max = Cells(4, newboucle2)
While newboucle2max <> ''
newboucle2 = newboucle2 + 3
Set newboucle2max = Cells(4, newboucle2)
Wend
newboucle2 = newboucle2 - 2
col = col + 3
nblig = 0
Next