Existe-t'il un Double For?

Fermé
VB1 - 5 juin 2013 à 14:13
 VB1 - 7 juin 2013 à 14:06
Bonjour,

Je voudrais savoir s'il étant possible de faire un double For sur une seule ligne pour permettre le changement de plusieurs lignes en même temps.

Voici le code que j'ai testé mais qui ne modifie les lignes q'un For après l'autre rendant les résultats faux.

With ThisWorkbook.Sheets("")
For Ligne = 53 To 59
For Ligne2 = 40 To 46
.Range("B" & Ligne) = .Range("B" & Ligne2) - .Range("C" & Ligne2)
.Range("C" & Ligne) = .Range("C" & Ligne2) - .Range("D" & Ligne2)
.Range("D" & Ligne) = .Range("D" & Ligne2) - .Range("E" & Ligne2)
.Range("E" & Ligne) = .Range("E" & Ligne2) - .Range("F" & Ligne2)
.Range("F" & Ligne) = .Range("F" & Ligne2) - .Range("G" & Ligne2)
.Range("G" & Ligne) = .Range("G" & Ligne2) - .Range("H" & Ligne2)
.Range("H" & Ligne) = .Range("H" & Ligne2) - .Range("I" & Ligne2)
.Range("I" & Ligne) = .Range("I" & Ligne2) - .Range("J" & Ligne2)
.Range("J" & Ligne) = .Range("J" & Ligne2) - .Range("K" & Ligne2)
.Range("K" & Ligne) = .Range("K" & Ligne2) - .Range("L" & Ligne2)
.Range("L" & Ligne) = .Range("L" & Ligne2) - .Range("M" & Ligne2)
.Range("M" & Ligne) = .Range("M" & Ligne2) - .Range("N" & Ligne2)
.Range("N" & Ligne) = .Range("N" & Ligne2) - .Range("O" & Ligne2)
.Range("O" & Ligne) = .Range("O" & Ligne2) - .Range("P" & Ligne2)
.Range("P" & Ligne) = .Range("P" & Ligne2) - .Range("Q" & Ligne2)
.Range("Q" & Ligne) = .Range("Q" & Ligne2) - .Range("R" & Ligne2)
Next Ligne2
Next Ligne

J'aimerais réussir à avoir quelque chose dans le style
For Ligne = 53 to 59 & for Ligne2 = 40 to 46

Avez-vous des idées ou une solution pour avoir ce que je recherche?

Merci à vous


A voir également:

1 réponse

Bonjour

Je ne suis pas tout à fait sûr d'avoir compris ce que tu cherches, mais est-ce que ce ne serait pas tout simplement :

With ThisWorkbook.Sheets("") 

For Ligne2 = 40 To 46 
.Range("B" & (Ligne2+13)) = .Range("B" & Ligne2) - .Range("C" & Ligne2) 
.Range("C" & (Ligne2+13)) = .Range("C" & Ligne2) - .Range("D" & Ligne2) 
...
Next Ligne2 


D'ailleurs, une boucle aussi sur les colonnes t'éviterait de ré-écrire 12 fois la (presque) même ligne
0
Effectivement c'était tout simple...
Merci beaucoup!
0
Pour t'éviter d'écrire tes 16 lignes :
With ThisWorkbook.Sheets("")  ' ????

For Ligne2 = 40 To 46 
For col=2 to 17
.Cells (Ligne2+13,col) = .Cells (Ligne2,col) - .Cells( Ligne2,col+1) 
Next col
Next Ligne2 
0
Merci bien! C'est quand même plus simple écrit comme ca.
Je ne pensais pas qu'on pouvait écrire de cette manière.

Une autre question qui n'est pas vraiment en lien, j'ai un tableau où les mois sont affiché en ligne 2 de la colonne 4 à 15 et lorque j'écris:

Abs = Workbooks(NomFichierModule5).Sheets("TGA " & Flux).Cells(col, Ligne)

Il me met que ABS = Vide alors que mes cellules sont pleines!!
J'ai testé en mettant .text ou .value=nom mais en vain (il m'écrit "VRAI")....

Aurais-tu une idée du pourquoi?

Merci
0
J'ai oublié de préciser que ABS devait être égal au mois figurant dans les cellules et que
Ligne = 2
For Col = 4 to 15
0
Utilisateur anonyme
7 juin 2013 à 13:59
& Flux).Cells(col, Ligne)
Avec Cells, c'est (ligne,colonne), pas (colonne, ligne)
0