VBA Excel

Bonjour,

Je suis à la recherche d'un code VBA pour créer un copier/coller des données du classeur A vers classeur B.

La particularité est que je veux copier la cellule A2 du classeur B vers la cellule A4 du classeur A, puis cellule A3 (classeurB) vers cellule A8 du classeur A etc... ET ce jusqu'à la dernière cellule non vide de la colonne A du classeur B.

Je sais faire un "simple" copier coller, mais là je bloque complètement.

Pouvez-vous m'aider svp ?

Merci d'avance

Bonjour appo et bienvenue.

voire 2 : un classeur A et un classeur B

Cela faciliterait la réponse (et en même temps le report vers ton projet)

Merci

Bonjour,

à tester,

Sub test()
Set wk1 = Workbooks("A")
Set wk2 = Workbooks("B")
Set sh1 = wk1.Sheets("Feuil1")
Set sh2 = wk2.Sheets("Feuil1")

rwB = sh2.Cells(Rows.Count, 1).End(xlUp).Row
x = 2

For i = 2 To rwB
 x = x * 2
 sh1.Cells(x, "A") = sh2.Cells(i, "A").Value
Next
End Sub

voici les classeurs en question :

5stock.xlsm (15.80 Ko)

je veux copier la cellule A2 du classeur B vers la cellule A4 du classeur A, puis cellule A3 (classeurB) vers cellule A8 du classeur A etc...

Ce n'est pas tout à fait ce que reflètent tes fichiers ... du coup tu as entraîné Isabelle dans une mauvaise direction ! c'est pas bien

Je propose comme correction de l'excellente proposition ci-dessus

For i = 2 To rwB
 sh1.Cells(4*i - 1, "A") = sh2.Cells(i, "A").Value
Next

cela fonctionne... vous êtes vraiment super !!

Ne me reste plus qu'a reprendre les cours de VBA

merci bcp pour votre aide.

Bonjour à tous,

Avec ma synthése du code final, çà marche po.

sans titre
11stock.xlsm (15.85 Ko)
10inventaire.xlsm (23.77 Ko)

merci de votre correction.

fronck

Bonjour fronck, le forum,

je te retourne tes 2 fichiers :

3stock.xlsm (16.31 Ko)
4inventaire.xlsm (23.92 Ko)

sur la feuille "inventaire" : fais Ctrl e (ou clique sur le bouton bleu rond)


Alt F11 pour voir le code VBA, puis revenir sur Excel

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Avec ma synthése du code final, çà marche po.

merci de votre correction.

fronck

Pourquoi mets-tu "INVENTAIRE" et "STOCK" dans ta formule

Il faut mettre la lettre correspondant à la colonne ... "A", "B" etc. ou bien le numéro de colonne 1, 2, etc..

"INVENTAIRE" et "STOCK" sont en fait les noms d'onglets que tu as déjà identifiés dans sh1 et sh2

Bonjour Dhany, Steelson, le forum,

merci pour vos réponses rapides.

Je m'y retrouve pas avec votre code initial.

Sub test2()
Set wk1 = Workbooks("A")
Set wk2 = Workbooks("B")
Set sh1 = wk1.Sheets("inventaire")
Set sh2 = wk2.Sheets("stock")

rwB = sh2.Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To rwB
sh1.Cells(4 * i - 1, "A") = sh2.Cells(i, "A").Value
Next
End Sub

Mais celui là marche d'enfer :

Sub test()

  Dim wbk As Workbook, sh As Worksheet, dlg&, lg1&, lg2&
  Set wbk = Workbooks("STOCK"): Set sh = wbk.Worksheets("stock")

  'dernière ligne utilisée sur la feuille "stock", selon col A
  dlg = sh.Cells(Rows.Count, 1).End(xlUp).Row

  For lg1 = 2 To dlg
  'formule de progression
    lg2 = 4 * (lg1 - 2) + 3
    With sh.Cells(lg1, 1)
      Cells(lg2, 1) = .Value
      Cells(lg2, 2) = .Offset(, 1)
      Cells(lg2, 3) = .Offset(, 2)
    End With
  Next lg1
End Sub

bravo Dhany pour la formule de progression.

a+

fronck

fronck a écrit :

Mais celui là marche d'enfer :

merci pour ton appréciation aussi flatteuse de mon code VBA !


fronck a écrit :

bravo Dhany pour la formule de progression.

merci encore d'apprécier ma belle formule.


merci aussi pour le petit !

dhany

merci pour vos réponses rapides.

Je m'y retrouve pas avec votre code initial.

Désolé, autant pour moi, j'avais pris la référence dans la ligne au lieu de prendre la ligne elle-même.

Dhany a corrigé la formule mais que tu aurais sans doute pu trouver ...

Mais mon but est plutôt "didactique" que de donner une réponse toute faite.

J'ai du mal à suivre ... c'est appo qui demande et c'est fronck qui collecte les réponses ?

Rechercher des sujets similaires à "vba"