Copier une ligne et inserer en derniere position [Résolu]

Messages postés
7
Date d'inscription
vendredi 8 février 2008
Dernière intervention
30 juin 2016
- - Dernière réponse : cs_collina
Messages postés
7
Date d'inscription
vendredi 8 février 2008
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
--
Afficher la suite 

Votre réponse

8 réponses

Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
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.
Commenter la réponse de ucfoutu
Messages postés
7
Date d'inscription
vendredi 8 février 2008
Dernière intervention
30 juin 2016
0
Merci
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"
Commenter la réponse de cs_collina
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
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.
Commenter la réponse de ucfoutu
Messages postés
7
Date d'inscription
vendredi 8 février 2008
Dernière intervention
30 juin 2016
0
Merci
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
Commenter la réponse de cs_collina
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
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.
Commenter la réponse de ucfoutu
Messages postés
7
Date d'inscription
vendredi 8 février 2008
Dernière intervention
30 juin 2016
0
Merci
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?
Commenter la réponse de cs_collina
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
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.
Commenter la réponse de ucfoutu
Messages postés
7
Date d'inscription
vendredi 8 février 2008
Dernière intervention
30 juin 2016
0
Merci
Merci je vais opté pour la solution sans fusion
merci pour tout

--
Commenter la réponse de cs_collina

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.