Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

For / Next qui bug ...

2 réponses
Avatar
Vader
Bonjour,

J'ai fait une fonction pour insérer une colonne ... mais je rencontre un
problème que je n'ai jamais vu : la boucle s'arrête avant d'avoir balayé
toute les colonnes !!!

Un coup ça marche ... un coup ça plante ... je comprends rien :-(

Je vois bien que le problème vient de l'UsedRange mais je n'arrive pas
comprendre pourquoi ... la seule chose qui pourrait l'influencer c'est que
j'insère des lignes (tient-il compte de cela pour mettre à jour le range
utilisé ? peut-on mettre à jour le range en cours d'exécution d'une boucle).

Je veux juste comprendre ici l'utilisation de l'argu UsedRange ... parce que
j'ai régler l'erreur en remplaçant Sheets("Planning
Annuel").UsedRange.Columns.Count par 255.

Merci !!!

Private Function insert_duree()

Dim j As Single
Dim k As Single


Sheets("Planning Annuel").Select
Colomn_Test = 3

For j = Colomn_Test To Sheets("Planning
Annuel").UsedRange.Columns.Count

If Cells(3, j).Value = "" Then
Exit Function

ElseIf Cells(3, j).Value <> "Durée" Then
k = j + 1
Columns(k).Select
Selection.Insert Shift:=xlToRight,
CopyOrigin:=xlFormatFromLeftOrAbove
Cells(3, k).Value = "Durée"
j = j + 1

End If
Next

End Function

2 réponses

Avatar
JB
Bonjour

UsedRange ne fonctionne pas toujours correctement. Il est préférable
d'utiliser Find

MsgBox Sheets(1).Cells.Find("*", , , , xlByRows, xlPrevious).Row &
" Lignes"
MsgBox Sheets(1).Cells.Find("*", , , , xlByColumns,
xlPrevious).Column & " Colonnes"

http://boisgontierjacques.free.fr/fichiers/FindDernier2.xls

JB
On 14 août, 14:16, Vader wrote:
Bonjour,

J'ai fait une fonction pour insérer une colonne ... mais je rencontre un
problème que je n'ai jamais vu : la boucle s'arrête avant d'avoir bal ayé
toute les colonnes !!!

Un coup ça marche ... un coup ça plante ... je comprends rien :-(

Je vois bien que le problème vient de l'UsedRange mais je n'arrive pas
comprendre pourquoi ... la seule chose qui pourrait l'influencer c'est que
j'insère des lignes (tient-il compte de cela pour mettre à jour le ra nge
utilisé ? peut-on mettre à jour le range en cours d'exécution d'une boucle).

Je veux juste comprendre ici l'utilisation de l'argu UsedRange ... parce que
j'ai régler l'erreur en remplaçant Sheets("Planning
Annuel").UsedRange.Columns.Count par 255.

Merci !!!

Private Function insert_duree()

Dim j As Single
Dim k As Single

Sheets("Planning Annuel").Select
Colomn_Test = 3

For j = Colomn_Test To Sheets("Planning
Annuel").UsedRange.Columns.Count

If Cells(3, j).Value = "" Then
Exit Function

ElseIf Cells(3, j).Value <> "Durée" Then
k = j + 1
Columns(k).Select
Selection.Insert Shift:=xlToRight,
CopyOrigin:=xlFormatFromLeftOrAbove
Cells(3, k).Value = "Durée"
j = j + 1

End If
Next

End Function


Avatar
Vader
c'est bon à savoir ... :-)

merci


Bonjour

UsedRange ne fonctionne pas toujours correctement. Il est préférable
d'utiliser Find

MsgBox Sheets(1).Cells.Find("*", , , , xlByRows, xlPrevious).Row &
" Lignes"
MsgBox Sheets(1).Cells.Find("*", , , , xlByColumns,
xlPrevious).Column & " Colonnes"

http://boisgontierjacques.free.fr/fichiers/FindDernier2.xls

JB
On 14 août, 14:16, Vader wrote:
Bonjour,

J'ai fait une fonction pour insérer une colonne ... mais je rencontre un
problème que je n'ai jamais vu : la boucle s'arrête avant d'avoir balayé
toute les colonnes !!!

Un coup ça marche ... un coup ça plante ... je comprends rien :-(

Je vois bien que le problème vient de l'UsedRange mais je n'arrive pas
comprendre pourquoi ... la seule chose qui pourrait l'influencer c'est que
j'insère des lignes (tient-il compte de cela pour mettre à jour le range
utilisé ? peut-on mettre à jour le range en cours d'exécution d'une boucle).

Je veux juste comprendre ici l'utilisation de l'argu UsedRange ... parce que
j'ai régler l'erreur en remplaçant Sheets("Planning
Annuel").UsedRange.Columns.Count par 255.

Merci !!!

Private Function insert_duree()

Dim j As Single
Dim k As Single

Sheets("Planning Annuel").Select
Colomn_Test = 3

For j = Colomn_Test To Sheets("Planning
Annuel").UsedRange.Columns.Count

If Cells(3, j).Value = "" Then
Exit Function

ElseIf Cells(3, j).Value <> "Durée" Then
k = j + 1
Columns(k).Select
Selection.Insert Shift:=xlToRight,
CopyOrigin:=xlFormatFromLeftOrAbove
Cells(3, k).Value = "Durée"
j = j + 1

End If
Next

End Function