Bonjour à tous,
Comme tout bon novice, je commence par préciser que je le suis. Je ne connais pas particulièrement le langage VBA mais j'ai quelques notions, je vais à tâtons.
Mon but est le suivant: je cherche à créer une macro d'export automatique, vers un autre classeur, de plages (B:N) appartenant à différentes plages d'un document (B3:N19), et ce sous condition. La ligne exportée doit retrouver sa plage (B3:N19) dans le second document.
Concrètement j'ai deux classeurs "WbSource" et "WbDestination". Les interventions réalisées, cad comportant une date de réalisation en colonne L dans le WbSource doivent être exportées vers WbDestination (copie conforme de WbSource mais vide) dans la même plage de cellules et sur la prochaine ligne vide vers le bas pour ne pas écraser les données des exports précédents. Idéalement, cet export sera réalisé à l'aide d'un bouton qui n'apparait pas encore dans ma macro. Ensuite je reviens sur le WbSource pour effacer les données des lignes copiées sans tuer les formules et les formats. Les données ainsi effacées sont triées à l'ouverture du classeur par une autre macro de tri automatique.
Je bloque au niveau du collage sur la première ligne vide d'une plage donnée du second classeur. Par ailleurs, je ne suis pas sur de bien copier toutes les lignes regroupées par la variable i. Je ne teste pour l'instant la macro que sur la première plage (B3:N19). Il me sera nécessaire de dupliquer la marco pour les autres plages des documents.
J'ai trouvé plein de choses concernant le collage sur la première ligne vide mais rien concernant le collage sur la première ligne vide d'une plage d'un autre classeur. Et là, il me copie pas l'ensemble des lignes grisées, juste une qu'il fout en ligne 3000 quelque chose... J'espère que quelqu'un pourra m'aider.
Comme tout bon novice, je commence par préciser que je le suis. Je ne connais pas particulièrement le langage VBA mais j'ai quelques notions, je vais à tâtons.
Mon but est le suivant: je cherche à créer une macro d'export automatique, vers un autre classeur, de plages (B:N) appartenant à différentes plages d'un document (B3:N19), et ce sous condition. La ligne exportée doit retrouver sa plage (B3:N19) dans le second document.
Concrètement j'ai deux classeurs "WbSource" et "WbDestination". Les interventions réalisées, cad comportant une date de réalisation en colonne L dans le WbSource doivent être exportées vers WbDestination (copie conforme de WbSource mais vide) dans la même plage de cellules et sur la prochaine ligne vide vers le bas pour ne pas écraser les données des exports précédents. Idéalement, cet export sera réalisé à l'aide d'un bouton qui n'apparait pas encore dans ma macro. Ensuite je reviens sur le WbSource pour effacer les données des lignes copiées sans tuer les formules et les formats. Les données ainsi effacées sont triées à l'ouverture du classeur par une autre macro de tri automatique.
Je bloque au niveau du collage sur la première ligne vide d'une plage donnée du second classeur. Par ailleurs, je ne suis pas sur de bien copier toutes les lignes regroupées par la variable i. Je ne teste pour l'instant la macro que sur la première plage (B3:N19). Il me sera nécessaire de dupliquer la marco pour les autres plages des documents.
Code:
Sub copie_feuille()
'
' copie_feuille Macro
'
'
Workbooks.Open Filename:= _
"I:\Mairie\Pôle Aménagement du Territoire\Etudes et Programmation\Technique\Documents de programmation\Organisation\INTERVENTIONS_réalisées_2014.xls"
Dim i As Integer, n As Integer, WbDestination As Workbook, WbSource As Workbook
Set WbSource = Workbooks("INTERVENTIONS_2014.xls")
Set WbDestination = Workbooks("INTERVENTIONS_réalisées_2014.xls")
WbSource.Worksheets("SEPT").Unprotect Password:="nadir"
WbDestination.Worksheets("SEPT").Unprotect Password:="nadir"
For i = 3 To 19
If Not IsEmpty(WbSource.Worksheets("SEPT").Cells(i, 12)) = True Then WbSource.Worksheets("SEPT").Range("B" & i & ":N" & i).Copy _
Destination:=WbDestination.Worksheets("SEPT").Range("B3").End(xlDown)(2)
Next i
For n = 3 To 19
If Not IsEmpty(WbSource.Worksheets("SEPT").Cells(n, 12)) = True Then WbSource.Worksheets("SEPT").Range("B" & n & ":N" & n).SpecialCells(xlCellTypeConstants).ClearContents
Next n
WbSource.Worksheets("SEPT").Protect Password:="nadir"
WbDestination.Worksheets("SEPT").Protect Password:="nadir"
WbSource.Save
WbDestination.Save
End Sub
J'ai trouvé plein de choses concernant le collage sur la première ligne vide mais rien concernant le collage sur la première ligne vide d'une plage d'un autre classeur. Et là, il me copie pas l'ensemble des lignes grisées, juste une qu'il fout en ligne 3000 quelque chose... J'espère que quelqu'un pourra m'aider.