MAcro pour Copier&insérer une ligne ailleurs
Résolu
Pyvoudelet
Messages postés
169
Date d'inscription
Statut
Membre
Dernière intervention
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
je suis en train de realiser un fichier excel 2007 comportant plusieurs feuilles. LA premiere feuille me sert de "base de données" et consiste en un tableau, où toutes les valeurs de la première colonne sont une plage nommée. LA deuxiemme feuille consiste en un endroit ou on peut rentrer un nouveau champ.
Ce que je voudrais faire, c est qu une fois qu on a rentré un nouveau champs dans la feuille 2, on puisse cliquer sur un bouton pour que ça copie tout ce champ dans le tableau de la feuille1, et en faisant directement partie de la plage.
comment faire?
merci pour vos conseils
je suis en train de realiser un fichier excel 2007 comportant plusieurs feuilles. LA premiere feuille me sert de "base de données" et consiste en un tableau, où toutes les valeurs de la première colonne sont une plage nommée. LA deuxiemme feuille consiste en un endroit ou on peut rentrer un nouveau champ.
Ce que je voudrais faire, c est qu une fois qu on a rentré un nouveau champs dans la feuille 2, on puisse cliquer sur un bouton pour que ça copie tout ce champ dans le tableau de la feuille1, et en faisant directement partie de la plage.
comment faire?
merci pour vos conseils
1 réponse
-
Bonjour,
Tu créés un bouton dans ta Feuil2, double clic dessus, Visual Basic s'ouvre avec ces deux lignes déjà écrites :Private Sub CommandButton1_Click() End Sub
Entre ces deux lignes place le code suivant :Sheets("Feuil2").Rows(1).Cut Sheets("base de données").Range("A65536").End(xlUp).Offset(1, 0)
Avant toute chose, sache qu'une modification faite par macro ne peux pas être annulée avec le bouton annulation d'Excel. C'est pourquoi je recommande vivement de toujours travailler sur un classeur "copie" de l'original, et de faire évoluer l'original au fur et à mesure des découvertes sur la copie...
Petite explication nécessaire à l'adaptation du code :
- Remplace Feuil2 et base de données par les noms de tes feuilles (toujours entre guillemets)
- Rows(1) représente la ligne que tu veux couper / coller (à remplacer par Rows(18) si tu veux couper la 18ème ligne de la feuille 2)
- Si tu ne veux pas couper mais copier, remplace cut par copy
N'hésite pas à revenir en cas de besoin...-
MErci pour l idee. voila ce que j ai fait :
Sub Bouton2_Clic()
Sheets("COMP.").Range("A4:I4").Copy
Sheets("COMPONENT").Range("A4").End(xlUp).Offset(1, 0)
End Sub
ou COMPONENT= base de donnees et COMP. ma feuille d entree.
MAIs ca me met qu il y a une erreur de syntaxe dans la troisieme ligne. Vois tu l erreur?
autres questions pour info :
je ne vois pas de commande qui indique qu on "colle" est ce normal?
ESt ce possible de dire de coller uniquement les "valeurs" des cellules concernées et non le reste comme la mise en forme. .
merci pour tes conseils. -
1- L'erreur de syntaxe est due au fait que les lignes 2 et 3 ne doivent en faire qu'une :
Range(source).Copy Range(destination)
Avec un espace entre .copy et le range destination...
2- Par conséquent oui c'est normal de ne pas voir apparaitre le "paste". Par défaut, dans cette syntaxe, VBA c'est qu'après l'espace vient le range ou il doit coller...
3- pour faire un copier / collage spécial "valeurs" la syntaxe n'est plus la même :Sub Bouton2_Clic() Sheets("COMP.").Range("A4:I4").Select Selection.Copy Sheets("COMPONENT").Range("A4").End(xlUp).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues End Sub
Ici par contre, tu va à la ligne entre le "copy" du range(source) et le "select" du range(destination)
Ca te va? -
JE comprends la manipulation mais cela me créé encore une erreur 1004 "la methode Select de la classe Range a échoué" . quand je clique sur debogage il me surligne la ligne
Sheets("COMPONENT").Range("A4").End(xlUp).Offset(1, 0).Select
voici pourtant ce que j avais mis :
Sub Bouton2_Clic()
Sheets("COMP.").Range("A4:I4").Select
Selection.Copy
Sheets("COMPONENT").Range("A4").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues
End Sub
MErci pour ta patience!!! -
-
Cela me refait la meme erreur.
Sub Bouton2_Clic()
Sheets("COMP.").Range("A4:I4").Select
Selection.Copy
Sheets("COMPONENT").Range("A65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues
End Sub
au lieu d inserer un ligne à la fin du tableau, est il possible de l'insérer au début, ainsi les nouvelles valeurs seront rajouter dans la plage nommée....
-