MAcro pour Copier&insérer une ligne ailleurs

Résolu/Fermé
Pyvoudelet Messages postés 166 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 18 mai 2020 - 12 oct. 2010 à 21:36
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 23 nov. 2010 à 08:33
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


A voir également:

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
13 oct. 2010 à 09:03
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...
1
Pyvoudelet Messages postés 166 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 18 mai 2020 12
13 oct. 2010 à 16:02
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.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
13 oct. 2010 à 16:11
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?
0
Pyvoudelet Messages postés 166 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 18 mai 2020 12
13 oct. 2010 à 16:42
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!!!
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
13 oct. 2010 à 16:56
Range("A4").End(xlUp) : commence en A4 et remonte jusqu'à la première cellule non vide... Ne va donc pas fonctionner.
La première cellule vide de la colonne A est :
Range("A65536").End(xlUp).Offset(1, 0)
0
Pyvoudelet Messages postés 166 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 18 mai 2020 12
13 oct. 2010 à 17:14
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....
0