VBA copier plages variables dans feuilles et cellules variables d'un autre classeur!

vbamar

XLDnaute Nouveau
Bonjour,
je souhaiterai copier des plages de cellules en provenance d'un classeur (A) dans un autre (B).
mais le nom de la ligne dans A deviendrai le nom de la feuille dans B et un critère de la feuille de A
deviendrai la ligne dans B.
mes colonnes ne changent pas et ce sont ces plages de cellules que je veux mettre à la bonne ligne dans B

pour être plus clair voici une image de A
source.png
et de B
bilan.png

j'ai commencé ce code mais ça ne marche pas
Code:
Sub Macro1()
'variables dans A
    Dim Nom As String
    Dim ligne As Integer
    For ligne = 2 To 4
      Nom = Workbooks("source").Sheets("Feuil1").Cells(ligne, 1)
      Var1 = Workbooks("source").Sheets("Feuil1").Range(Cells(ligne, 2), Cells(ligne, 4))
 'integrer dans B
lig = Application.Match(Workbooks("source").Sheets("Feuil1").Range("A1"), Sheets(Nom).Range("A2:A4"), 0)
Dim col As Integer
    col = 2
Sheets(Nom).Cells(lig, col) = Var1
Next
End Sub

merci pour votre aide
 

Pièces jointes

  • source.xls
    27 KB · Affichages: 74
  • bilan.xls
    38.5 KB · Affichages: 89
  • source.xls
    27 KB · Affichages: 87
  • bilan.xls
    38.5 KB · Affichages: 92
  • source.xls
    27 KB · Affichages: 87
  • bilan.xls
    38.5 KB · Affichages: 97
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA copier plages variables dans feuilles et cellules variables d'un autre class

Bonjour Vbamar, bonjour le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim s As Workbook 'déclare la variable s (classeur Source)
Dim b As Workbook 'déclare la variable b (classeur Bilan)
Dim os As Object 'déclare la variable os (Onglet Source)
Dim no As String 'déclare la variable no (Nom Onglet)
Dim ob As Object 'déclare la variable ob (Onglet Bilan)
Dim ligne As Byte 'déclare la variable ligne
Dim dest As Range 'déclare la variable dest (cellule de DESTination) 

Set s = Workbooks("source.xls") 'définit la classeur s
Set b = ThisWorkbook 'définit la classeur b
Set os = Sheets("Feuil1") 'définit l'onglet os
For ligne = 2 To 4 'boucle sur les 4 lignes
    no = os.Cells(ligne, 1).Value 'définit le nom de l'onglet no
    Set ob = b.Sheets(no) 'définit l'onglet ob
    Set dest = ob.Cells(Application.Rows.Count, 2).End(xlUp).Offset(1, 0) 'définit la cellule de destination
    os.Range(Cells(ligne, 2), Cells(ligne, 4)).Copy dest 'copie et colle la plage dans dest
Next 'prochaine ligne de la boucle
End Sub
 

vbamar

XLDnaute Nouveau
Re : VBA copier plages variables dans feuilles et cellules variables d'un autre class

Bonjour Robert,
j'ai une erreur 9 "l'indice n'appartient pas à la selection sur la ligne
Set os = Sheets("Feuil1")
si je précise la feuille Workbooks("source.xls") sur cette ligne
j'ai une erreur 1004 "erreur définie par l'application ou par l'objet" sur la ligne
os.Range(Cells(ligne, 2), Cells(ligne, 4)).Copy
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA copier plages variables dans feuilles et cellules variables d'un autre class

Bonjour Vbamar, bonjour le forum,

Oui pardon... Le code corrigé :
Code:
Sub Macro1()
Dim s As Workbook 'déclare la variable s (classeur Source)
Dim b As Workbook 'déclare la variable b (classeur Bilan)
Dim os As Object 'déclare la variable os (Onglet Source)
Dim no As String 'déclare la variable no (Nom Onglet)
Dim ob As Object 'déclare la variable ob (Onglet Bilan)
Dim ligne As Byte 'déclare la variable ligne
Dim dest As Range 'déclare la variable dest (cellule de DESTination)

Set s = Workbooks("source.xls") 'définit la classeur s
Set b = ThisWorkbook 'définit la classeur b
Set os = s.Sheets("Feuil1") 'définit l'onglet os
For ligne = 2 To 4 'boucle sur les 4 lignes
    no = os.Cells(ligne, 1).Value 'définit le nom de l'onglet no
    Set ob = b.Sheets(no) 'définit l'onglet ob
    Set dest = ob.Cells(Application.Rows.Count, 2).End(xlUp).Offset(1, 0) 'définit la cellule de destination
    os.Range(os.Cells(ligne, 2), os.Cells(ligne, 4)).Copy dest 'copie et colle la plage dans dest
Next 'prochaine ligne de la boucle
End Sub
 

vbamar

XLDnaute Nouveau
Re : VBA copier plages variables dans feuilles et cellules variables d'un autre class

Bonjour Robert, bonjour le forum,


Finalement, je me suis aperçu que la macro fait une copie à la ligne suivante dans bilan
or je voulais pouvoir saisir les semaines dans le désordre et que les données aillent sur la bonne ligne

voila ça marche avec ça

Code:
    lig = Application.Match(os.Range("A1"), ob.Range("A2:A20"), 0)
    Set dest = ob.Cells(lig, 2).Offset(1, 0) 'définit la cellule de destination
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA copier plages variables dans feuilles et cellules variables d'un autre class

Bonjour Vbamar, bonjour le forum,

Le code modifié :
Code:
Sub Macro1()
Dim s As Workbook 'déclare la variable s (classeur Source)
Dim b As Workbook 'déclare la variable b (classeur Bilan)
Dim os As Object 'déclare la variable os (Onglet Source)
Dim no As String 'déclare la variable no (Nom Onglet)
Dim ob As Object 'déclare la variable ob (Onglet Bilan)
Dim ligne As Byte 'déclare la variable ligne
Dim dest As Range 'déclare la variable dest (cellule de DESTination)

Set s = Workbooks("source.xls") 'définit la classeur s
Set b = ThisWorkbook 'définit la classeur b
Set os = s.Sheets("Feuil1") 'définit l'onglet os
For ligne = 2 To 4 'boucle sur les 4 lignes
    no = os.Cells(ligne, 1).Value 'définit le nom de l'onglet no
    Set ob = b.Sheets(no) 'définit l'onglet ob
    Set dest = ob.Cells(ob.Columns(1).Find(os.Range("A1").Value, , xlValues, xlWhole).Row, 2)
    os.Range(os.Cells(ligne, 2), os.Cells(ligne, 4)).Copy dest 'copie et colle la plage dans dest
Next 'prochaine ligne de la boucle
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 046
Membres
104 010
dernier inscrit
Freba