Excel : boucle copie de plages sous condition - VB/VBA/VBS - Programmation
MarshPosté le 03-04-2011 à 18:55:36
bonjour à tous!
Je me permet, après des heures de recherche de plus en plus désespérées, à demander de l'aide sur ce forum... Essayons d'être le plus clair possible : Je dispose de plusieurs classeurs listant tout un tas de données sur la population classés par année et par âge (tout est listé horizontalement !). Je souhaite créer une macro permettant de copier les données contenues dans la colonne D et les coller dans une autre feuille en décalant à chaque fois d'une colonne. Et cela, jusqu'à ce que la cellule indiquant l'année soit vide (elle se situe toujours dans la colonne E).
Voilà le code qui bien évidemment ne fonctionne pas :
Sub TablesINED()
Dim n As Integer Dim a As Integer n = 1 a = 1 Do Until (IsEmpty(Cells(5, n + 1)))
Dim n As Integer Dim a As Integer n = 1 a = 1 Do Until (IsEmpty(Cells(5, n + 1)))
ActiveSheet.Range(Cells(n+5, 4):Cells(n+110, 4)).Copy Sheets("Feuil2" ).Activate Range("A1" ).Select ActiveSheet.Paste Sheets("Feuil1" ).Activate n = n + 115 'Chaque année contient 104 lignes pour chaque âge et chaque année est séparée de 115 lignes de la précédente a = a + 1
Marsh Posté le 03-04-2011 à 18:55:36
bonjour à tous!
Je me permet, après des heures de recherche de plus en plus désespérées, à demander de l'aide sur ce forum...
Essayons d'être le plus clair possible :
Je dispose de plusieurs classeurs listant tout un tas de données sur la population classés par année et par âge (tout est listé horizontalement !).
Je souhaite créer une macro permettant de copier les données contenues dans la colonne D et les coller dans une autre feuille en décalant à chaque fois d'une colonne.
Et cela, jusqu'à ce que la cellule indiquant l'année soit vide (elle se situe toujours dans la colonne E).
Voilà le code qui bien évidemment ne fonctionne pas :
Sub TablesINED()
Dim n As Integer
Dim a As Integer
n = 1
a = 1
Do Until (IsEmpty(Cells(5, n + 1)))
ActiveSheet.Range("D(n + 5):D(n+110)" ).Copy
Sheets("Feuil2" ).Select
ActiveSheet.Range("Aa" ).Select
ActiveSheet.Paste
Sheets("Feuil1" ).Select
n = n + 115 'Chaque année contient 104 lignes pour chaque âge et chaque année est séparée de 115 lignes de la précédente
a = a + 1
Loop
End Sub
En espérant n'avoir pas été trop incompréhensible, je vous remercie grandement par avance!