while / wend: macro ne répète pas l'opération: pb fonctionnement boucle

tweedi

XLDnaute Nouveau
Bonjour à tous,

Voilà je suis actuellement en train de lire un livre sur VBA, et j'ai un problème avec la méthode while / wend.

Avec ce code: seul le premier bloc de lignes ayant le même nom fusionne:

Sub fusion_final()

Dim num_row As Integer
Dim row_fin As Integer
num_row = 2
Application.DisplayAlerts = False
While Cells(num_row) <> ""
row_fin = num_row
While Cells(row_fin, 1) = Cells(row_fin + 1, 1)
row_fin = row_fin + 1
Wend

With Range(Cells(num_row, 1), Cells(row_fin, 1))
.Merge
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
num_row = row_fin + 1
Wend
Application.DisplayAlerts = True

End Sub

Savez-vous ce qui ne va pas ? d'autre part utilisez-vous parfois cette méthode ou vous concentrez-vous davantage sur les do / while ?

Merci beaucoup !

Tweedi.
 

Pièces jointes

  • Exemple 4-B1.xlsm
    34.3 KB · Affichages: 48

Efgé

XLDnaute Barbatruc
Re : while / wend: macro ne répète pas l'opération: pb fonctionnement boucle

Bonjour tweedi, EDIT Je te laisse aussi une autre macro sans While, plus simple. pour le Wend voir mon post suivant 4 Cordialement
 

Pièces jointes

  • Exemple_4-B1(2).xls
    90 KB · Affichages: 52
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : while / wend: macro ne répète pas l'opération: pb fonctionnement boucle

Bonjour.
Information sur le jargon: While et Wend sont des instructions et non des méthodes.
Une méthode est une procédure propre à un certain type d'objet.
P.S. Le mot "objet" doit aussi seulement être employé à bon escient: c'est un type de donnée muni d'au moins une de ces caractéristiques: les méthodes, les propriétés et la faculté de décréter des évènements.
Cordialement.
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : while / wend: macro ne répète pas l'opération: pb fonctionnement boucle

Re tweedi, Bonjour Dranreb. @ tweedi, Ta solution fonctionne en remplaçant
VB:
While Cells(num_row)  ""
par
VB:
While Cells(num_row, 1)  ""
Tu as oublié le numéro de colonne... Cordialement
 

tototiti2008

XLDnaute Barbatruc
Re : while / wend: macro ne répète pas l'opération: pb fonctionnement boucle

Bonjour tweedi, Bonjour Efgé :), Bonjour Dranreb :),

d'autre part utilisez-vous parfois cette méthode ou vous concentrez-vous davantage sur les do / while ?

Les boucles Do....Loop permettent tout ce que font les While....Wend et plus, personnellement j'ai oublié le While...Wend au profit du Do....Loop

Le Do....Loop peut s'écrire de multiples manières,

condition en début de boucle (pas sûr de rentrer dedans) :

Code:
Do While [Condition]
...
Loop

While = Tant que

ou bien

Code:
Do Until [Condition]
...
Loop

Until = Jusqu'à ce que

Condition en fin de boucle (au moins un passage dans la boucle) :

Code:
Do
...
Loop While [Condition]

ou bien

Code:
Do
...
Loop Until [Condition]

ou bien même

Code:
Do
...
If [Condition] then Exit Do
...
Loop
 

tweedi

XLDnaute Nouveau
Re : while / wend: macro ne répète pas l'opération: pb fonctionnement boucle

Re tweedi, Bonjour Dranreb. @ tweedi, Ta solution fonctionne en remplaçant
VB:
While Cells(num_row)  ""
par
VB:
While Cells(num_row, 1)  ""
Tu as oublié le numéro de colonne... Cordialement


Merci à tous pour vos messages et explications très intéressantes.

Cependant la correction de ma version avec l'ajout de la colonne n'améliore pas le résultat car la macro s'arrête à la fusion des lignes du premier client. quelqu'un sait pourquoi ?

La deuxième méthode proposée avec for / if fonctionne parfaitement.

Merci encore.

Tweedi
 

Statistiques des forums

Discussions
312 247
Messages
2 086 582
Membres
103 247
dernier inscrit
bottxok