Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ma boucle ne tourne pas

2 réponses
Avatar
eric
Bonjour,
je débutes en vba et plus encore en vba pour excel.
J'ai un classeur composé de 4 feuilles
2 feuilles identiques en nb enregistrement nommeés annéen et annéenmoins1
1 feuille fcalcul qui contient mes formules
1 feuille bilan que je veux alimenter avec les 3 feuilles pécédentes
l'objectif est
1 prendre les 4 premiéres lignes dans la feuille annéen(puis les 4 suivantes
à la boucle suivante) de les coller dans bilan

2 prendre les 4 premiéres lignes dans la feuille annéenmois1(puis les 4
suivantes à la boucle suivante) de les coller dans bilan à la suite des 4
premiéres

3 de prendre les 32 lignes de formule dans fcalcul (toujours les mêmes) de
les coller à la suite des 8 premieres

4 de repeter l'opération autant de fois que nécessaire en collant toujours à
la suite

je me suis monté ce bout de code

- - - - - - - - -- - - - - - -
Option Explicit
Sub Macro3()

'déclaration des variables qui vont définir les lignes de selection
Dim lidep1, lifin1, lidep2, lifin2, lidep3, lifin3

'déclaration des variables qui vont définir les lignes de destination
Dim lidest1, lidest2, lidest3

'déclarations des coordonnées issues des lignes calculées
Dim coordep1, coordep2, coordep3, coorfin1, coorfin2, coorfin3,
coordest1, coordest2, coordest3

'déclarations des variables qui vont permettre de calculer le nb
itérations
Dim NbLi As Integer
Dim NbOp
Dim i As Integer
Dim n As Integer


'determiner le nb d'itération de la boucle
Sheets("anneen").Select
NbLi = Range("a2", Range("a2").End(xlDown)).Rows.Count
NbOp = (NbLi / 4)

'déclarer n (nb lignes à selectionner dans AnneeN et AnneeNMoins1
n = 4

'calculer les coordonnées des selections de départ et de destination
'pour AnneeN
lidep1 = 2 + (i * n)
lifin1 = 5 + (i * n)
lidest1 = 2 + (i * 40)
coordest1 = "a" & lidest1
coordep1 = "a" & lidep1
coorfin1 = "o" & lifin1

'pour AnneeNMoins1
lidep2 = 2 + (i * n)
lifin2 = 5 + (i * n)
lidest2 = 6 + (i * 40)
coordest2 = "a" & lidest2
coordep2 = "a" & lidep2
coorfin2 = "o" & lifin2

'pour FCalcul
lidep3 = 10
lifin3 = 41
lidest3 = 10 + (i * 40)
coordest3 = "a" & lidest3
coordep3 = "a" & lidep3
coorfin3 = "o" & lifin3

'mise à blanc de la feuille Bilan
Sheets("Bilan").Select
Range("a2", "o1000").Delete

'la méthode pour copier coller des blocs de 4 lignes de anneen vers bilan
For i = 0 To i = NbOp
Sheets("AnneeN").Select
Range(coordep1, coorfin1).Select
Selection.Copy
Sheets("BILAN").Select
Range(coordest1).Select
ActiveSheet.Paste
'la méthode pour copier coller des blocs de 4 lignes de anneenmoins1
vers bilan
Sheets("AnneeNMoins1").Select
Range(coordep2, coorfin2).Select
Selection.Copy
Sheets("bilan").Select
Range(coordest2).Select
ActiveSheet.Paste
'la méthode pour les fourmules de fcalcul vers bilan
Sheets("FCalcul").Select
Range(coordep3, coorfin3).Select
Selection.Copy
Sheets("bilan").Select
Range(coordest3).Select
ActiveSheet.Paste
Next i
End Sub
- - - - - - - - - - -
j'ai bien un copier coller pour le le premier lot mais ma boucle s'arrete là

Vos commentaires sont les bienvenus
Merci d'avance

2 réponses

Avatar
M41
Bonsoir

Je n'ai pas chercher à comprendre le code mais
il y a au moins une erreur dans le listing :

For i = 0 To i = NbOp

For i = 0 to NbOp serait préférable

(NbOp doit être un Integer)

Cordialement

M41

"eric" a écrit dans le message de news:

Bonjour,
je débutes en vba et plus encore en vba pour excel.
J'ai un classeur composé de 4 feuilles
2 feuilles identiques en nb enregistrement nommeés annéen et annéenmoins1
1 feuille fcalcul qui contient mes formules
1 feuille bilan que je veux alimenter avec les 3 feuilles pécédentes
l'objectif est
1 prendre les 4 premiéres lignes dans la feuille annéen(puis les 4
suivantes
à la boucle suivante) de les coller dans bilan

2 prendre les 4 premiéres lignes dans la feuille annéenmois1(puis les 4
suivantes à la boucle suivante) de les coller dans bilan à la suite des 4
premiéres

3 de prendre les 32 lignes de formule dans fcalcul (toujours les mêmes) de
les coller à la suite des 8 premieres

4 de repeter l'opération autant de fois que nécessaire en collant toujours
à
la suite

je me suis monté ce bout de code

- - - - - - - - -- - - - - - -
Option Explicit
Sub Macro3()

'déclaration des variables qui vont définir les lignes de selection
Dim lidep1, lifin1, lidep2, lifin2, lidep3, lifin3

'déclaration des variables qui vont définir les lignes de destination
Dim lidest1, lidest2, lidest3

'déclarations des coordonnées issues des lignes calculées
Dim coordep1, coordep2, coordep3, coorfin1, coorfin2, coorfin3,
coordest1, coordest2, coordest3

'déclarations des variables qui vont permettre de calculer le nb
itérations
Dim NbLi As Integer
Dim NbOp
Dim i As Integer
Dim n As Integer


'determiner le nb d'itération de la boucle
Sheets("anneen").Select
NbLi = Range("a2", Range("a2").End(xlDown)).Rows.Count
NbOp = (NbLi / 4)

'déclarer n (nb lignes à selectionner dans AnneeN et AnneeNMoins1
n = 4

'calculer les coordonnées des selections de départ et de destination
'pour AnneeN
lidep1 = 2 + (i * n)
lifin1 = 5 + (i * n)
lidest1 = 2 + (i * 40)
coordest1 = "a" & lidest1
coordep1 = "a" & lidep1
coorfin1 = "o" & lifin1

'pour AnneeNMoins1
lidep2 = 2 + (i * n)
lifin2 = 5 + (i * n)
lidest2 = 6 + (i * 40)
coordest2 = "a" & lidest2
coordep2 = "a" & lidep2
coorfin2 = "o" & lifin2

'pour FCalcul
lidep3 = 10
lifin3 = 41
lidest3 = 10 + (i * 40)
coordest3 = "a" & lidest3
coordep3 = "a" & lidep3
coorfin3 = "o" & lifin3

'mise à blanc de la feuille Bilan
Sheets("Bilan").Select
Range("a2", "o1000").Delete

'la méthode pour copier coller des blocs de 4 lignes de anneen vers
bilan
For i = 0 To i = NbOp
Sheets("AnneeN").Select
Range(coordep1, coorfin1).Select
Selection.Copy
Sheets("BILAN").Select
Range(coordest1).Select
ActiveSheet.Paste
'la méthode pour copier coller des blocs de 4 lignes de anneenmoins1
vers bilan
Sheets("AnneeNMoins1").Select
Range(coordep2, coorfin2).Select
Selection.Copy
Sheets("bilan").Select
Range(coordest2).Select
ActiveSheet.Paste
'la méthode pour les fourmules de fcalcul vers bilan
Sheets("FCalcul").Select
Range(coordep3, coorfin3).Select
Selection.Copy
Sheets("bilan").Select
Range(coordest3).Select
ActiveSheet.Paste
Next i
End Sub
- - - - - - - - - - -
j'ai bien un copier coller pour le le premier lot mais ma boucle s'arrete


Vos commentaires sont les bienvenus
Merci d'avance





Avatar
eric
Bonjour,
Merci il y avait bien là une erreur.
Ce n'était d'ailleurs pas la seule.
Cordialement


Bonsoir

Je n'ai pas chercher à comprendre le code mais
il y a au moins une erreur dans le listing :

For i = 0 To i = NbOp

For i = 0 to NbOp serait préférable

(NbOp doit être un Integer)

Cordialement

M41

"eric" a écrit dans le message de news:

Bonjour,
je débutes en vba et plus encore en vba pour excel.
J'ai un classeur composé de 4 feuilles
2 feuilles identiques en nb enregistrement nommeés annéen et annéenmoins1
1 feuille fcalcul qui contient mes formules
1 feuille bilan que je veux alimenter avec les 3 feuilles pécédentes
l'objectif est
1 prendre les 4 premiéres lignes dans la feuille annéen(puis les 4
suivantes
à la boucle suivante) de les coller dans bilan

2 prendre les 4 premiéres lignes dans la feuille annéenmois1(puis les 4
suivantes à la boucle suivante) de les coller dans bilan à la suite des 4
premiéres

3 de prendre les 32 lignes de formule dans fcalcul (toujours les mêmes) de
les coller à la suite des 8 premieres

4 de repeter l'opération autant de fois que nécessaire en collant toujours
à
la suite

je me suis monté ce bout de code

- - - - - - - - -- - - - - - -
Option Explicit
Sub Macro3()

'déclaration des variables qui vont définir les lignes de selection
Dim lidep1, lifin1, lidep2, lifin2, lidep3, lifin3

'déclaration des variables qui vont définir les lignes de destination
Dim lidest1, lidest2, lidest3

'déclarations des coordonnées issues des lignes calculées
Dim coordep1, coordep2, coordep3, coorfin1, coorfin2, coorfin3,
coordest1, coordest2, coordest3

'déclarations des variables qui vont permettre de calculer le nb
itérations
Dim NbLi As Integer
Dim NbOp
Dim i As Integer
Dim n As Integer


'determiner le nb d'itération de la boucle
Sheets("anneen").Select
NbLi = Range("a2", Range("a2").End(xlDown)).Rows.Count
NbOp = (NbLi / 4)

'déclarer n (nb lignes à selectionner dans AnneeN et AnneeNMoins1
n = 4

'calculer les coordonnées des selections de départ et de destination
'pour AnneeN
lidep1 = 2 + (i * n)
lifin1 = 5 + (i * n)
lidest1 = 2 + (i * 40)
coordest1 = "a" & lidest1
coordep1 = "a" & lidep1
coorfin1 = "o" & lifin1

'pour AnneeNMoins1
lidep2 = 2 + (i * n)
lifin2 = 5 + (i * n)
lidest2 = 6 + (i * 40)
coordest2 = "a" & lidest2
coordep2 = "a" & lidep2
coorfin2 = "o" & lifin2

'pour FCalcul
lidep3 = 10
lifin3 = 41
lidest3 = 10 + (i * 40)
coordest3 = "a" & lidest3
coordep3 = "a" & lidep3
coorfin3 = "o" & lifin3

'mise à blanc de la feuille Bilan
Sheets("Bilan").Select
Range("a2", "o1000").Delete

'la méthode pour copier coller des blocs de 4 lignes de anneen vers
bilan
For i = 0 To i = NbOp
Sheets("AnneeN").Select
Range(coordep1, coorfin1).Select
Selection.Copy
Sheets("BILAN").Select
Range(coordest1).Select
ActiveSheet.Paste
'la méthode pour copier coller des blocs de 4 lignes de anneenmoins1
vers bilan
Sheets("AnneeNMoins1").Select
Range(coordep2, coorfin2).Select
Selection.Copy
Sheets("bilan").Select
Range(coordest2).Select
ActiveSheet.Paste
'la méthode pour les fourmules de fcalcul vers bilan
Sheets("FCalcul").Select
Range(coordep3, coorfin3).Select
Selection.Copy
Sheets("bilan").Select
Range(coordest3).Select
ActiveSheet.Paste
Next i
End Sub
- - - - - - - - - - -
j'ai bien un copier coller pour le le premier lot mais ma boucle s'arrete


Vos commentaires sont les bienvenus
Merci d'avance