Automatiser Copier Coler Excel vba

Signaler
Messages postés
17
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
13 février 2009
-
Messages postés
17
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
13 février 2009
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
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)
Messages postés
17
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
13 février 2009

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.
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
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
Messages postés
17
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
13 février 2009

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éé
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
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
Messages postés
17
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
13 février 2009

ok merci et ça je le place où?par rapport à ma prog?avant?merci de ta patience
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
peu importe... Excel la retrouvera sans souci
Messages postés
17
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
13 février 2009

ca me met " la methode select de la classe range "à échoué??
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
le code que je t'ai filé en premier fonctionne-t'il ?
Messages postés
17
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
13 février 2009

Je ne l'ai pas essayé car ça me fait tout changer , je vais regarder
Messages postés
17
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
13 février 2009

Ca me met la même erreur, peut être ai je quelque chose à modifier par rapport à ma prog déjà créée...??
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
où t'es indiquée cette erreur ? A quelle ligne ?
Messages postés
17
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
13 février 2009

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"
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
mon code ne contenant pas cette méthode, je m'interroge sur le contenu de ton module...

que contient-il, au final ?
Messages postés
17
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
13 février 2009

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
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
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.
Messages postés
17
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
13 février 2009

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
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
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.
Messages postés
17
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
13 février 2009

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
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
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.