Macro pour copier colonne avec condition

Résolu/Fermé
Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016 - 20 oct. 2014 à 15:47
Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016 - 20 oct. 2014 à 18:22
Bonjour,


J'ai un essai de macro qui me permet de copier une colonne venant d'un fichier excel "Update Vol Prev" vers un second fichier Excel "Prévision_Vol_A Cube" et ça à la suite de ce qui a déjà été copié précédemment.

Voici le code:

Sub Macro1()

'Öffnen A
Workbooks.Open Filename:="Prévision_Vol_A Cube", UpdateLinks:=0

'Update Vol Prev
Windows("Update Vol Prev").Activate
Sheets("Retrieve Top 27 Month").Activate.Range("C7:C86").Copy
Windows("Prévision_Vol_A Cube").Activate
Worksheets("Vol Total Month").Range("DZ8").End(xlToLeft)(1, 2).Select
ActiveSheet.Paste
Application.CutCopyMode = False

'Schließen von file A
Workbooks("Prévision_Vol_A Cube").Close SaveChanges:=False

End Sub


J'ai pris une partie du code sur ce forum et j'ai tenté de l'adapter mais lorsque j'exécute le code il me met:
"erreur 424,
objet requis"

Et la ligne surlignée en jaune est la suivante:

Sheets("Retrieve Top 27 Month").Activate.Range("C7:C86").Copy 


Alors ma question est: que se passe-t-il? :D

J'avais essayé ce code en faisant le copier coller sur le même fichier et tout allait très bien. Mais ä partir du moment où le copier/coller concerne deux fichiers excel, ça ne va plus...

Je remercie d'avance celui qui pourra m'aider sur ce problüme j'en suis sûr très bête mais quand on apprend sur le tas, c'est moins évident. :)


Cordialement,

A voir également:

4 réponses

via55 Messages postés 14405 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 2 703
Modifié par via55 le 20/10/2014 à 15:54
Bonjour

Essaie de scinder ta ligne ainsi :
Sheets("Retrieve Top 27 Month").Activate
Sheets("Retrieve Top 27 Month").Range("C7:C86").Copy

Cdlmnt

"L'imagination est plus importante que le savoir." A. Einstein
0
Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016 2
20 oct. 2014 à 16:11
Hello Via55,

Merci pour ta rapidité.

J'ai scindé la ligne comme tu l'as dit mais apparemment ce n'était pas la seule erreur, la ligne suivante est fausse:
Worksheets("Vol Total Month").Range("DZ8").End(xlToLeft)(1, 2).Select


avec le message d'erreur suivant:
"Erreur 1004
La méthode Select de la classe Range a echoué"


Cordialement,
0
Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016 2
20 oct. 2014 à 16:18
En vrai je dirais même que je n'ai rien compris ä cette ligne de code.

De mon incompröhension doit venir l'erreur parce que j'ai bêtement recopié cette ligne. Que signifie-t-elle?
0
Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016 2
20 oct. 2014 à 16:35
Alors j'ai retravailler sur cette macro, elle fonctionne maintenant, il n'y a plus de message d'erreur. Par contre ä part l'ouverture et fermeture des fichiers, rien d'autre ne se passe. -_-

Voici le nouveau code:

Sub Macro1()

'Öffnen A
Workbooks.Open Filename:="Prévision_Vol_A Cube", UpdateLinks:=0

'Update Vol Prev
Windows("Update Vol Prev").Activate
Sheets("Retrieve Top 27 Month").Activate
Sheets("Retrieve Top 27 Month").Range("C7:C86").Copy
Windows("Prévision_Vol_A Cube").Activate
Sheets("Vol Total Month").Activate
Sheets("Vol Total Month").Range("FZ6").End(xlToLeft)(1, 2).Select
ActiveSheet.Paste
Application.CutCopyMode = False

'Schließen von file A
Workbooks("Prévision_Vol_A Cube").Close SaveChanges:=False

End Sub



Cordialement
0
via55 Messages postés 14405 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 2 703
20 oct. 2014 à 17:00
Je ne la comprends pas bien non plus

En fait ce que tu veux c'est trouver la dernier colonne remplie d'une ligne précise pour coller à la suite
donc
Worksheets("Vol Total Month").select 'pour selectionner la feuille
Dim DernCol As Integer
DernCol = Worksheets.("Vol Total Month")Range("D4").End(xlToRight).Column 'pour trouver la dernière colonne remplie à partir de D4 (adapter cette ref à ton fichier)
cells(4,derncol+1).select ' pour selectionner la 1ere cellule vide en ligne 4 (changer le n° de ligne si necessaire)

Cdlmnt
0
Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016 2
20 oct. 2014 à 18:21
Non, la colonne à copier sera toujours la même. Par contre c'est l'endroit où elle va être copiée qui change.

Par contre la suite de ce que tu as écrit convient mais je ne comprend pas trop la syntaxe parce que t'as rajouté un commentaire. Du coup j'ai un peu tout essayé, au final je suis revenu sur le code vu plus haut:

Sub Macro1()

'Öffnen A
Workbooks.Open Filename:="Prévision_Vol_A Cube", UpdateLinks:=0

'Update Vol Prev
Windows("Update Vol Prev").Activate
Sheets("Retrieve Top 27 Month").Activate
Sheets("Retrieve Top 27 Month").Range("C7:C86").Copy
Windows("Prévision_Vol_A Cube").Activate
Sheets("Vol Total Month").Activate
Sheets("Vol Total Month").Range("FZ6").End(xlToLeft)(1, 2).Select
ActiveSheet.Paste
Application.CutCopyMode = False

'Schließen von file A
Workbooks("Prévision_Vol_A Cube").Close SaveChanges:=True

End Sub


Celui-ci marche parfaitement.
0
Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016 2
20 oct. 2014 à 18:22
En tout cas merci pour ton aide, tu m'as permis de mieux comprendre ce que je faisais.


Cordialement
0