Construction d'un "InsertAfter la dernière ligne non vide"

Bonjour le forum,

Je n'ai peut-être pas cherché assez sur les sujets déjà abordés, mais je n'ai encore rien trouvé qui corresponde à ce léger problème.

Par ailleurs, je suis novice en VBA, merci de votre clémence sur les fautes de code énorme pouvant survenir.

Explications:

Comme dit dans le titre je cherche à insérer des lignes depuis un onglet dans un autre. L'onglet destination va servir à enregistrer à chaque utilisation de la macro, les lignes de l'autre onglet les unes sous les autres. Ainsi à chaque nouvel action de la macro, je désire que les lignes soient ajoutées à la suite de l'action précédente, en dessous de la dernière ligne non vide en somme.

Soit:

  • Copie d'une plage de données de l'onglet A.
  • Collage de la plage de données dans l'onglet B en dessous de la dernière ligne non vide.

Problème:

Dans le code suivant, j'obtiens l'erreur 438 (la fameuse!!) "propriété ou méthode non gérée par cet objet".

Je crois comprendre que c'est une erreur de syntaxe mais en retournant la formule dans tous les sens, je n'y arrive pas.

Je crois qu'il me manque du savoir au niveau de qu'est qui est un objet dans le code.

Sub Macro4()

Range("C5:I46").Select

Selection.Copy

Sheets("Bilan des temps").Select

While (Cells(1, 1).Value <> "")

Cells(1, 1).insertafter " Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=False"

Columns(2).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

Wend

Sheets("Temps_semaine_untel").Select

ActiveWindow.SmallScroll Down:=-39

Range("D5:I46").Select

Application.CutCopyMode = False

Selection.ClearContents

End Sub

Question:

Si c'est assez clair, pourriez-vous m'aider à résoudre cette énigme?

Merci d'avance.

Bonjour

Matco a écrit :

Construction d'un "InsertAfter la dernière ligne non vide"

Cela correspond à rajouter à la fin ?

Un essai sans test

Sub Macro4()
  With Sheets("Temps_semaine_untel")
    .Range("C5:I46").Copy Destination:=Sheets("Bilan des temps").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
    .Range("D5:I46").ClearContents
   End With
End Sub

Si ce n'est pas ce que tu veux

en y indiquant exactement ce que tu veux

Merci pour ta prompte réponse Banzai64,

Ta réponse est en total accord avec ma question ... qui elle était incomplète.

Je reprécise donc avec en pièce jointe mon fichier (en allégé pour que ça passe).

Je désire en plus des conditions sus-dites que le collage soit un collage spécial de valeur uniquement (pour éviter que la formule soit recopiée dans l'onglet destination et ne me fasse apparaît #HREF).

Et du coup, avec ta solution, je ne vois plus où intercaler cette condition.

Une idée complémentaire?

Merci encore

14calcul-temps.zip (11.49 Ko)

Bonjour,

Voilà une solution, j'ai laissé le code dans celui de la page ne connaissant pas le nom de ton onglet réel, afin que tu puisses tester.

Il suffira d'ajouter un bouton et d'y associer la macro.

Cordialement.

20calcul-temps-v2.zip (13.80 Ko)

C'est parfait, je te remercie.

Par contre je vais devoir décortiquer un peu le tout pour comprendre comment ça marche, mais c'est comme ça aussi qu'on apprend.

Résolu donc !

Rechercher des sujets similaires à "construction insertafter derniere ligne vide"