vicctoria
Messages postés17Date d'inscriptionmercredi 21 janvier 2009StatutMembreDernière intervention13 février 2009
-
13 févr. 2009 à 09:39
vicctoria
Messages postés17Date d'inscriptionmercredi 21 janvier 2009StatutMembreDernière intervention13 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
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 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)
vicctoria
Messages postés17Date d'inscriptionmercredi 21 janvier 2009StatutMembreDernière intervention13 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.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202171 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
vicctoria
Messages postés17Date d'inscriptionmercredi 21 janvier 2009StatutMembreDernière intervention13 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éé
Vous n’avez pas trouvé la réponse que vous recherchez ?
vicctoria
Messages postés17Date d'inscriptionmercredi 21 janvier 2009StatutMembreDernière intervention13 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"
vicctoria
Messages postés17Date d'inscriptionmercredi 21 janvier 2009StatutMembreDernière intervention13 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
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202171 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.