Macro avec boucle

LaKro64

XLDnaute Nouveau
Bonjour à tous,

Je souhaiterai mettre en place une petite macro qui fait une boucle mais je ne sais pas comment faire.

Concrètement, je souhaite :
- copier la ligne (B7:G7) de la feuille ORDA
- la coller en (C3:H3) de la feuille TCD
- recopier la ligne 46 fois en (C3:H49)

puis
- copier la ligne (B8:G8) de la feuille ORDA
- la coller en (C50:H50) de la feuille TCD
- recopier la ligne 46 fois en (C50:H96)

et recommencer l'opération 137 fois (colonne INDEX)

J'ai enregistré une petite macro en manuel pour les trois premières lignes mais ce serait trop long pour le faire 137 fois.

Sub Macro1()
'
' Macro1 Macro
'

'
Sheets("ORDA").Select
Range("B7:G7").Select
Selection.Copy
Sheets("TCD").Select
Range("C3").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("C3:H49"), Type:=xlFillDefault
Range("C3:H49").Select
Sheets("ORDA").Select
Range("B8:G8").Select
Selection.Copy
Sheets("TCD").Select
Range("C50").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("C50:H96"), Type:=xlFillCopy
Range("C50:H96").Select
Sheets("ORDA").Select
Range("B9:G9").Select
Selection.Copy
Sheets("TCD").Select
Range("C97").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("C97:H143"), Type:=xlFillCopy
Range("C97:H143").Select
End Sub


Auriez-vous une solution pour créer une boucle qui répète l'opération en fonction du chiffre présent dans la colonne Index?

Merci d'avance les amis

:)
 

Pièces jointes

  • test.xlsm
    22 KB · Affichages: 41
  • test.xlsm
    22 KB · Affichages: 42
  • test.xlsm
    22 KB · Affichages: 45

gilbert_RGI

XLDnaute Barbatruc
Re : Macro avec boucle

Bonjour

ce petit bout de code doit faire la demande

Sub test()
Dim j As Integer, i As Integer
i = 3
For j = 7 To 144
If Sheets(1).Cells(j, 1) = "" Then GoSub suite
For g = 1 To 46
Sheets(1).Range("B" & j & ":G" & j).Copy Sheets(2).Range("c" & i)
i = i + 1
Next
Next
Exit Sub
suite:
j = j + 1
Return
End Sub
 
Dernière édition:

LaKro64

XLDnaute Nouveau
Re : Macro avec boucle

Bonjour Gilbert_RGI,

Merci beaucoup pour votre aide.

Cependant, la macro ne prend en compte qu'une ligne sur deux de la feuille ORDA (voir code couleur)
Je souhaiterai, si possible, qu'à chaque fois qu'il y a un numéro dans la colonne index, la macro récupère l'info en (B:G).

Un dernier petit coup de main serait le bienvenu.

Merci d'avance ;)

Cdlt
 

Pièces jointes

  • test.xlsm
    28.3 KB · Affichages: 35
  • test.xlsm
    28.3 KB · Affichages: 36
  • test.xlsm
    28.3 KB · Affichages: 33

Paf

XLDnaute Barbatruc
Re : Macro avec boucle

Bonjour LaKro64, gilbert_RGI

avec une modif du code de gilbert_RGI (suppression du "gosub")
Code:
Sub test()
Dim j As Integer, i As Integer, g As Byte
i = 3
For j = 7 To 144
    If Sheets(1).Cells(j, 1) <> "" Then
        For g = 1 To 46
            Sheets(1).Range("B" & j & ":G" & j).Copy Sheets(2).Range("c" & i)
            i = i + 1
        Next
    End If
Next
End Sub
 
Dernière édition:

gilbert_RGI

XLDnaute Barbatruc
Re : Macro avec boucle

avec les couleurs

Sub test()
Dim j As Integer, i As Integer, derl As Integer, derlf As Integer
Dim col As Integer
Application.ScreenUpdating = False
i = 3
col = 7
derl = Sheets(2).Range("c65536").End(xlUp).Row + 1
For j = 7 To 144
If Sheets(1).Cells(j, 1) = "" Then GoSub suite
If col = 12 Then col = 6
For g = 1 To 46
Sheets(1).Range("B" & j & ":G" & j).Copy Sheets(2).Range("c" & i)
i = i + 1
Next
derlf = Sheets(2).Range("c65536").End(xlUp).Row + 1
Sheets(2).Range("c" & derl & ":H" & derlf).Interior.ColorIndex = col
derl = derlf
col = col + 1
Next
Application.ScreenUpdating = True
Exit Sub
suite:
j = j + 1
Return
End Sub
 

LaKro64

XLDnaute Nouveau
Re : Macro avec boucle

Une dernière chose si vous avez quelque minute à m'accorder ;)

La dernière opération de ma macro consiste à :
- copier la ligne (I3:BC3) de la feuille ORDA
- faire un collage spécial en valeur et transposé en colonne i de la feuille TCD.
- répéter l'opération en fonction de l'index

C'est exactement la même chose sauf qu'il faut juste faire un copier coller valeur et transposé.

Je pense que tout se jour sur la ligne

For g = 1 To 47
Sheets(1).Range("B" & j & ":G" & j).Copy Sheets(2).Range("c" & i)

mais je ne trouve pas la solution...

Merci d'avance
 

Pièces jointes

  • test.xlsm
    35.4 KB · Affichages: 30
  • test.xlsm
    35.4 KB · Affichages: 34
  • test.xlsm
    35.4 KB · Affichages: 29

LaKro64

XLDnaute Nouveau
Re : Macro avec boucle

je me suis sans doute mal exprimé

Ci-joint mon fichier test : chaque ligne de données est différente. Mais dans l'esprit c'est toujours pareil !

;)
 

Pièces jointes

  • test.xlsm
    56.5 KB · Affichages: 37
  • test.xlsm
    56.5 KB · Affichages: 36
  • test.xlsm
    56.5 KB · Affichages: 34

LaKro64

XLDnaute Nouveau
Re : Macro avec boucle

désolé j'ai mis ces chiffres au hasard, il n'y aucune progression....Tous les chiffres sont différents.

Le principe est le meme que ce matin, la seule différence étant que je veux copier chaque ligne et la coller en valeur en transposé dans la colonne i de la feuille TCD.

ci-joint le fichier

Merci pour votre précieuse aide :)
 

Pièces jointes

  • test.xlsm
    56.1 KB · Affichages: 28
  • test.xlsm
    56.1 KB · Affichages: 34
  • test.xlsm
    56.1 KB · Affichages: 35

Discussions similaires

Statistiques des forums

Discussions
312 457
Messages
2 088 564
Membres
103 882
dernier inscrit
jregis13