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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

Dernière édition:
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
 
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
 
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
 
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:
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
45
Réponses
9
Affichages
367
Retour