OVH Cloud OVH Cloud

pb avec boucle while wend

5 réponses
Avatar
Viard Jean-Paul
Bonjour à tous

J'ai un petit soucis, j'ai une liste de noms dans une colonne "F" par
exemple, si un nom a été supprimé pas de problème, j'utilise le petit bout de
programme placé en
commentaire c'est oK.
Seulement si plusieurs nom sont supprimés à la suite celà ne marche plus.
Aussi j'ai reécri le programme avec des boucles while...wend.
Je sais que le programme fonctionne mais il ne sort pas de la boucle.
(tous mes efforts ont échoué)
A la suite de quoi le traitement de tri placé à la suite ne se fait pas.
voici le programme :

Sub Liste_Pays()
Dim nb, i, lv As Integer
Dim pays As String
Sheets("feuil1").Activate
nb = Sheets("feuil1").Range("G50").Value
Me.ListBox1.Clear

'----------------- Suppression des cellules vides ----------------
' For j = 1 To nb + 2
' If "" = Range("f" & j + 50).Value Then
' Range("f" & j + 50).Value = Range("f" & j + 51).Value
' Range("f" & j + 51).Value = Clear
' End If
' Next
i = 0
lv = 0
'------- traitement cellules pleines ---------------
While Range("f" & 51 + i).Value <> "" And i <> nb
i = i + 1

'------- Traitement cellules vides -------------
While Range("f" & 51 + i).Value = ""
lv = lv + 1
i = i + 1
If Range("f" & 51 + i).Value <> "" Then
pays = Range("f" & 51 + i).Value
MsgBox "valeur de la cellule : " & pays
Range("f" & 51 + i - lv).Value = Range("f" & 51 + i).Value
Range("f" & 51 + i).Value = Clear
i = i - lv
lv = 0
End If
Wend
Wend

'------------------ Tri Bibliothèque Pays -----------------------
Range("f51:f200").Select
ActiveCell.Sort key1:=Range("f51"), order1:=xlAscending, header:=xlGuess
Range("a1").Select

'------------------ Enregistrement des données pays dans Listbox1 -----
UserForm3.Label1.Caption = "Liste des Pays : " & nb
For j = 1 To nb
pays = Sheets("feuil1").Range("f" & j + 50).Value
ListBox1.AddItem UCase(pays)
Next
End Sub

Je remercie d'avance tous et toutes pour toutes la lumière que vous
m'apporterez.
Jean-Paul Viard

5 réponses

Avatar
Daniel
Bonsoir.
Excuse-moi, j'ai la flemme d'éplucher ton code, mais j'ai une manière simple
de supprimer les cellules vides :
Range("A1:A10").SpecialCells(xlCellTypeBlanks).Delete
Si c'est uniquement ce que tu veux faire...
Cordialement.
Daniel
"Viard Jean-Paul" (sansspam)> a écrit dans le message
de news:

Bonjour à tous

J'ai un petit soucis, j'ai une liste de noms dans une colonne "F" par
exemple, si un nom a été supprimé pas de problème, j'utilise le petit bout
de
programme placé en
commentaire c'est oK.
Seulement si plusieurs nom sont supprimés à la suite celà ne marche plus.
Aussi j'ai reécri le programme avec des boucles while...wend.
Je sais que le programme fonctionne mais il ne sort pas de la boucle.
(tous mes efforts ont échoué)
A la suite de quoi le traitement de tri placé à la suite ne se fait pas.
voici le programme :

Sub Liste_Pays()
Dim nb, i, lv As Integer
Dim pays As String
Sheets("feuil1").Activate
nb = Sheets("feuil1").Range("G50").Value
Me.ListBox1.Clear

'----------------- Suppression des cellules vides ----------------
' For j = 1 To nb + 2
' If "" = Range("f" & j + 50).Value Then
' Range("f" & j + 50).Value = Range("f" & j + 51).Value
' Range("f" & j + 51).Value = Clear
' End If
' Next
i = 0
lv = 0
'------- traitement cellules pleines ---------------
While Range("f" & 51 + i).Value <> "" And i <> nb
i = i + 1

'------- Traitement cellules vides -------------
While Range("f" & 51 + i).Value = ""
lv = lv + 1
i = i + 1
If Range("f" & 51 + i).Value <> "" Then
pays = Range("f" & 51 + i).Value
MsgBox "valeur de la cellule : " & pays
Range("f" & 51 + i - lv).Value = Range("f" & 51 + i).Value
Range("f" & 51 + i).Value = Clear
i = i - lv
lv = 0
End If
Wend
Wend

'------------------ Tri Bibliothèque Pays -----------------------
Range("f51:f200").Select
ActiveCell.Sort key1:=Range("f51"), order1:=xlAscending,
header:=xlGuess
Range("a1").Select

'------------------ Enregistrement des données pays dans Listbox1 -----
UserForm3.Label1.Caption = "Liste des Pays : " & nb
For j = 1 To nb
pays = Sheets("feuil1").Range("f" & j + 50).Value
ListBox1.AddItem UCase(pays)
Next
End Sub

Je remercie d'avance tous et toutes pour toutes la lumière que vous
m'apporterez.
Jean-Paul Viard



Avatar
Viard Jean-Paul
Bonjour Daniel
merci pour ta réponse çà marche impeccable pourquoi faire compliqué quand on
peut faire simple, j'ai encore pas mal d'astuces à apprendre.
Il y a toutefois un petit bémol, çà efface les bordures.
à bientôt Daniel.

Jean-Paul
--


Bonsoir.
Excuse-moi, j'ai la flemme d'éplucher ton code, mais j'ai une manière simple
de supprimer les cellules vides :
Range("A1:A10").SpecialCells(xlCellTypeBlanks).Delete
Si c'est uniquement ce que tu veux faire...
Cordialement.
Daniel
"Viard Jean-Paul" (sansspam)> a écrit dans le message
de news:

Bonjour à tous

J'ai un petit soucis, j'ai une liste de noms dans une colonne "F" par
exemple, si un nom a été supprimé pas de problème, j'utilise le petit bout
de
programme placé en
commentaire c'est oK.
Seulement si plusieurs nom sont supprimés à la suite celà ne marche plus.
Aussi j'ai reécri le programme avec des boucles while...wend.
Je sais que le programme fonctionne mais il ne sort pas de la boucle.
(tous mes efforts ont échoué)
A la suite de quoi le traitement de tri placé à la suite ne se fait pas.
voici le programme :

Sub Liste_Pays()
Dim nb, i, lv As Integer
Dim pays As String
Sheets("feuil1").Activate
nb = Sheets("feuil1").Range("G50").Value
Me.ListBox1.Clear

'----------------- Suppression des cellules vides ----------------
' For j = 1 To nb + 2
' If "" = Range("f" & j + 50).Value Then
' Range("f" & j + 50).Value = Range("f" & j + 51).Value
' Range("f" & j + 51).Value = Clear
' End If
' Next
i = 0
lv = 0
'------- traitement cellules pleines ---------------
While Range("f" & 51 + i).Value <> "" And i <> nb
i = i + 1

'------- Traitement cellules vides -------------
While Range("f" & 51 + i).Value = ""
lv = lv + 1
i = i + 1
If Range("f" & 51 + i).Value <> "" Then
pays = Range("f" & 51 + i).Value
MsgBox "valeur de la cellule : " & pays
Range("f" & 51 + i - lv).Value = Range("f" & 51 + i).Value
Range("f" & 51 + i).Value = Clear
i = i - lv
lv = 0
End If
Wend
Wend

'------------------ Tri Bibliothèque Pays -----------------------
Range("f51:f200").Select
ActiveCell.Sort key1:=Range("f51"), order1:=xlAscending,
header:=xlGuess
Range("a1").Select

'------------------ Enregistrement des données pays dans Listbox1 -----
UserForm3.Label1.Caption = "Liste des Pays : " & nb
For j = 1 To nb
pays = Sheets("feuil1").Range("f" & j + 50).Value
ListBox1.AddItem UCase(pays)
Next
End Sub

Je remercie d'avance tous et toutes pour toutes la lumière que vous
m'apporterez.
Jean-Paul Viard








Avatar
Daniel
Bonjour.
Le code suivant supprime les bordures existantes et établit un encadrement
autour de la zone.

Range("A1:A10").SpecialCells(xlCellTypeBlanks).Delete
Range("A1", Range("A1").End(xlDown)).Borders.LineStyle = xlLineStyleNone
Range("A1", Range("A1").End(xlDown)).BorderAround _
Weight:=xlThick, ColorIndex:=xlColorIndexAutomatic

Cordialement.
Daniel
"Viard Jean-Paul" (sansspam)> a écrit dans le message
de news:
Bonjour Daniel
merci pour ta réponse çà marche impeccable pourquoi faire compliqué quand
on
peut faire simple, j'ai encore pas mal d'astuces à apprendre.
Il y a toutefois un petit bémol, çà efface les bordures.
à bientôt Daniel.

Jean-Paul
--


Bonsoir.
Excuse-moi, j'ai la flemme d'éplucher ton code, mais j'ai une manière
simple
de supprimer les cellules vides :
Range("A1:A10").SpecialCells(xlCellTypeBlanks).Delete
Si c'est uniquement ce que tu veux faire...
Cordialement.
Daniel
"Viard Jean-Paul" (sansspam)> a écrit dans le
message
de news:

Bonjour à tous

J'ai un petit soucis, j'ai une liste de noms dans une colonne "F" par
exemple, si un nom a été supprimé pas de problème, j'utilise le petit
bout
de
programme placé en
commentaire c'est oK.
Seulement si plusieurs nom sont supprimés à la suite celà ne marche
plus.
Aussi j'ai reécri le programme avec des boucles while...wend.
Je sais que le programme fonctionne mais il ne sort pas de la boucle.
(tous mes efforts ont échoué)
A la suite de quoi le traitement de tri placé à la suite ne se fait
pas.
voici le programme :

Sub Liste_Pays()
Dim nb, i, lv As Integer
Dim pays As String
Sheets("feuil1").Activate
nb = Sheets("feuil1").Range("G50").Value
Me.ListBox1.Clear

'----------------- Suppression des cellules vides ----------------
' For j = 1 To nb + 2
' If "" = Range("f" & j + 50).Value Then
' Range("f" & j + 50).Value = Range("f" & j + 51).Value
' Range("f" & j + 51).Value = Clear
' End If
' Next
i = 0
lv = 0
'------- traitement cellules pleines ---------------
While Range("f" & 51 + i).Value <> "" And i <> nb
i = i + 1

'------- Traitement cellules vides -------------
While Range("f" & 51 + i).Value = ""
lv = lv + 1
i = i + 1
If Range("f" & 51 + i).Value <> "" Then
pays = Range("f" & 51 + i).Value
MsgBox "valeur de la cellule : " & pays
Range("f" & 51 + i - lv).Value = Range("f" & 51 +
i).Value
Range("f" & 51 + i).Value = Clear
i = i - lv
lv = 0
End If
Wend
Wend

'------------------ Tri Bibliothèque Pays -----------------------
Range("f51:f200").Select
ActiveCell.Sort key1:=Range("f51"), order1:=xlAscending,
header:=xlGuess
Range("a1").Select

'------------------ Enregistrement des données pays dans Listbox1 -----
UserForm3.Label1.Caption = "Liste des Pays : " & nb
For j = 1 To nb
pays = Sheets("feuil1").Range("f" & j + 50).Value
ListBox1.AddItem UCase(pays)
Next
End Sub

Je remercie d'avance tous et toutes pour toutes la lumière que vous
m'apporterez.
Jean-Paul Viard










Avatar
Viard Jean-Paul
--
reBonjour

ok Daniel je vais m'attelé à cette solution et te remercie
cordialement.
J-P.V




Bonjour.
Le code suivant supprime les bordures existantes et établit un encadrement
autour de la zone.

Range("A1:A10").SpecialCells(xlCellTypeBlanks).Delete
Range("A1", Range("A1").End(xlDown)).Borders.LineStyle = xlLineStyleNone
Range("A1", Range("A1").End(xlDown)).BorderAround _
Weight:=xlThick, ColorIndex:=xlColorIndexAutomatic

Cordialement.
Daniel
"Viard Jean-Paul" (sansspam)> a écrit dans le message
de news:
Bonjour Daniel
merci pour ta réponse çà marche impeccable pourquoi faire compliqué quand
on
peut faire simple, j'ai encore pas mal d'astuces à apprendre.
Il y a toutefois un petit bémol, çà efface les bordures.
à bientôt Daniel.

Jean-Paul
--


Bonsoir.
Excuse-moi, j'ai la flemme d'éplucher ton code, mais j'ai une manière
simple
de supprimer les cellules vides :
Range("A1:A10").SpecialCells(xlCellTypeBlanks).Delete
Si c'est uniquement ce que tu veux faire...
Cordialement.
Daniel
"Viard Jean-Paul" (sansspam)> a écrit dans le
message
de news:

Bonjour à tous

J'ai un petit soucis, j'ai une liste de noms dans une colonne "F" par
exemple, si un nom a été supprimé pas de problème, j'utilise le petit
bout
de
programme placé en
commentaire c'est oK.
Seulement si plusieurs nom sont supprimés à la suite celà ne marche
plus.
Aussi j'ai reécri le programme avec des boucles while...wend.
Je sais que le programme fonctionne mais il ne sort pas de la boucle.
(tous mes efforts ont échoué)
A la suite de quoi le traitement de tri placé à la suite ne se fait
pas.
voici le programme :

Sub Liste_Pays()
Dim nb, i, lv As Integer
Dim pays As String
Sheets("feuil1").Activate
nb = Sheets("feuil1").Range("G50").Value
Me.ListBox1.Clear

'----------------- Suppression des cellules vides ----------------
' For j = 1 To nb + 2
' If "" = Range("f" & j + 50).Value Then
' Range("f" & j + 50).Value = Range("f" & j + 51).Value
' Range("f" & j + 51).Value = Clear
' End If
' Next
i = 0
lv = 0
'------- traitement cellules pleines ---------------
While Range("f" & 51 + i).Value <> "" And i <> nb
i = i + 1

'------- Traitement cellules vides -------------
While Range("f" & 51 + i).Value = ""
lv = lv + 1
i = i + 1
If Range("f" & 51 + i).Value <> "" Then
pays = Range("f" & 51 + i).Value
MsgBox "valeur de la cellule : " & pays
Range("f" & 51 + i - lv).Value = Range("f" & 51 +
i).Value
Range("f" & 51 + i).Value = Clear
i = i - lv
lv = 0
End If
Wend
Wend

'------------------ Tri Bibliothèque Pays -----------------------
Range("f51:f200").Select
ActiveCell.Sort key1:=Range("f51"), order1:=xlAscending,
header:=xlGuess
Range("a1").Select

'------------------ Enregistrement des données pays dans Listbox1 -----
UserForm3.Label1.Caption = "Liste des Pays : " & nb
For j = 1 To nb
pays = Sheets("feuil1").Range("f" & j + 50).Value
ListBox1.AddItem UCase(pays)
Next
End Sub

Je remercie d'avance tous et toutes pour toutes la lumière que vous
m'apporterez.
Jean-Paul Viard















Avatar
Viard Jean-Paul
--
reBonjour Daniel

Ta procédure fonctionne très bien
entre temps j'ai trouvé la solution à ma procédure, en fait la condition
de sortie de boucle while...wend n'était jamais atteinte il m'a suffit
de faire "nb - 1"
'------- traitement cellules pleines ---------------
While Range("f" & 51 + i).Value <> "" And i <> nb - 1
i = i + 1

et plus de problème de bordure et format cellules.
comme quoi dans la discussion une petite lumière c'est allumée.

Cordialement Jean-Paul



J-P.V





--
reBonjour

ok Daniel je vais m'attelé à cette solution et te remercie
cordialement.
J-P.V




Bonjour.
Le code suivant supprime les bordures existantes et établit un encadrement
autour de la zone.

Range("A1:A10").SpecialCells(xlCellTypeBlanks).Delete
Range("A1", Range("A1").End(xlDown)).Borders.LineStyle = xlLineStyleNone
Range("A1", Range("A1").End(xlDown)).BorderAround _
Weight:=xlThick, ColorIndex:=xlColorIndexAutomatic

Cordialement.
Daniel
"Viard Jean-Paul" (sansspam)> a écrit dans le message
de news:
Bonjour Daniel
merci pour ta réponse çà marche impeccable pourquoi faire compliqué quand
on
peut faire simple, j'ai encore pas mal d'astuces à apprendre.
Il y a toutefois un petit bémol, çà efface les bordures.
à bientôt Daniel.

Jean-Paul
--


Bonsoir.
Excuse-moi, j'ai la flemme d'éplucher ton code, mais j'ai une manière
simple
de supprimer les cellules vides :
Range("A1:A10").SpecialCells(xlCellTypeBlanks).Delete
Si c'est uniquement ce que tu veux faire...
Cordialement.
Daniel
"Viard Jean-Paul" (sansspam)> a écrit dans le
message
de news:

Bonjour à tous

J'ai un petit soucis, j'ai une liste de noms dans une colonne "F" par
exemple, si un nom a été supprimé pas de problème, j'utilise le petit
bout
de
programme placé en
commentaire c'est oK.
Seulement si plusieurs nom sont supprimés à la suite celà ne marche
plus.
Aussi j'ai reécri le programme avec des boucles while...wend.
Je sais que le programme fonctionne mais il ne sort pas de la boucle.
(tous mes efforts ont échoué)
A la suite de quoi le traitement de tri placé à la suite ne se fait
pas.
voici le programme :

Sub Liste_Pays()
Dim nb, i, lv As Integer
Dim pays As String
Sheets("feuil1").Activate
nb = Sheets("feuil1").Range("G50").Value
Me.ListBox1.Clear

'----------------- Suppression des cellules vides ----------------
' For j = 1 To nb + 2
' If "" = Range("f" & j + 50).Value Then
' Range("f" & j + 50).Value = Range("f" & j + 51).Value
' Range("f" & j + 51).Value = Clear
' End If
' Next
i = 0
lv = 0
'------- traitement cellules pleines ---------------
While Range("f" & 51 + i).Value <> "" And i <> nb
i = i + 1

'------- Traitement cellules vides -------------
While Range("f" & 51 + i).Value = ""
lv = lv + 1
i = i + 1
If Range("f" & 51 + i).Value <> "" Then
pays = Range("f" & 51 + i).Value
MsgBox "valeur de la cellule : " & pays
Range("f" & 51 + i - lv).Value = Range("f" & 51 +
i).Value
Range("f" & 51 + i).Value = Clear
i = i - lv
lv = 0
End If
Wend
Wend

'------------------ Tri Bibliothèque Pays -----------------------
Range("f51:f200").Select
ActiveCell.Sort key1:=Range("f51"), order1:=xlAscending,
header:=xlGuess
Range("a1").Select

'------------------ Enregistrement des données pays dans Listbox1 -----
UserForm3.Label1.Caption = "Liste des Pays : " & nb
For j = 1 To nb
pays = Sheets("feuil1").Range("f" & j + 50).Value
ListBox1.AddItem UCase(pays)
Next
End Sub

Je remercie d'avance tous et toutes pour toutes la lumière que vous
m'apporterez.
Jean-Paul Viard