Boucle itérative

legrand.slb

XLDnaute Nouveau
Bonjour

Je cherche à créer une boucle qui permette de faire la chose suivante

On a un tableau de produit trié par valeur décroissante (colonne C)
A chaque itération on ajoute 1 à la valeur de la cellule D4 ce qui divise le Coût en cellule E4 par la valeur mise en D4
On tri le fichier par valeur décroissante des coûts colonne E.

Et on recommence autant de fois que la valeur située en cellule B1

Voir fichier exemple joint

Merci de votre aide
Bertrand
 

Pièces jointes

  • Itération.xls
    31.5 KB · Affichages: 46
  • Itération.xls
    31.5 KB · Affichages: 56
  • Itération.xls
    31.5 KB · Affichages: 54

laetitia90

XLDnaute Barbatruc
Re : Boucle itérative

bonjour legrand.slb , l'ami pierrejean:):)
une autre facon de l'ecrire comme j'ai compris pas sûre:( copy tablo a cote en g4

Code:
 Sub es()
 Dim t(), t1(), x As Long, i As Long, c As Long, z As Long
  Application.ScreenUpdating = False
  Range("A4:E23").Copy Destination:=[g4]
  For z = 1 To [b1]
  x = 0
  t = Range("g4:k23")
  ReDim t1(1 To UBound(t), 1 To 5)
  For i = 1 To UBound(t)
  x = x + 1
  If x = 1 Then t(i, 4) = t(i, 4) * 2: t(i, 5) = t(i, 5) / t(i, 4)
  For c = 1 To 5: t1(x, c) = t(i, c): Next c
  Next i
  [g4].Resize(x, 5) = t1
  Erase t, t1
  [g4:k23].Sort Key1:=Range("k4"), Order1:=xlDescending, Header:=xlGuess
  Next z
End Sub

ps :remplacer
t(i, 4) = t(i, 4) * 2
par
t(i, 4) = t(i, 4) +1
 
Dernière édition:

legrand.slb

XLDnaute Nouveau
Re : Boucle itérative

Bonsoir pierrejean et laetitia90

Merci beaucoup pour votre aide.
La solution pierrejean répond à la question posée mais j'ai plusieurs fichiers d'un nombre de lignes variable. Serait-il possible de ne pas mettre en dur la longueur du tableau dans la macro ?
Et au risque de paraître exigeant serait-il possible de mettre le résultat dans une nouvelle feuille.

Pour Laetiti90, j'ai bien remplacé
t(i, 4) = t(i, 4) * 2
par
t(i, 4) = t(i, 4) +1
mais à la 5° itération(correspondant à la 3° itération du produit 1) le produit 1 passe d'un coût de 10 000 à 3333 au lieu de 6667. La division doit se faire sur la valeur initiale et non sur la valeur recalculée.

Merci encore de votre aide
Bertrand
 

herve62

XLDnaute Barbatruc
Supporter XLD
Re : Boucle itérative

Bonsoir
Ce qui facilite nos réponses ... rapides
c'est de mettre ( certes ajouter des com.) ex avec des fleches le debut et ce que l'on veut en final !!
Ce n'est que ma perception ...... certains pourraient approuver mais comme ils ont été satisfait .. on les voit plus ... Dommage
 

legrand.slb

XLDnaute Nouveau
Re : Boucle itérative

Bonsoir herve62

Je ne suis pas sûr d'avoir bien compris ton post.
Si je traduis, ma demande n'était pas assez explicite ?????

Mais souvent, c'est seulement en voyant le résultat que le choses se précise du coté demandeur..... non ?

Bien cdt
Bertrand
 

Discussions similaires

Réponses
4
Affichages
181