Automatiser Copier Coler Excel vba

vicctoria Messages postés 17 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 février 2009 - 13 févr. 2009 à 09:39
vicctoria Messages postés 17 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 février 2009 - 13 févr. 2009 à 14:55
Bonjour, voilà je souhaite copier des cellules d'un fichier dans un autre sous excel, pour cela, j'ai créé cette écriture avec laquelle ça marche.
Seulement je souhaite automatiser cela de sorte que dès que je saisi mon texte dans ma cellule de mon fichier 1, la cellule de mon fichier 2 se remplisse automatiquement.
Merci de m'aider
Vicctoria

Sub COPIER()
'Selectionne et Copie la Cellule indiquée
'
'Macro1 Macro
'Macro enregistrée le 02/02/2009 par auberta
'
Windows("NOTE DE FRAIS.xls").Activate
Sheets("Feuil1").Activate
Range("D8").Copy

'End Sub

'Sub COLLER()
'Selectionne puis Colle la Première Cellule Vide à partir de la Cellule indiquée
'
Windows("Budget deplacement 2009.xls").Activate
Sheets("2009").Select
Range("B44").Select

Do While ActiveCell.Value > ""
ActiveCell.Offset(1, 0).Select
Loop

ActiveSheet.Paste

End Sub

27 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
13 févr. 2009 à 10:08
Salut
Pas la peine de se torturer avec les macros : Suffit que les deux classeurs soient ouverts :
Dans une cellule du Classeur2, tu mets
   =[Classeur1.xls]NomFeuille!$B$2
A compléter si tu dois récupérer une Range de cellules

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
vicctoria Messages postés 17 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 février 2009
13 févr. 2009 à 10:17
Re, merci, mais je suis plus que débutante lol et je ne comprend pas du tout ce principe.
En fait si je veux automatiser c'est car dans mon classeur 1, je vais remplir plusieurs données à la suite dans la même cellule, ( ce fichier est prêt, et juste à compléter ) afin qu'au fur et à mesure , des que j ai sais un mot dans ma cellule, elle s'ajoute à ma première cellule vide de mon classeur deux, qui donc lui changera, contrairement à mon classeur un qui a chaque fermeture sera remit vierge.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
13 févr. 2009 à 10:36
tu peux jouer avec ce genre de macro :


Private Sub Worksheet_Change(ByVal Target As Range)
Dim oFreeCell As Range
If Target.Address = "$D$8" Then
Application.ScreenUpdating = False
With Workbooks.Open("C:\a.xls")
Set oFreeCell = .Worksheets("2009").Cells.SpecialCells(xlCellTypeLastCell)
Set oFreeCell = .Worksheets("2009").Cells(oFreeCell.Row + 1, 2)
oFreeCell.Value = Target.Value

.Close True
End With
Application.ScreenUpdating = True
End If
End Sub
0
vicctoria Messages postés 17 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 février 2009
13 févr. 2009 à 10:44
Oui merci, c'est super gentil mais en fait je cherchais une solution où je n'avais qu'a ajouter la programmation pour exécuter automatiquement dès saisie, car j'ai déjà passée du temps à chercher comment copier coller car je suis novice, et je ne veut pas que l'on ma donne une solution complète et différente toute faite, car je n'apprendrait pas lol
J aimerai juste pouvoir inclure la formule d automatisme à ce que j'ai déjà créé
0

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
13 févr. 2009 à 10:45
réutilise en ce cas l'evenement :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim oFreeCell As Range
If Target.Address = "$D$8" Then
Call COPIER
End If
End Sub
0
vicctoria Messages postés 17 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 février 2009
13 févr. 2009 à 10:50
ok merci et ça je le place où?par rapport à ma prog?avant?merci de ta patience
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
13 févr. 2009 à 10:52
peu importe... Excel la retrouvera sans souci
0
vicctoria Messages postés 17 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 février 2009
13 févr. 2009 à 10:56
ca me met " la methode select de la classe range "à échoué??
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
13 févr. 2009 à 11:04
le code que je t'ai filé en premier fonctionne-t'il ?
0
vicctoria Messages postés 17 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 février 2009
13 févr. 2009 à 11:05
Je ne l'ai pas essayé car ça me fait tout changer , je vais regarder
0
vicctoria Messages postés 17 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 février 2009
13 févr. 2009 à 11:08
Ca me met la même erreur, peut être ai je quelque chose à modifier par rapport à ma prog déjà créée...??
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
13 févr. 2009 à 11:10
où t'es indiquée cette erreur ? A quelle ligne ?
0
vicctoria Messages postés 17 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 février 2009
13 févr. 2009 à 11:16
Et bien justement, c'est bien là mon problème, car il n'y a pas de ligne indiquée mais just un msg box:
" La méthode select de la classe Range à échouée"
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
13 févr. 2009 à 11:20
mon code ne contenant pas cette méthode, je m'interroge sur le contenu de ton module...

que contient-il, au final ?
0
vicctoria Messages postés 17 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 février 2009
13 févr. 2009 à 11:23
J'ai écris dans les messages précédents la programmation que j'ai fait.
Et pour être plus claire: Mon fichier1 est une note de frais vierge où chaque personne de mon
service vient saisir son nom dans une B8 après chaque déplacement.
Dans
mon fichier 2, je souhaite que dès que mon collègue écrive son nom dans
B8 fichier1, il apparaisse automatiquement en A44 de mon fichier 2.
Puis donc en A45 pour le deuxième saisie, A46 pour la troisieme etc..(ce que j'ai résolu).
Le problème avec ma programmation c'est que je suis obligée d'activer ma macro manuellement à chaque saisie de nom.
Voilà
Est ce plus clair?
Merci beaucoup
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
13 févr. 2009 à 11:29
j'avais donc bien saisi la question.
je t'ai filé une macro unique censé remplacer ton code existant.

as tu bien supprimé TOUT TON code, ne serai-ce que pour tester mon code ?

vu que tu me parles d'une méthode Select qui plante, je pense que tu n'a pas testé mon code, ou que tu as conservé ta procédure nommée COPIER.

veux-tu bien, donc, supprimer TOUT TON code, et tester la première procédure que je t'ai soumise ?

j'ai développé ce code lequel ajoute le contenu de la cellule D8, une fois validé, à la suite des données de la feuille C:\a.xls

ce qui semble être précisément ce que tu cherches à réaliser.
0
vicctoria Messages postés 17 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 février 2009
13 févr. 2009 à 11:34
Après l'essai que tu m'indiques rien ne marche et toujours le même msg box....
C'est dur quand on y connait rien
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
13 févr. 2009 à 11:41
Reprenons.

la fenêtre VBA de ton classeur de saisie ne contient en tout et pour tout code que :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim oFreeCell As Range
If Target.Address = "$D$8" Then
Application.ScreenUpdating = False
With Workbooks.Open("C:\a.xls")
Set oFreeCell = .Worksheets("2009").Cells.SpecialCells(xlCellTypeLastCell)
Set oFreeCell = .Worksheets("2009").Cells(oFreeCell.Row + 1, 2)
oFreeCell.Value = Target.Value

.Close True
End With
Application.ScreenUpdating = True
End If
End Sub

Cette évènement Worksheet_Change sera déclenché pour toute validation de saisie ; passant en paramètre une Range décrivant la cellule modifiée de la feuille.

quand tu testes ladite macro, tu obtiens une erreur.

testes là en pas à pas :

- place ton curseur de saisie de texte sur la ligne
Application.ScreenUpdating = False
- presses F9
- cette ligne est normallement surlignée en bordeau.
- Retourne dans la feuille Excel
- Modifie le contenu de sa cellule D8, puis valide
- La macro entre normallement en action. Elle s'arrête sur le point d'arrêt précédemment installé
- Presse F8 plusieurs fois, observant la macro s'executer pas à pas.

tu dois pouvoir me dire, donc, a l'execution de quelle ligne ton message apparait.
0
vicctoria Messages postés 17 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 février 2009
13 févr. 2009 à 11:51
Alors en fait , je constate tout d'abord que ta programmation, en effet, me selectionne la cellule désirée (D8) mais ne la copie pas.
C'est déjà ça
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
13 févr. 2009 à 11:54
sélectionne ?

je ne sélectionne strictement rien... c'est une perte de temps qui force a raffraichir le contenu, c'est inutile.

a toi de modifier le contenu de D8, et la macro se déclenche. point barre.
0