Macro : Boucle (rajout de ligne copié en fin de tableau)

Résolu/Fermé
gilles52300 Messages postés 35 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 1 octobre 2018 - 13 mai 2013 à 00:08
gilles52300 Messages postés 35 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 1 octobre 2018 - 13 mai 2013 à 13:04
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.
A voir également:

3 réponses

gilles52300 Messages postés 35 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 1 octobre 2018
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
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
13 mai 2013 à 09:02
Bonjour,

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


0
gilles52300 Messages postés 35 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 1 octobre 2018
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.
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
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
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
0
gilles52300 Messages postés 35 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 1 octobre 2018
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.
0