Copier "à la suite de"
Résolu
Sam
-
Sam -
Sam -
Bonjour,
J'ouvre un nouveau topic, plus approprié à mon problème. J'ai un programme qui copie des cellules de plusieurs feuilles d'un classeur vers une colonne dans un autre classeur. Je voudrais que mes données se mettent les unes après les autres sans qu'il y ait chevauchement, pour l'instant mon code ne marche pas comme il faudrait.
Merci d'avance
Dim Wbk1 As Workbook, Wbk2 As Workbook
Dim ws As Worksheet
Dim ws_count As Integer
Dim cells_count As Integer
cells_count = 0
Set Wbk1 = ThisWorkbook
Set Wbk2 = Workbooks("classeur2.xls")
Dim c As Range
Dim d As Range
ws_count = ActiveWorkbook.Worksheets.Count
For I = 7 To ws_count
Wbk1.Worksheets(I).Activate
Set c = [B:B].Find("Material", LookIn:=xlValues, Lookat:=xlWhole)
Set d = [B:B].Find("Comments", LookIn:=xlValues, Lookat:=xlWhole)
Wbk1.Worksheets(I).Range(c, d).Offset(2, 0).Resize(d.Row - c.Row - 3, 1).Copy Destination:=Workbooks("classeur2.xls").Sheets("Structure").Cells(3 + cells_count, 8)
cells_count = Wbk1.Worksheets(I).Range(c, d).Offset(2, 0).Resize(d.Row - c.Row - 3, 1).Count
Next I
J'ouvre un nouveau topic, plus approprié à mon problème. J'ai un programme qui copie des cellules de plusieurs feuilles d'un classeur vers une colonne dans un autre classeur. Je voudrais que mes données se mettent les unes après les autres sans qu'il y ait chevauchement, pour l'instant mon code ne marche pas comme il faudrait.
Merci d'avance
Dim Wbk1 As Workbook, Wbk2 As Workbook
Dim ws As Worksheet
Dim ws_count As Integer
Dim cells_count As Integer
cells_count = 0
Set Wbk1 = ThisWorkbook
Set Wbk2 = Workbooks("classeur2.xls")
Dim c As Range
Dim d As Range
ws_count = ActiveWorkbook.Worksheets.Count
For I = 7 To ws_count
Wbk1.Worksheets(I).Activate
Set c = [B:B].Find("Material", LookIn:=xlValues, Lookat:=xlWhole)
Set d = [B:B].Find("Comments", LookIn:=xlValues, Lookat:=xlWhole)
Wbk1.Worksheets(I).Range(c, d).Offset(2, 0).Resize(d.Row - c.Row - 3, 1).Copy Destination:=Workbooks("classeur2.xls").Sheets("Structure").Cells(3 + cells_count, 8)
cells_count = Wbk1.Worksheets(I).Range(c, d).Offset(2, 0).Resize(d.Row - c.Row - 3, 1).Count
Next I
A voir également:
- Copier "à la suite de"
- Comment copier une vidéo youtube - Guide
- Super copier - Télécharger - Gestion de fichiers
- Style d'écriture a copier coller - Guide
- Historique copier coller - Guide
- Copier disque dur - Guide
4 réponses
Peut être utiliser la fonction:
Qui permet de sélectionner la case après la dernière cellule pleine.
ActiveCell.End(xlDown).Select Selection.Offset(1, 0).Select
Qui permet de sélectionner la case après la dernière cellule pleine.
Je ne vois pas comment l'incorporer, ce serait là normalement:
Wbk1.Worksheets(I).Range(c, d).Offset(2, 0).Resize(d.Row - c.Row - 3, 1).Copy Destination:=Workbooks("ICEtest_RT2.xls").Sheets("Structure").Cells(3 + cells_count, 8)
Je devrais trouver le moyen de transformer le "Cells(3 + cells_count, 8)", comment faire?
Wbk1.Worksheets(I).Range(c, d).Offset(2, 0).Resize(d.Row - c.Row - 3, 1).Copy Destination:=Workbooks("ICEtest_RT2.xls").Sheets("Structure").Cells(3 + cells_count, 8)
Je devrais trouver le moyen de transformer le "Cells(3 + cells_count, 8)", comment faire?
Je l'ai incorporé de la manière suivante, mais ça ne "passe pas" dans la boucle for et je ne sais pas pourquoi, ça considère à chaque fois que la première case vide est celle de la première itération donc ça colle par dessus à chaque fois.
Wbk1.Worksheets(I).Range(c, d).Offset(2, 0).Resize(d.Row - c.Row - 3, 1).Copy Destination:=Workbooks("classeur2.xls").Sheets("Structure").Cells(1, 8).End(xlDown).Offset(1, 0)
Quelqu'un aurait-il une solution?
Wbk1.Worksheets(I).Range(c, d).Offset(2, 0).Resize(d.Row - c.Row - 3, 1).Copy Destination:=Workbooks("classeur2.xls").Sheets("Structure").Cells(1, 8).End(xlDown).Offset(1, 0)
Quelqu'un aurait-il une solution?
Le problème est résolu, j'avais un problème d'indexage.
Voila la solution, il fallait introduire une variable tot:
For I = 7 To ws_count
Wbk1.Worksheets(I).Activate
Set c = [B:B].Find("Material", LookIn:=xlValues, lookat:=xlWhole)
Set d = [B:B].Find("Comments", LookIn:=xlValues, lookat:=xlWhole)
Wbk1.Worksheets(I).Range(c, d).Offset(2, 0).Resize(d.Row - c.Row - 3, 1).Copy Destination:=Workbooks("Classeur2.xls").Sheets("Structure").Cells(3 + tot, 8)
cells_count = Wbk1.Worksheets(I).Range(c, d).Offset(2, 0).Resize(d.Row - c.Row - 3, 1).Count
tot = tot + cells_count
Next I
Voila la solution, il fallait introduire une variable tot:
For I = 7 To ws_count
Wbk1.Worksheets(I).Activate
Set c = [B:B].Find("Material", LookIn:=xlValues, lookat:=xlWhole)
Set d = [B:B].Find("Comments", LookIn:=xlValues, lookat:=xlWhole)
Wbk1.Worksheets(I).Range(c, d).Offset(2, 0).Resize(d.Row - c.Row - 3, 1).Copy Destination:=Workbooks("Classeur2.xls").Sheets("Structure").Cells(3 + tot, 8)
cells_count = Wbk1.Worksheets(I).Range(c, d).Offset(2, 0).Resize(d.Row - c.Row - 3, 1).Count
tot = tot + cells_count
Next I