Macro : Boucle (rajout de ligne copié en fin de tableau)
Résolu
gilles52300
Messages postés
34
Date d'inscription
Statut
Membre
Dernière intervention
-
gilles52300 Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
gilles52300 Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
voici plusieurs jours que je galère sur une macro en apparence toutes bête.
Voila je suis sur un classeur excel et je veux copier une plage de cellule de la feuille 'info' sur la feuille 'recap' à la suite des autres. A la fin de ma feuille 'recap' dans la rangée "A:A" j'ai mentionné le mot "fin" pour indiquer à la boucle que c'est à partir de cette cellule que je veux coller ma nouvelle plage de cellule.
voici plusieurs jours que je galère sur une macro en apparence toutes bête.
Voila je suis sur un classeur excel et je veux copier une plage de cellule de la feuille 'info' sur la feuille 'recap' à la suite des autres. A la fin de ma feuille 'recap' dans la rangée "A:A" j'ai mentionné le mot "fin" pour indiquer à la boucle que c'est à partir de cette cellule que je veux coller ma nouvelle plage de cellule.
A voir également:
- Macro : Boucle (rajout de ligne copié en fin de tableau)
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro maker - Télécharger - Divers Utilitaires
- Macro word - Guide
3 réponses
Sub Macro1()
Dim ii As Integer 'ii est l'indice qui va être incrémenté
'copie de la plage de cellule sur la feuille désirée
Sheets("Informations").Range("J2:AK17").Copy
'sélection de la feuille ou copier la plage de cellule
Sheets("Carnet").Select
'début de la boucle là je n'y arrive plus.
ii = ii + 1
Do
Loop Until Cells(ii, 1) <> "fin" 'quand on arrive au mot "fin" on colle les données copiées et on met en forme la hauteur de ligne
ActiveSheet.Unprotect
'je n'arrive pas à coller non plus
ActiveCell.Paste
Selection.RowHeight = 28
'protection de la feuille
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True, AllowUsingPivotTables:=True
End Sub
Merci de votre aide
Dim ii As Integer 'ii est l'indice qui va être incrémenté
'copie de la plage de cellule sur la feuille désirée
Sheets("Informations").Range("J2:AK17").Copy
'sélection de la feuille ou copier la plage de cellule
Sheets("Carnet").Select
'début de la boucle là je n'y arrive plus.
ii = ii + 1
Do
Loop Until Cells(ii, 1) <> "fin" 'quand on arrive au mot "fin" on colle les données copiées et on met en forme la hauteur de ligne
ActiveSheet.Unprotect
'je n'arrive pas à coller non plus
ActiveCell.Paste
Selection.RowHeight = 28
'protection de la feuille
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True, AllowUsingPivotTables:=True
End Sub
Merci de votre aide
Bonjour,
essaies
essaies
Sub xxx() Dim Lig As Byte, Col As Byte, zone() Dim Ligvide As Integer With Sheets("Informations").Range("J2:AK17") Lig = .Rows.Count Col = .Columns.Count zone = .Value End With With Sheets("carnet") Ligvide = .Columns("A").Find("*", , , , , xlPrevious).Row + 1 .Unprotect .Cells(Ligvide, "A").Resize(Lig, Col) = zone .Protect .Select End With End Sub
Merci Michel,
Je viens d'essayer mais cela ne me colle pas mes lignes avec mes formules. par contre cela m'inscrit bien le mot "fin" à la suite du collé 15lignes plus bas.
j'avais fait un truc hier soir après le post qui semble fonctionner mais je pense que je peux le simplifier surtout quand je vois ton code.
J'ai remplacé "*" par "fin" dans ton code car ma colonne A ne sera pas forcement totalement rempli lors de l'ajout des lignes.
Voici ce que j'ai actuellement après épurement.
Par contre je dois enlever la protection de la feuille 'Carnet' avant de copier sur la feuille 'Informations' sinon cela ne me colle pas les formules, mais juste la mise en forme.
Je viens d'essayer mais cela ne me colle pas mes lignes avec mes formules. par contre cela m'inscrit bien le mot "fin" à la suite du collé 15lignes plus bas.
j'avais fait un truc hier soir après le post qui semble fonctionner mais je pense que je peux le simplifier surtout quand je vois ton code.
J'ai remplacé "*" par "fin" dans ton code car ma colonne A ne sera pas forcement totalement rempli lors de l'ajout des lignes.
With Sheets("carnet") Ligvide = .Columns("A").Find("fin", , , , , xlPrevious).Row + 1 .Unprotect .Cells(Ligvide, "A").Resize(Lig, Col) = zone .Protect .Select End With End Sub
Voici ce que j'ai actuellement après épurement.
Par contre je dois enlever la protection de la feuille 'Carnet' avant de copier sur la feuille 'Informations' sinon cela ne me colle pas les formules, mais juste la mise en forme.
Sub Macro1() 'Rajout de lignes à la fin du tableau 'deprotection de la feuille With Sheets("Carnet").Unprotect End With 'copie de la plage de cellule sur la feuille désirée With Sheets("Informations").Range("J2:AK17").Copy End With 'sélection de la feuille ou copier la plage de cellule With Sheets("Carnet") 'début de la boucle Range("A7").Select Do While ActiveCell.Value <> "fin" ActiveCell.Offset(1, 0).Select Loop 'quand on arrive au mot "fin" on colle les données copiées et on met en forme la hauteur de ligne .Paste Selection.RowHeight = 28 'protection de la feuille .Protect End With End Sub