Je crée une macro qui créera un rapport automatique (le nom de la feuille de rapport est "RCCP INPUT"), en extrayant des données d'une autre feuille de calcul (source nommée "CW33 17"). J'ai construit le code qui s'exécute pour une seule ligne de la feuille source, de sorte qu'il crée le rapport pour une seule ligne (chaque ligne représente un ordre). Je veux avoir un rapport pour une série de lignes, donc j'ai besoin d'étendre mon code pour appliquer une série de lignes. Donc, disons que cette plage s'appelle myRange et qu'elle inclut les lignes 2 à 70. Donc, mon rapport doit avoir toutes ces lignes. Mon code est fourni ci-dessous. J'ai également inclus les en-têtes, donc le rapport commence à partir de la ligne 2. La ligne pour laquelle la macro s'exécute, pour l'instant est la ligne 2. Juste pour clarifier davantage, le rapport doit avoir chaque ligne sélectionnée à partir de la source multipliée par 6 (6 copies, l'une en dessous de l'autre) comme on peut le voir dans la macro ci-dessous, car dans la colonne Prévision et Quantité de prévision, chaque commande (ligne) doit avoir des valeurs pour 6 semaines. J'espère que je l'ai bien clarifié! Des idées comment le faire fonctionner? .. J'ai échoué lamentablement jusqu'à présent .. Très apprécié! Le rapport ressemble à ceci (pour une ligne - multipliée par 6) et les autres rangées doivent être placées de la même manière en dessous.Création d'une boucle pour une plage de lignes pour un code qui s'exécute sur une seule ligne
Sub RCCP_INPUT()
Sheets("RCCP INPUT").Select
range("C1").Value = "T-Lane ID" 'Column C
range("D1").Value = "Week of RCCP" 'Column D
range("E1").Value = "Forecast" 'Column E
range("F1").Value = "Forecast Quantity" 'Column F
Sheets("CW33 17").Select
range("D2:E2").Copy
Sheets("RCCP INPUT").Select
range("A2").Select
ActiveSheet.Paste
Dim rws As Long
With range("A2:B2")
rws = .Rows.Count
.Resize(rws).Copy Destination:=.Offset(rws).Resize(rws * 5)
End With
range("C2").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-2],RC[-1])"
ActiveCell.Value = ActiveCell.Value
With range("C2")
rws = .Rows.Count
.Resize(rws).Copy Destination:=.Offset(rws).Resize(rws * 5)
End With
Sheets("CW33 17").Select
range("G2:L2").Select
Selection.Copy
Sheets("RCCP INPUT").Select
range("F2:F7").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Sheets("RCCP INPUT").Select
i = 1
For Each cell In range("E2:E7")
cell.Value = "Week +" & i
i = i + 1
Next cell
Sheets("RCCP INPUT").Select
range("E2").Value = Sheets("CW33 17").range("G2").Value - 1
With range("E2")
rws = .Rows.Count
.Resize(rws).Copy Destination:=.Offset(rws).Resize(rws * 5)
End With
End Sub
" J'ai lamentablement échoué jusqu'ici .. pour trouver des réponses à ma question sur SO ". En regardant votre profil, vous n'acceptez presque jamais de réponse. – cyboashu
Je vois que vous utilisez ma réponse dans ce code. Pourtant tu n'as pas accepté ma réponse. –
@ScottCraner J'ai mis en ligne le commentaire :) c'était vraiment utile! comment puis-je l'accepter en plus d'upvoting? –