For / Next qui bug ...

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #4657301
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
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


Vader
Le #4657171
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
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







Publicité
Poster une réponse
Anonyme