For Next

Evelynetfrancois

XLDnaute Impliqué
bonjour tout le monde
juste pour le plaisir d'ecrire proprement
est il possible de faire un seul For Next sur ce genre de macro , ou les ranges ne se suivent pas ?

merci pour vos idées toujours geniales !!
bonne journée
ps : je ne suis pas du tout dans l urgence .


E et F

ComboBox1.Value = Range("m3").Value
ComboBox2.Value = Range("m4").Value
ComboBox3.Value = Range("m5").Value
ComboBox4.Value = Range("m6").Value
ComboBox5.Value = Range("ae3").Value
ComboBox6.Value = Range("ae4").Value
ComboBox7.Value = Range("ae5").Value
ComboBox8.Value = Range("ae6").Value
ComboBox9.Value = Range("v3").Value
ComboBox10.Value = Range("v4").Value
ComboBox11.Value = Range("v5").Value
ComboBox12.Value = Range("v6").Value
ComboBox13.Value = Range("an3").Value
ComboBox14.Value = Range("an4").Value
ComboBox15.Value = Range("an5").Value
ComboBox16.Value = Range("an6").Value
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : For Next

Bonjour Evelynetfrancois,

Je trouve que le code proposé est clair. Mais pour répondre à la question, voici un essai dans le fichier joint.

Selon moi (mais chacun fait comme bon lui semble bien sûr!) une astuce est intéressante (*):
  • si elle fait gagner des ressources et/ou du temps d'exécution.
  • si elle fait gagner de nombreuses lignes de code tout en gardant la lisibilité du code.
  • si elle est suffisamment commentée (ce qui n'est pas le cas ici :()=> lorsque le créateur ou le lecteur relit le code quelques semaines plus tard, il doit comprendre d'emblée les arcanes de l'astuce.

Le code du bouton Valeurs:
VB:
Private Sub CommandButton1_Click()
Const Cols = "m,ae,v,an"
Dim i As Long
  For i = 0 To 15
    Me.Controls("ComboBox" & (i + 1)) = Cells(3 + i Mod 4, Split(Cols, ",")(i \ 4))
  Next i
End Sub
(A mon avis, ce code nécessite plus de ressources et plus de temps d'exécution que l'original)

(*) les principes, c'est beau! Encore faudrait-il que je les respecte moi-même,
ce qui est loin d'être le cas! :(
 

Pièces jointes

  • For-next v1.xls
    45 KB · Affichages: 29
Dernière édition:

ERIC S

XLDnaute Barbatruc
Re : For Next

Bonjour à tous

je suis d'accord sur la remarque qu'il faut que le code reste compréhensible quand, 6 mois après, on veut le faire évoluer

pour ma part je préconiserais une approche intermédiaire du genre :

'remplissage M3 à M6
for i = 1 to 3
....
next
'remplissage AE3 à AE6
for i=4 to 8
...
next


solution pas basique, mais pas trop matheuse....

Bonne fin de WE
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : For Next

Bonjour le fil, bonjour le forum,

Une autre methode très proche de celle de Mapomme :
Code:
Private Sub CommandButton1_Click()
Dim tc(3) As String
Dim y As Byte, col As Byte

tc(0) = "M": tc(1) = "AE": tc(2) = "V": tc(3) = "AN"
y = 3
For ctrl = 1 To 16
    Me.Controls("ComboBox" & ctrl).Value = Cells(y, tc(col))
    y = IIf((y + 1) Mod 7 = 0, 3, (y + 1) Mod 7)
    col = ctrl \ 4
Next ctrl
End Sub
 

Evelynetfrancois

XLDnaute Impliqué
Re : For Next

Bonjour
Je viens de voir toutes vos propositions que je mets sous le coude, et je vous en remercie beaucoup
La version d'Erics est celle que j utilise (je traite donc quatre paquets)
de plus elle me parait plus accessible , et sans savoir le faire correctement je pensais à un For next avec des Steps qui vont bien !!
Bonne journée à vous tous et encore un très grand merci
E et F
 

Discussions similaires

Statistiques des forums

Discussions
312 677
Messages
2 090 820
Membres
104 676
dernier inscrit
akram1619