Copy/Paste Range puis Range + 1 colonne

Bonjour,

Je débute sur VBA, j'aimerais créer la macro suivante dans un modèle financier existant:

- Step 1: Sheet 1 : copier les cellules (F38:F107)

- Step 2: Sheet 2 : coller les valeurs en (G3:G73)

- Step 3: Sheet 3: Copier la cellule D43

- Step 4: Sheet 1: Coller la valeur en cellule F150

- Step 5: Sheet 4: Copier la cellule D43

- Step 6: Sheet 1: Coller la valeur en cellule F151

Là où ça se complique c'est que je voudrais effectuer cette opération 75 fois en décalant la colonne de 1 rang vers la droite à chaque fois pour la sheet 1.

- Step 7: Sheet 1 : copier les cellules (F38:F107) (G38:G107), ...

- Step 8: Sheet 2 : coller les valeurs en (G3:G73)

- Step 9: Sheet 3: Copier la cellule D43

- Step 10: Sheet 1: Coller la valeur en cellule F150 (G150), ...

- Step 11: Sheet 4: Copier la cellule D43

- Step 12: Sheet 1: Coller la valeur en cellule F151 (G151), ...

Voici mon code à l'heure actuelle qui me permet pas d'effectuer l'opération plusieurs fois.

'Step 1
Worksheets("Sheet1").Range("F38:F107").Copy

'Step 2

Worksheets("Sheet2").Range("G3").PasteSpecial Paste:=xlPasteValues

'Step 3
Worksheets("Sheet 3").Cell("D43").Copy

'Step 4
Worksheets("Sheet 1").Cell("F150").PasteSpecial Paste:=xlPasteValues

'Step 5
Worksheets("Sheet 4").Cell("D43").Copy

'Step 6
Worksheets("Sheet 1").Cell("F151").PasteSpecial Paste:=xlPasteValues

J'espère que certain d'entre vous seront en mesure de m'aider, n'hésitez pas si vous avez besoin de plus d'explications sur mon projet.

Merci beaucoup !!

Victor

Bonjour,

Il faut éviter les copié collé en vba çà ne sert pas souvent.

Tu peux :

- soit indiquer des formules dans les cellules de destination exemple en G3 de la feuille2 = =Feuil1!F38 puis tirer la formule.

- soit faire la même chose en vba ---> exemple pour le premier cas

Worksheets("Feuil2").Range("G3:G73").value=Worksheets("Feuil1").Range("F38:F108").value

'Nota j'ai indiqué 108 car la plage  G3/G73 contiend 70 lignes donc logiquement 
F38:108  doit aussi être de 70 lignes.

Idem pour les cellules isolées en vba : Cellule de destination=valeur de la cellule d'origine.

celà donne la même chose qu'un copié collé mais en une seule ligne.

Super, merci beaucoup, voici le nouveau code :

Worksheets("Feuil2").Range("G3:G73").value=Worksheets("Feuil1").Range("F38:F108").value

Worksheets("Feuil1").Range("F150").value=Worksheets("Feuil3").Range("D43").value

Worksheets("Feuil1").Range("F151").value=Worksheets("Feuil4").Range("D43").value

En ce qui concerne la boucle (pas certain que ce soit le bon terme), comment puis-je faire en sorte que ma macro refasse ensuite le calcul en décalant la colonne F à G puis H, puis I, etc

Merci !!

Bonjour à tous les 2,

Est-ce que la boucle (c'est bien le bon terme) est nécessaire ?

Est-ce qu'il faut coller d'un coup toutes les colonnes ou est-ce qu'il faut, à la prochaine copie, décaler la plage de destination ?

Dans ces cas, il n'y aurait pas besoin de boucle.

Cdlt,

J'ai des données brutes dans la feuille 1 (F38 : BX108).

Il faut qu'à tour de rôle les données de chaque colonne (F jusqu'à BX) soit collées dans la plage G3:G73 de ma feuille 2 et que les résultats qui m'intéressent (D43 des feuilles 3 et 4) soient C/C en feuille 1.

C'est donc à la prochaine copie, pas tout en simultané mais je ne sais pas comment modéliser cela.

Cordialement,

Victor

Et quel est l'intérêt de la manoeuvre ? Pourquoi utiliser des feuilles de transit ? Ne serait-il pas possible de mettre des formules sur les cellules en lignes 150 et 151 de le feuille 1 ?

J'ai finalement créé une colonne scenario dans mon fichier ce qui facilite grandement ma macro.

Juste une petite question concernant ma macro scenario ci-dessous qui originellement fonctionnait en ligne et que j'essaye d'adapter pour qu'elle marche en ligne.

Dans ma macro ci-dessous, comment pourrais-je adapter la section 'Clear the row underneath the area pour que ça clear les colonnes suivantes et non les lignes.

Ca doit être tout con mais je bug...

Merci beaucoup !!

Sub Run_Scenarios()

'
' Run_Scenarios Macro
'
Dim i As Integer

'Clear the row underneath the area

With [Scenario_Copy]
.Copy
.Resize([Num_Scenarios] + 1, .Count).PasteSpecial xlPasteFormats
.Offset([Num_Scenarios] + 1, 0).Resize(1, .Count).Clear
.Item(1).Select
End With


'Cycle through the scenarios

For i = 1 To [Num_Scenarios]

'Calculate the scenario
[Scenario] = i
Application.Calculate

'Copy and paste the results
[Scenario_Copy].Offset(0, i) = [Scenario_Copy].Value

Next

'Restore the Base Case
[Scenario] = 1

Application.Calculate
'

End Sub

Rechercher des sujets similaires à "copy paste range puis colonne"