Macro : Boucle (rajout de ligne copié en fin de tableau)
Résolu/Fermé
gilles52300
Messages postés
34
Date d'inscription
dimanche 12 mai 2013
Statut
Membre
Dernière intervention
1 octobre 2018
-
13 mai 2013 à 00:08
gilles52300 Messages postés 34 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 1 octobre 2018 - 13 mai 2013 à 13:04
gilles52300 Messages postés 34 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 1 octobre 2018 - 13 mai 2013 à 13:04
A voir également:
- Macro : Boucle (rajout de ligne copié en fin de tableau)
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Macro logiciel - Télécharger - Organisation
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
3 réponses
gilles52300
Messages postés
34
Date d'inscription
dimanche 12 mai 2013
Statut
Membre
Dernière intervention
1 octobre 2018
13 mai 2013 à 01:49
13 mai 2013 à 01:49
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
13 mai 2013 à 09:02
13 mai 2013 à 09:02
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
gilles52300
Messages postés
34
Date d'inscription
dimanche 12 mai 2013
Statut
Membre
Dernière intervention
1 octobre 2018
Modifié par gilles52300 le 13/05/2013 à 10:29
Modifié par gilles52300 le 13/05/2013 à 10:29
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
Modifié par michel_m le 13/05/2013 à 11:09
Modifié par michel_m le 13/05/2013 à 11:09
Pourquoi aider à faire faire simple quand tu veux absolument faire compliqué avec en plus des erreurs
Abandon du suivi
Abandon du suivi
gilles52300
Messages postés
34
Date d'inscription
dimanche 12 mai 2013
Statut
Membre
Dernière intervention
1 octobre 2018
Modifié par gilles52300 le 13/05/2013 à 13:06
Modifié par gilles52300 le 13/05/2013 à 13:06
Merci de ton aide Michel, cela m'a permis de comprendre et de pouvoir simplifier.
La macro est beaucoup plus fluide avec "with et end with".
Je reviendrais car là n'est que le début d'un long travail de macro dans ce classeur.
La macro est beaucoup plus fluide avec "with et end with".
Je reviendrais car là n'est que le début d'un long travail de macro dans ce classeur.