OVH Cloud OVH Cloud

comment sortir avant la fin d'une boucle while..............wend

7 réponses
Avatar
Alfred WALLACE
Bonjour,
j'ai une boucle comme =E7=E0 :

Selection.End(xlDown).Select

While ActiveCell.Row() < dernier_ligne ' toujours pas fin du
tableau
Selection.Copy 'on memorise le contenu de la
cellule
lig_cour_debut =3D ActiveCell.Row 'm=E9morise la ligne
courante lig_cour de debut
Selection.End(xlDown).Select'selectionne jusqu'a la
premier cellule non vide
lig_cour_fin =3D ActiveCell.Row - 1
Range(Pcol & lig_cour_debut & ":" & Pcol &
lig_cour_fin).Select
ActiveSheet.Paste
Selection.End(xlDown).Select
Wend

dans une colonne donn=E9e, cette boucle "comble" les trous. ok, mon pb
est que,
=E0 la fin je copie la derni=E8re cellule non vide jusqu'a la ligne 65535
!
la derni=E8re ligne de la base peut =EAtre par exemple 1020 mais la
derni=E8re cellule non
vide (pour la colonne concern=E9e) peut =EAtre la ligne 1015. dans ce
cas, je selectionne
jusqu'a 65535 !

comment sortir de l=E0 =E0 la fin de ma colonne ?

Merci

Jos=E9

7 réponses

Avatar
FL
Bonjour,
.
For ligne= 1 to Range("A65536").End(xlUp).Row
Intercalle ton code à l'intérieur de cette boucle qui va s'arréter à la
dernière ligne remplie
Next ligne

A plus
FL
"Alfred WALLACE" a écrit dans le message de news:

Bonjour,
j'ai une boucle comme çà :

Selection.End(xlDown).Select

While ActiveCell.Row() < dernier_ligne ' toujours pas fin du
tableau
Selection.Copy 'on memorise le contenu de la
cellule
lig_cour_debut = ActiveCell.Row 'mémorise la ligne
courante lig_cour de debut
Selection.End(xlDown).Select'selectionne jusqu'a la
premier cellule non vide
lig_cour_fin = ActiveCell.Row - 1
Range(Pcol & lig_cour_debut & ":" & Pcol &
lig_cour_fin).Select
ActiveSheet.Paste
Selection.End(xlDown).Select
Wend

dans une colonne donnée, cette boucle "comble" les trous. ok, mon pb
est que,
à la fin je copie la dernière cellule non vide jusqu'a la ligne 65535
!
la dernière ligne de la base peut être par exemple 1020 mais la
dernière cellule non
vide (pour la colonne concernée) peut être la ligne 1015. dans ce
cas, je selectionne
jusqu'a 65535 !

comment sortir de là à la fin de ma colonne ?

Merci

José
Avatar
Alfred WALLACE
FL wrote:
Bonjour,
.
For ligne= 1 to Range("A65536").End(xlUp).Row
Intercalle ton code à l'intérieur de cette boucle qui va s'arréter à la
dernière ligne remplie
Next ligne

A plus
FL


Bonjour FL, heu, non, la dernière ligne remplie de ma colonne, n'est
pas forcément
la dernière ligne de tous les enregistrements de ma base. ex :

prénom nom2famille ville ligne 1
aaaa TTTTTT lyon ligne 2
bbbb lyon ligne 3
cccc UUUUU marseille ligne 4
dddd paris ligne 5
eeee paris ligne 6

ici, la dernirère ligne de la base est la ligne 6, mais dans la
colonne nom2famille
c'est la ligne 4, ors, je dois recopier UUUU jusqu'à la dernière
ligne de la base (donc 6).
Mon code fonctionne, sauf que, pour la colonne nom2famille, il me
recopie UUUUU
jusqu'à la ligne 65535 au lieu de ligne 6
snif...

Merci pour ton aide.
José

Avatar
FL
Re bonjour,
Dans ton exemple, ta colonne A est renseignée jusqu'à la ligne 6
la boucle suivante va bien se faire de la ligne 1 à la ligne 6
For ligne= 1 to Range("A65536").End(xlUp).Row
Intercalle ton code à l'intérieur de cette boucle qui va s'arréter à la
dernière ligne remplie
Next ligne

si au lieu de A65536, tu mets B65536, effectivement la boucle s'arrête à la
ligne 4,

@+
FL

"Alfred WALLACE" a écrit dans le message de news:


FL wrote:
Bonjour,
.
For ligne= 1 to Range("A65536").End(xlUp).Row
Intercalle ton code à l'intérieur de cette boucle qui va s'arréter à la
dernière ligne remplie
Next ligne

A plus
FL


Bonjour FL, heu, non, la dernière ligne remplie de ma colonne, n'est
pas forcément
la dernière ligne de tous les enregistrements de ma base. ex :

prénom nom2famille ville ligne 1
aaaa TTTTTT lyon ligne 2
bbbb lyon ligne 3
cccc UUUUU marseille ligne 4
dddd paris ligne 5
eeee paris ligne 6

ici, la dernirère ligne de la base est la ligne 6, mais dans la
colonne nom2famille
c'est la ligne 4, ors, je dois recopier UUUU jusqu'à la dernière
ligne de la base (donc 6).
Mon code fonctionne, sauf que, pour la colonne nom2famille, il me
recopie UUUUU
jusqu'à la ligne 65535 au lieu de ligne 6
snif...

Merci pour ton aide.
José

Avatar
Alfred WALLACE
FL wrote:
Re bonjour,
Dans ton exemple, ta colonne A est renseignée jusqu'à la ligne 6
la boucle suivante va bien se faire de la ligne 1 à la ligne 6
For ligne= 1 to Range("A65536").End(xlUp).Row
Intercalle ton code à l'intérieur de cette boucle qui va s'arréter à la
dernière ligne remplie
Next ligne

si au lieu de A65536, tu mets B65536, effectivement la boucle s'arrête à la
ligne 4,

@+
FL


J'ai résolu le pb comme çà :

Selection.End(xlDown).Select
While ActiveCell.Row() < dernier_ligne ' toujours pas fin du tableau
Selection.Copy
lig_cour_debut = ActiveCell.Row 'mémorise la ligne courante
lig_cour de debut
Selection.End(xlDown).Select
If ActiveCell.Row() > dernier_ligne Then
Selection.End(xlUp).Select
Range(Pcol & lig_cour_debut & ":" & Pcol &
dernier_ligne).Select
ActiveSheet.Paste
Selection.End(xlDown).Select
GoTo fin_wend: '<---------------- je fais à la fin
pour repasser par la condition
' de sortie du
while et sortir de là.
End If
lig_cour_fin = ActiveCell.Row - 1
Range(Pcol & lig_cour_debut & ":" & Pcol & lig_cour_fin).Select
ActiveSheet.Paste
Selection.End(xlDown).Select
fin_wend:
Wend

Merci

Avatar
FL
Peut-être une autre solution à ton Pb issue d'une réponse d'AV

Après avoir sélectionné l'ensemble de ton tableau :

Sub Complète_Lignes()
Selection.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
[Selection].Value = [Selection].Value
End Sub

Cordialement
FL

"Alfred WALLACE" a écrit dans le message de news:


FL wrote:
Re bonjour,
Dans ton exemple, ta colonne A est renseignée jusqu'à la ligne 6
la boucle suivante va bien se faire de la ligne 1 à la ligne 6
For ligne= 1 to Range("A65536").End(xlUp).Row
Intercalle ton code à l'intérieur de cette boucle qui va s'arréter à la
dernière ligne remplie
Next ligne

si au lieu de A65536, tu mets B65536, effectivement la boucle s'arrête à
la
ligne 4,

@+
FL


J'ai résolu le pb comme çà :

Selection.End(xlDown).Select
While ActiveCell.Row() < dernier_ligne ' toujours pas fin du tableau
Selection.Copy
lig_cour_debut = ActiveCell.Row 'mémorise la ligne courante
lig_cour de debut
Selection.End(xlDown).Select
If ActiveCell.Row() > dernier_ligne Then
Selection.End(xlUp).Select
Range(Pcol & lig_cour_debut & ":" & Pcol &
dernier_ligne).Select
ActiveSheet.Paste
Selection.End(xlDown).Select
GoTo fin_wend: '<---------------- je fais à la fin
pour repasser par la condition
' de sortie du
while et sortir de là.
End If
lig_cour_fin = ActiveCell.Row - 1
Range(Pcol & lig_cour_debut & ":" & Pcol & lig_cour_fin).Select
ActiveSheet.Paste
Selection.End(xlDown).Select
fin_wend:
Wend

Merci

Avatar
Alfred WALLACE
FL wrote:
Peut-être une autre solution à ton Pb issue d'une réponse d'AV

Après avoir sélectionné l'ensemble de ton tableau :

Sub Complète_Lignes()
Selection.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
[Selection].Value = [Selection].Value
End Sub

Cordialement
FL


Oulaaa heu ... çà fait quoi ?

Merci quand meme

José

Avatar
FL
ça fait quoi ? ça fait ça
C'est pas ce que tu voulais ???
prénom nom2famille ville ligne 1
aaaa TTTTTT lyon ligne 2
bbbb lyon ligne 3
cccc UUUUU marseille ligne 4
dddd paris ligne 5
eeee paris ligne 6
devient
prénom nom2famille ville ligne 1
aaaa TTTTTT lyon ligne 2
bbbb TTTTTT lyon ligne 3
cccc UUUUU marseille ligne 4
dddd UUUUU paris ligne 5
eeee UUUUU paris ligne 6

Cordialement
FL

"Alfred WALLACE" a écrit dans le message de news:

FL wrote:
Peut-être une autre solution à ton Pb issue d'une réponse d'AV

Après avoir sélectionné l'ensemble de ton tableau :

Sub Complète_Lignes()
Selection.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
[Selection].Value = [Selection].Value
End Sub

Cordialement
FL


Oulaaa heu ... çà fait quoi ?

Merci quand meme

José