Copier une ligne et inserer en derniere position

Résolu
cs_collina Messages postés 7 Date d'inscription vendredi 8 février 2008 Statut Membre Dernière intervention 30 juin 2016 - 2 juin 2016 à 10:24
cs_collina Messages postés 7 Date d'inscription vendredi 8 février 2008 Statut Membre Dernière intervention 30 juin 2016 - 2 juin 2016 à 17:27
Bonjour tous,

j'ai besoin de créer une macro en Excel 2010, j'avoue que je viens de m'y mettre aux macros et je ne connais pratiquement pas grand chose dedans .
Alors voici mon problème:
Mon macro doit me permettre de copier une plage de lignes dans une feuille et de l’insérer à la dernière ligne d'une autre feuille d'un même classeur Excel.

merci d'avance pour vos aides
cdlt
--

8 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 juin 2016 à 10:42
Bonjour,
Commence d'un bon pied dès le début.
Le bon pied n'est pas de poser une question à chaque petit pas, mais d'apprendre les rudiments (ton aide VBA est à lire) de VBA.
Ouvre donc cette aide à la rubrique Range.Copy (un nom pourtant assez explicite, non ?) et lis
Coup de pouce pour uniquement ce qui n'est pas évident au début :
La dernière ligne remplie d'une colonne (ici la colonne A) est la ligne derlig déterminée ainsi :
derlig = range("A" & rows.count).end(xlup).row

Tu en sais maintenant suffisamment pour t'y mettre.
Reviens en nous montrant au moins ton code d'essai sur ces bases, si encore en difficulté malgré ces lectures.
0
cs_collina Messages postés 7 Date d'inscription vendredi 8 février 2008 Statut Membre Dernière intervention 30 juin 2016
2 juin 2016 à 10:58
merci pour ton aides.
effectivement je me suis rendu sur l'aide

voici le code que j'utilise
Worksheets("etudiants").Range("A12:J17").Copy _
Destination:=Worksheets("SRA final").Range("B" & Rows.Count).End(xlUp).Row


quand j’exécute j'ai un message d'erreur " erreur d'execution 1004"
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 juin 2016 à 11:15
Tu as lu l'aide en diagonale, apparemment.
La destination est l'adresse d'une cellule
Et dans ton cas, cette adresse n'est pas établie.
Tu n'aurais pas fait cette erreur assez grossière si tu étais passé par une variable derlig .... comme je te l'avais montré.
et donc ===>>

derlig = Worksheets("SRA final").Range("B" & Rows.Count).End(xlUp).Row

Worksheets("etudiants").Range("A12:J17").Copy _
Destination:=Worksheets("SRA final").Range("B" & derlig + 1)

on peut bien évidemment éviter ce tremplin derlig, mais tu en es à tes débuts et vas donc rester sage.
0
cs_collina Messages postés 7 Date d'inscription vendredi 8 février 2008 Statut Membre Dernière intervention 30 juin 2016
Modifié par cs_collina le 2/06/2016 à 11:58
si je me permet de m'expliquer un peu ton code


Mais ca ne marche pas. le message d'erreur " la méthode copy de la classe range a échoué"



Private Sub R1_Click()

derlig = Worksheets("SRA final").Range("B" & Rows.Count).End(xlUp).Row
' derniere ligne de la colonne B de la feuille SRA final'

Worksheets("etudiants").Range("A12:J17").Copy _
Destination:=Worksheets("SRA final").Range("B" & derlig + 1)
'copie la plage de cellule A12:J17 dans la feuille etudiants vers la colonne B de la feuille SRA final'

End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 2/06/2016 à 12:46
J'ignore pourquoi cela "échoue" chez toi.
Il doit y avoir une raison (un nom de feuille peut-être mal orthographié ou inexistant dans ce classeur ? Plage de destination protégée en écriture ?)
Testé chez moi (ce n'était pas utile, mais ...) ===>> sans faille !
Et je ne peux venir sur ta machine pour y voir ce qu'il y a.

EDIT : ah oui ===>> j'espère que tu ne nous as pas caché des "petites choses sans importance", comme par exemple l'existence de cellules fusionnées dans la plage à copier ... car alors, ma foi ...

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
cs_collina Messages postés 7 Date d'inscription vendredi 8 février 2008 Statut Membre Dernière intervention 30 juin 2016
2 juin 2016 à 14:28
EDIT : ah oui ===>> j'espère que tu ne nous as pas caché des "petites choses sans importance", comme par exemple l'existence de cellules fusionnées dans la plage à copier ... car alors, ma foi ...


exactement il y'a des cellules fusionnées, comment faire dans ce cas?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 2/06/2016 à 16:20
Cesser de travailler avec des cellules fusionnées . Elle n'apportent absolument rien d'autre que des pièges à n'en plus finir et troublent Excel.
Pourquoi fusionner des cellules ? Excel est un tableur et il est maladroit de s'en servir comme traitement de texte.
Maintenant : si tu tiens vraiment à tes cellules fusionnées. Il va te falloir accepter de rentrer dans des complications :
1) - défusionner les cellules
2) - faire ta copie avec le code montré ci-dessus
3) - refusionner ces cellules
Très cher payé, tout ce mic-mac.

EDIT : et même si par souci de présentation ===>> regarde ce que fait ceci.
Dans une cellule (disons A1) : tu frappes du texte au delà de la largeur de la cellule.
Va ensuite dans son format ===>> alignement ===>> horizontal ===>> centrer sur plusieurs colonnes ===>> regarde le résultat (et aucune cellule fusionnée) !



________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
cs_collina Messages postés 7 Date d'inscription vendredi 8 février 2008 Statut Membre Dernière intervention 30 juin 2016
2 juin 2016 à 17:27
Merci je vais opté pour la solution sans fusion
merci pour tout

--
0
Rejoignez-nous