Pbme code boucle For + Step

Bonjour à tous...

Encore un petit soucis de code....

Actuellement j'ai un code qui fonctionne à merveille et que je vous joint.

Je souhaiterais cependant afin de ne pas recourir à chaque fois au masquage de x colonnes pour pouvoir avoir les 3 colonnes qui m’intéressent côte à côte que le résultat de mes concaténations s'affichent 1 colonne sur 3... et non en colonne à suivre...

Le hic : dans mon code j'ai deux références :

1ère : (i,j-415)

2ème : (2,j-415)

donc si je fais :

For j= 434 To 581 Step 3

... logiquement j'ai que le résultat d'un calcul sur 3 qui se fait et s'affiche dans la colonne j+3

Pourriez- vous s'il vous plait m'aider à résoudre ce soucis ?

D'avance merci à ceux qui se pencheront sur ce soucis.

CODE ACTUEL :

var5 = 0

For j = 434 To 483

var1 = Application.Index(PD6, Application.Match(Cells(i, 12), Range("H2:H51"), 0), 2)

var2 = Application.Index(PD6, Application.Match(Cells(i, 13), Range("H2:H51"), 0), 2)

var3 = Application.Index(PD6, Application.Match(Cells(i, 14), Range("H2:H51"), 0), 2)

var4 = Application.Index(PD6, Application.Match(Cells(i, 15), Range("H2:H51"), 0), 2)

var5 = var5 + 1

var = Application.Sum(var1, var2, var3, var4, (Application.Index(PD6, Application.Match(var5, Range("H2:H51"), 0), 2)))

If (var) < 4 Or Cells(i, j - 415).Value = 1 Then

Cells(i, j).Value = 0

ElseIf Cells(2, j - 415).Value < Cells(i, 12).Value Then

Cells(i, j).Value = Cells(2, j - 415) & "" & "-" & "" & Cells(i, 12) & "" & "-" & "" & Cells(i, 13) & "" & "-" & "" & Cells(i, 14) & "" & "-" & "" & Cells(i, 15)

ElseIf Cells(i, 12).Value < Cells(2, j - 415).Value And Cells(2, j - 415).Value < Cells(i, 13).Value Then

Cells(i, j).Value = Cells(i, 12) & "" & "-" & "" & Cells(2, j - 415) & "" & "-" & "" & Cells(i, 13) & "" & "-" & "" & Cells(i, 14) & "" & "-" & "" & Cells(i, 15)

ElseIf Cells(i, 13).Value < Cells(2, j - 415).Value And Cells(2, j - 415).Value < Cells(i, 14).Value Then

Cells(i, j).Value = Cells(i, 12) & "" & "-" & "" & Cells(i, 13) & "" & "-" & "" & Cells(2, j - 415) & "" & "-" & "" & Cells(i, 14) & "" & "-" & "" & Cells(i, 15)

ElseIf Cells(i, 14).Value < Cells(2, j - 415).Value And Cells(2, j - 415).Value < Cells(i, 15).Value Then

Cells(i, j).Value = Cells(i, 12) & "" & "-" & "" & Cells(i, 13) & "" & "-" & "" & Cells(i, 14) & "" & "-" & "" & Cells(2, j - 415) & "" & "-" & "" & Cells(i, 15)

Else

Cells(i, j).Value = Cells(i, 12) & "" & "-" & "" & Cells(i, 13) & "" & "-" & "" & Cells(i, 14) & "" & "-" & "" & Cells(i, 15) & "" & "-" & "" & Cells(2, j - 415)

End If

Next j

Bonjour Lilly

Avant toute chose ... une petite remarque ...

Si tu veux copier du code dans ton message, c'est plus simple d'utiliser les balises Code ( 5 ième Bouton ..) car cela permet la reprise pour tous les lecteurs ...

) James

Merci pour le conseil mais mes fichiers sont sur un autre ordinateur qui n'est pas relié à internet...

voilà pourquoi je fais ainsi... copie coller depuis fichier word... et clé usb au passage...

désolée...

à l'avenir j'essayerai de faire autrement

Merci pour l'aide apportée...

Lilly

Je me suis mal exprimé ...

ci-dessous le rendu visuel ... avec les balises Code ...

Sub TestLilly()
Dim var1, var2, var3, var4, var5 As Integer
Dim i, j As Integer
Dim Var As Integer
Dim PD6 As Range

var5 = 0

For j = 434 To 483

  var1 = Application.Index(PD6, Application.Match(Cells(i, 12), Range("H2:H51"), 0), 2)
  var2 = Application.Index(PD6, Application.Match(Cells(i, 13), Range("H2:H51"), 0), 2)
  var3 = Application.Index(PD6, Application.Match(Cells(i, 14), Range("H2:H51"), 0), 2)
  var4 = Application.Index(PD6, Application.Match(Cells(i, 15), Range("H2:H51"), 0), 2)
  var5 = var5 + 1
  Var = Application.Sum(var1, var2, var3, var4, (Application.Index(PD6, Application.Match(var5, Range("H2:H51"), 0), 2)))

  If (Var) < 4 Or Cells(i, j - 415).Value = 1 Then
    Cells(i, j).Value = 0
  ElseIf Cells(2, j - 415).Value < Cells(i, 12).Value Then
    Cells(i, j).Value = Cells(2, j - 415) & "" & "-" & "" & Cells(i, 12) & "" & "-" & "" & Cells(i, 13) & "" & "-" & "" & Cells(i, 14) & "" & "-" & "" & Cells(i, 15)
  ElseIf Cells(i, 12).Value < Cells(2, j - 415).Value And Cells(2, j - 415).Value < Cells(i, 13).Value Then
    Cells(i, j).Value = Cells(i, 12) & "" & "-" & "" & Cells(2, j - 415) & "" & "-" & "" & Cells(i, 13) & "" & "-" & "" & Cells(i, 14) & "" & "-" & "" & Cells(i, 15)
  ElseIf Cells(i, 13).Value < Cells(2, j - 415).Value And Cells(2, j - 415).Value < Cells(i, 14).Value Then
    Cells(i, j).Value = Cells(i, 12) & "" & "-" & "" & Cells(i, 13) & "" & "-" & "" & Cells(2, j - 415) & "" & "-" & "" & Cells(i, 14) & "" & "-" & "" & Cells(i, 15)
  ElseIf Cells(i, 14).Value < Cells(2, j - 415).Value And Cells(2, j - 415).Value < Cells(i, 15).Value Then
    Cells(i, j).Value = Cells(i, 12) & "" & "-" & "" & Cells(i, 13) & "" & "-" & "" & Cells(i, 14) & "" & "-" & "" & Cells(2, j - 415) & "" & "-" & "" & Cells(i, 15)
  Else
    Cells(i, j).Value = Cells(i, 12) & "" & "-" & "" & Cells(i, 13) & "" & "-" & "" & Cells(i, 14) & "" & "-" & "" & Cells(i, 15) & "" & "-" & "" & Cells(2, j - 415)
  End If

Next j

End Sub

Cela étant ... très sincèrement ... avec un fichier à 600 colonnes ou plus ... pour ma compréhension "visuelle" des choses, il va de soi que si tu pouvais joindre ne serait-ce que 20 lignes ...mais avec les 600 colonnes ... cela faciliterait Grandement la tâche

je vais essayer ...

lillysg a écrit :

je vais essayer ...

Re,

C'est gentil ...

Bon dans le vrai fichier cela fonctionne...

dans le test non...

c'est ...

et en plus trop lourd

Re,

Du coup ...

Est-ce-que çà joue ... ou tu veux essayer de joindre ce fichier ... avec http://www.cjoint.com/ ???

bon je sais pas....

si ça convient

je peux pas faire mieux

Re,

Dans la mesure où tu expliques que sur un ordinateur .... ta macro fonctionne .... et que sur un autre ... elle ne fonctionne pas ...

Que veux-tu que je vérifie ...???

en fait actuellement les résultats des calculs s'affichent dans les colonnes 434 à 483

je souhaite que cela s'affiche dans les colonnes 434, 437, 440, 443, 446 etc...

mais quand je le fais avec :

j=434 to 581 step 3

alors dans ma colonne 434 j'ai le bon résultat de concaténation mais dans la colonne 437 j'ai le résultat pour la 4ème concaténation au lieu de la seconde... et ainsi de suite

donc si c'est possible j'aimerai dans la colonne 437 ma 2ème concaténation... et ainsi de suite

si c'est pas possible, ou trop compliqué alors, je vais me résoudre à faire comme pour d'autres fichiers en reportant les colonnes dont j'ai besoin sur une seconde feuille... ce qui m'enchante pas plus que cela... mais qui fonctionne sur d'autres fichiers...

donc te prends pas la tête si c'est trop compliqué...

Lilly

Merci pour tes explications complémemtaires ...

Dès que j'ai un moment pour creuser ta macro ... je te fais signe ...

merci

Lilly,

Je ne comprends pas comment tu définis var ...

D'accord pour la première partie qui fait la somme de var1 à var4 ... mais ensuite ...???

Est-ce-que le dernier élément serait un var6 ...???

var6 = Application.Index(PD6, Application.Match(var5, Range("i2:i51"), 0), 1)

Merci de tes explications ...

var = Application.Sum(var1, var2, var3, var4, (Application.Index(PD6, Application.Match(var5, Range("H2:H51"), 0), 2)))

var est la résultante de l'addition des 5 quantités en stock des 5 articles....

Il n'y a pas de var 6....

si tu regarde la dernière partie de ce code.... c'est ma même structure que les var1, var2, var3,var4 mais elle concerne la var 5 qui elle augmente de 1 à chaque changement de colonne... (voir ligne de code précédent celle de var)....

(Application.Index(PD6, Application.Match(var5, Range("H2:H51"), 0), 2))

(Et c'est pour cela que ça fonctionne pas dans l'exemple joint.... la recherche des valeurs numérique simple n'existe pas dans la colonne H telle qu'envoyée....)

mais c'est pas là le souci... mais ici...

            If (var) < 4 Or Cells(i, j - 415).Value = 1 Then
                Cells(i, j).Value = 0
            ElseIf Cells(2, j - 415).Value < Cells(i, 12).Value Then
                Cells(i, j).Value = Cells(2, j - 415) & "" & "-" & "" & Cells(i, 12) & "" & "-" & "" & Cells(i, 13) & "" & "-" & "" & Cells(i, 14) & "" & "-" & "" & Cells(i, 15)
            ElseIf Cells(i, 12).Value < Cells(2, j - 415).Value And Cells(2, j - 415).Value < Cells(i, 13).Value Then
                Cells(i, j).Value = Cells(i, 12) & "" & "-" & "" & Cells(2, j - 415) & "" & "-" & "" & Cells(i, 13) & "" & "-" & "" & Cells(i, 14) & "" & "-" & "" & Cells(i, 15)
            ElseIf Cells(i, 13).Value < Cells(2, j - 415).Value And Cells(2, j - 415).Value < Cells(i, 14).Value Then
                Cells(i, j).Value = Cells(i, 12) & "" & "-" & "" & Cells(i, 13) & "" & "-" & "" & Cells(2, j - 415) & "" & "-" & "" & Cells(i, 14) & "" & "-" & "" & Cells(i, 15)
            ElseIf Cells(i, 14).Value < Cells(2, j - 415).Value And Cells(2, j - 415).Value < Cells(i, 15).Value Then
                Cells(i, j).Value = Cells(i, 12) & "" & "-" & "" & Cells(i, 13) & "" & "-" & "" & Cells(i, 14) & "" & "-" & "" & Cells(2, j - 415) & "" & "-" & "" & Cells(i, 15)
            Else
                Cells(i, j).Value = Cells(i, 12) & "" & "-" & "" & Cells(i, 13) & "" & "-" & "" & Cells(i, 14) & "" & "-" & "" & Cells(i, 15) & "" & "-" & "" & Cells(2, j - 415)
            End If

Parce que les références aux "(j-)" sont fixes...

Et lorsque je fais un step bien entendu cela me donne sur la 2ème colonne rempli un résultat par rapport à (i, j-415) ou (2 , j-415) alors qu'en fait cela devrait afficher le résultat pour (i,j-417) ou (2,j-417)

est-ce plus clair ?

surtout te prends pas la tête... ... si tu trouves pas... je vais continuer comme avant....

Lilly

Comme tu me le demandes ... je n'ai recodé que la partie Boucle ... ( à tester à l'intérieur de ta macro...)

Sub BoucleLilly()

Dim i As Integer
Dim j As Integer
Dim c As Integer
Dim var As Integer
Dim DL As Integer

DL = Range("K" & Rows.Count).End(xlUp).Row
var = 5   ' à modifier ''''''''''  mais indispensable au test '''''''''''''''''''''''''''

  For i = 3 To DL
      c = 0
      For j = 434 To 483
          If var < 4 Or Cells(i, j - 415).Value = 1 Then
              Cells(i, j + (c * 2)).Value = 0
          ElseIf Cells(2, j - 415).Value < Cells(i, 12).Value Then
              Cells(i, j + (c * 2)).Value = Cells(2, j - 415) & "" & "-" & "" & Cells(i, 12) & "" & "-" & "" & Cells(i, 13) & "" & "-" & "" & Cells(i, 14) & "" & "-" & "" & Cells(i, 15)
          ElseIf Cells(i, 12).Value < Cells(2, j - 415).Value And Cells(2, j - 415).Value < Cells(i, 13).Value Then
              Cells(i, j + (c * 2)).Value = Cells(i, 12) & "" & "-" & "" & Cells(2, j - 415) & "" & "-" & "" & Cells(i, 13) & "" & "-" & "" & Cells(i, 14) & "" & "-" & "" & Cells(i, 15)
          ElseIf Cells(i, 13).Value < Cells(2, j - 415).Value And Cells(2, j - 415).Value < Cells(i, 14).Value Then
              Cells(i, j + (c * 2)).Value = Cells(i, 12) & "" & "-" & "" & Cells(i, 13) & "" & "-" & "" & Cells(2, j - 415) & "" & "-" & "" & Cells(i, 14) & "" & "-" & "" & Cells(i, 15)
          ElseIf Cells(i, 14).Value < Cells(2, j - 415).Value And Cells(2, j - 415).Value < Cells(i, 15).Value Then
              Cells(i, j + (c * 2)).Value = Cells(i, 12) & "" & "-" & "" & Cells(i, 13) & "" & "-" & "" & Cells(i, 14) & "" & "-" & "" & Cells(2, j - 415) & "" & "-" & "" & Cells(i, 15)
          Else
              Cells(i, j + (c * 2)).Value = Cells(i, 12) & "" & "-" & "" & Cells(i, 13) & "" & "-" & "" & Cells(i, 14) & "" & "-" & "" & Cells(i, 15) & "" & "-" & "" & Cells(2, j - 415)
          End If
          c = c + 1
      Next j
  Next i
End Sub

Coucou James

voilà qui va me simplifier la vie...

Alors encore...

Bon maintenant... .... il faut que je fouille le site.... .... vu que j'ai le message... "procédure trop longue".... pour la fin de cette sub...

.... mais c'est la dernière étape .... alors à fond les manettes...

Belle journée à toi...

et encore

Bonjour,

Un Immense pour tes très chaleureux remerciements ...

Content que cela te facilite la tâche ...

ben depuis

à cause de mon code trop long...

je crois que je vais encore devoir faire un post... car depuis ce matin j'ai pas trouvé sur forum...

Pourtant il y en a...

Belle fin de journée à toi

Re,

On verra bien ... tu n'es pas du genre à te faciliter la vie ... cela dit ... j'espère que c'est ton dernier obstacle ...

Rechercher des sujets similaires à "pbme code boucle step"