VBA EXCEL : copier coller des valeurs automatiquement

VBA EXCEL : copier coller des valeurs automatiquement - VB/VBA/VBS - Programmation

Marsh Posté le 26-05-2011 à 13:50:21    

Bonjour à tous,
 
Pour mon travail, je dis copier les valeurs d'un fichier A pour les coller dans un autre fichier B. Comme le fichier A  est rempli très souvent, l'idée est d'arriver à le faire automatiquement.
J'ai trouvé une macro sur internet qui répond à ce que j'attend.
Le soucis est qu'il semble y avoir une erreure quelque part.
 
Voici le code :
 
Privat Sub CommandBouton1()
Dim classeurSource As workbook, classeurDestination As Workbook
'ouvrir le classeur source (en lecture seule)
Set classeurSource=Aplication.Workbooks.Open("C:\....\exo suivi argent de poche adultes.xls", ,True)
'définir le classeur destination
Set classeurDestination= ThisWorkbook
'copier les données de la feuille"essai" du classeur source vers la feuille "aaa" du classeur destination
classeurSource.Sheets("essai" ).Cells.Copy
classeurDestination.Sheets("aaa" ).Range("A1" )
'fermer le classeur source
classeurSource.close False
 
End Sub
 
Voila.
Quand je lance la macro, elle bloque à  
classeurDestination.Sheets("aaa" ).Range("A1" )
et me dit qu'il y a une erreur d'execution (numéro 438) car "propriété ou méthode non géré par cet objet"
 
Quelqu'un saurai de quoi il s'agit???
merci d'avance
julie

Reply

Marsh Posté le 26-05-2011 à 13:50:21   

Reply

Marsh Posté le 26-05-2011 à 16:00:42    

Il manque le mot "Paste".
Normalement, cela devrait être

classeurDestination.Sheets("aaa" ).Range("A1" ).Paste


 
Edit : Ou bien le problème viendrait peut-être d'un retour à la ligne qui ne devra pas avoir lieu.
Par exemple au lieu de

classeurSource.Sheets("essai" ).Cells.Copy  
classeurDestination.Sheets("aaa" ).Range("A1" )


Il faudrait écrire tout sur la même ligne

classeurSource.Sheets("essai" ).Cells.Copy classeurDestination.Sheets("aaa" ).Range("A1" )


Message édité par olivthill le 26-05-2011 à 16:25:22
Reply

Marsh Posté le 26-05-2011 à 16:52:44    

merciiiiiiiiiiiiiiiiiiiiiiiiiii olivthill
ca fonctionne!!!
a bientôt

Reply

Marsh Posté le 27-05-2011 à 14:35:09    

Bonjour,
Je fais encore appel à votre savoir.
La macro que j'ai fonctionne très bien.
 
Private Sub CommandBouton1()  
Dim classeurSource As workbook, classeurDestination As Workbook  
'ouvrir le classeur source (en lecture seule)  
Set classeurSource=Aplication.Workbooks.Open("C:\....\exo suivi argent de poche adultes.xls", ,True)  
'définir le classeur destination  
Set classeurDestination= ThisWorkbook  
'copier les données de la feuille"essai" du classeur source vers la feuille "aaa" du classeur destination  
classeurSource.Sheets("essai" ).Cells.Copy classeurDestination.Sheets("aaa" ).Range("A1" )  
'fermer le classeur source  
classeurSource.close False
end sub
 
A présent j'aimerais inclure une condition dans cette macro qui serais :
Si dans la colonne B du fichier A il y a la valeur :"Baulle", alors Colle uniquement les lignes qui contiennent cette valeur dans le fichier B.
vous croyez que c'est possible??
Comment faire???

Reply

Marsh Posté le 28-05-2011 à 00:42:27    

Oui, c'est possible, mais c'est plus compliqué qu'un bête copier-coller.
Il faut parcourir la sélection du 1er classeur avec une boucle, trouver la valeur voulue et si trouvée, recopier sur la première ligne vide trouvée du 2nd classeur l'intégralité de la ligne du 1er classeur.
 
Rien de très compliqué en soi, mais il faut connaitre un peu le vba pour ça.


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 30-05-2011 à 11:36:19    

Merci Otobox pour ta réponse,
 
Je suis novice en VBA, généralement j'arrive à me débrouiller en recopiant par ci par là des bouts de macro, et en bidouillant un peu les codes...
Pas très pratique parfois, ça me prend beaucoup de temps pour arriver à faire des trucs simple...
Une boucle c'est quoi? Do...Loop par exemple??
Ou dois-je préciser la condition a rechercher???
Je poste mon code de base, celui qui dit à la macro d'ouvrir le fichier A, de copier les valeures, et de les coller sur le fichier B.
 
Privat Sub CommandBouton1()  
Dim classeurSource As workbook, classeurDestination As Workbook  
'ouvrir le classeur source (en lecture seule)  
Set classeurSource=Aplication.Workbooks.Open("C:\....\exo suivi argent de poche adultes.xls", ,True)  
'définir le classeur destination  
Set classeurDestination= ThisWorkbook  
'copier les données de la feuille"essai" du classeur source vers la feuille "aaa" du classeur destination  
classeurSource.Sheets("essai" ).Cells.Copy classeurDestination.Sheets("aaa" ).Range("A1" )  
'fermer le classeur source  
classeurSource.close False  
 
End Sub  
 
Je ne sais pas si on peut insérer une condition là dedans ou si je dois changer de code pour cela.
Merci de me répondre
julielef  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed