BiGOuF
Messages postés90Date d'inscriptionvendredi 13 décembre 2002StatutMembreDernière intervention12 décembre 2007
-
13 juin 2007 à 13:32
BiGOuF
Messages postés90Date d'inscriptionvendredi 13 décembre 2002StatutMembreDernière intervention12 décembre 2007
-
14 juin 2007 à 13:13
Bonjour à toutes et à tous,
Je vous soumet ici un problème fort embettant.
Je dois, via une macro(Office 2003) copier le contenu de certaines parties d'une sheet d'un autre fichier excel dans une de mes Sheet, et il me fait une erreur de Range("").selection , je m'explique.
Chaque jour, un fichier est généré (il contient plusieures sheet), et je voudrai donc que ma macro, à la fin du mois, me permettent de faire un résumé mensuel, et pour ce, il doit aller ouvrir le fichier de chaque jour, ouvrir la sheet adéquate, et séléctionner certaines cellules de cette sheet, pour les rassembler dans une sheet unique.
J'ai donc, pour m'aider (je suis débutant), enregistré une macro me permettant de faire la manipulation pour un fichier, que j'ai implémenté dans une boucle For, me permettant ainsi de fonctionner pour chaque mois.
Voici donc mon code
Private Sub cmd_executer_copies_Click()
annee = Range("B2")
mois = Range("C2")If mois "01" Or mois "03" Or mois = "05" Or mois = "07" Or mois = "08" Or mois = "10" Or mois = "12" Then
jours = 31
ElseIf mois = "02" Then If annee Mod 100 0 And annee Mod 400 0 Then
jours = 29
ElseIf annee Mod 100 <> 0 And annee Mod 4 = 0 Then
jours = 29
Else: jours = 28
End If
Else
jours = 30
End If
For i = 1 To jours
If i < 10 Then
j = "0" & i
Else
j = i
End If
ChDir "Z:\Opl_cs" & annee & "\Reports\Comparison_Markets_New" & annee & "-" & mois & ""
Workbooks.Open Filename:= _
"Z:\Opl_cs" & annee & "\Reports\Comparison_Markets_New" & annee & "-" & mois & "\Comp_Mark_" & annee & mois & j & ".XLS"
Sheets("Données").Select
Range("A1").Activate
Range("A1:A26,H1:K26").Select '<---Endroit où se situe l'erreur'1004' La méthode Select de la classe Range à échoué
Range("H1").Activate
Selection.Copy
Windows("Copies.xls").Activate
Range("A" & i * 26 + 2 & "").Paste
Windows("Comp_Mark_" & annee & mois & j & ".XLS").Close
Next i
End Sub
Je vous remercie d'avance si vous pouvez m'aider à résoudre ce problème :)
PS : Le code n'est pas parfait, mais il s'agit d'un premier jet.
BiGOuF
Messages postés90Date d'inscriptionvendredi 13 décembre 2002StatutMembreDernière intervention12 décembre 2007 13 juin 2007 à 13:50
Salut chez moi ça fonctionne, mais ça revient au même que de faire ça Range("A1:K26").Select <-- Malheureusement, non, car je ne dois pas prendre ce qu'il y a entre le A et le H , donc, je dois me limiter à A1->A26 et H1->K26 :)
Et concernant le Range("A1").Activate, j'ai oublié de le supprimer dans mon paste d'ici, mais l'erreur est toujours là ('1004' La méthode Select de la classe Range à échoué).
J'avoue que je ne comprend pas vraiment l'erreur qu'il me donne.
J'ai consulté l'aide, et ils expliquent que le problème peut venir du fait que les colonnes soient vides .... or, ce n'est pas le cas :s
Vous n’avez pas trouvé la réponse que vous recherchez ?
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 13 juin 2007 à 14:09
Salut à tous,
Jamais corrigé ni même invité à corriger ses errements, BigOuf continuera "ad vitam eternam" , je le crains, à poster dans la présente section (VB.Net) ses quesqtions relatives à VBA.
Responsabilité partagée, donc, dans ce genre d'affaire...
BiGOuF
Messages postés90Date d'inscriptionvendredi 13 décembre 2002StatutMembreDernière intervention12 décembre 2007 13 juin 2007 à 14:13
Private Sub cmd_executer_copies_Click()
annee = Range("B2")
mois = Range("C2")If mois "01" Or mois "03" Or mois = "05" Or mois = "07" Or mois = "08" Or mois = "10" Or mois = "12" Then
jours = 31
ElseIf mois = "02" Then If annee Mod 100 0 And annee Mod 400 0 Then
jours = 29
ElseIf annee Mod 100 <> 0 And annee Mod 4 = 0 Then
jours = 29
Else: jours = 28
End If
Else
jours = 30
End If
For i = 1 To jours
If i < 10 Then
j = "0" & i
Else
j = i
End If
ChDir "Z:\Opl_cs" & annee & "\Reports\Comparison_Markets_New" & annee & "-" & mois & ""
Workbooks.Open Filename:= _
"Z:\Opl_cs" & annee & "\Reports\Comparison_Markets_New" & annee & "-" & mois & "\Comp_Mark_" & annee & mois & j & ".XLS"
ActiveWorkbook.Sheets("Données").Select
ActiveWorkbook.Sheets("Données").Range("A1:A26,H1:K26").Select
Selection.Copy
Windows("Copies.xls").Activate
ActiveWorkbook.Sheets("Feuil2").Select
ActiveWorkbook.Sheets("Feuil2").Range("A" & i * 26 + 2 & "").Select
ActiveWorkbook.Sheets("Feuil2").Range("A" & i * 26 + 2 & "").Paste
'<--- Erreur d'exécution '438': Proprieté ou méthode non gérée par cet objet
Windows("Comp_Mark_" & annee & mois & j & ".XLS").Close
Next i
End Sub
Et ben, j'ai vraiment pas de chance moi ;)
J'espère qu'on va pas me dire de laisser tomber ca, je cherche depuis le début de la journée ;)
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 13 juin 2007 à 14:17
Et au passage, essaye de poster dans la bonne catégorie s'il te plait, parce que je sais pas si tu l'as remarqué sur d'autres post mais ça énerve beaucoup de monde.Thèmes / Visual Basic 6 / Langages dérivés / VBA /
BiGOuF
Messages postés90Date d'inscriptionvendredi 13 décembre 2002StatutMembreDernière intervention12 décembre 2007 13 juin 2007 à 14:18
il me fait toujours l'erreur '438' sur Selection.paste (c'est bien ActiveWorkbook.Sheets("Feuil2").Range("A" & i * 26 + 2 & "").Pasteque je dois remplacer par Selection.paste hein?)
BiGOuF
Messages postés90Date d'inscriptionvendredi 13 décembre 2002StatutMembreDernière intervention12 décembre 2007 14 juin 2007 à 10:56
non, j'ai toujours la même erreur.
Je viens de vérifier, il ne reste plus qu'à coller dans la case A1, mais il me fait toujours l'erreur 438, et j'avoue ne pas comprendre :s
BiGOuF
Messages postés90Date d'inscriptionvendredi 13 décembre 2002StatutMembreDernière intervention12 décembre 2007 14 juin 2007 à 11:31
Nan, j'ai toujours l'erreur 438 sur le Selection.Paste malheureusement :(
Voici mon code, au cas où j'aurais fait un mauvais copier-coller (on voit rarement ses erreurs, sinon, elles ne seraient plus présentes )
Private Sub cmd_executer_copies_Click()
annee = Range("B2")
mois = Range("C2")If mois "01" Or mois "03" Or mois = "05" Or mois = "07" Or mois = "08" Or mois = "10" Or mois = "12" Then
jours = 31
ElseIf mois = "02" Then If annee Mod 100 0 And annee Mod 400 0 Then
jours = 29
ElseIf annee Mod 100 <> 0 And annee Mod 4 = 0 Then
jours = 29
Else: jours = 28
End If
Else
jours = 30
End If
For i = 1 To jours
If i < 10 Then
j = "0" & i
Else
j = i
End If
ChDir "Z:\Opl_cs" & annee & "\Reports\Comparison_Markets_New" & annee & "-" & mois & ""
Workbooks.Open Filename:= _
"Z:\Opl_cs" & annee & "\Reports\Comparison_Markets_New" & annee & "-" & mois & "\Comp_Mark_" & annee & mois & j & ".XLS"
ActiveWorkbook.Sheets("Données").Select
ActiveWorkbook.Sheets("Données").Range("A1:A26,H1:K26").Select
Selection.Copy
Windows("Copies.xls").Activate
ActiveWorkbook.Sheets("Feuil2").Select
ActiveWorkbook.Sheets("Feuil2").Range("A" & i * 26 + 2).Select
Selection.Paste 'Endroit de l'erreur 438 Windows("Comp_Mark_" & annee & mois & j & ".XLS").Close
Next i
End Sub
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 14 juin 2007 à 11:34
Je reposte comme ça je me casse moins les yeux.
Private Sub cmd_executer_copies_Click()
annee = Range("B2")
mois = Range("C2")If mois "01" Or mois "03" Or mois = "05" Or mois = "07" Or mois = "08" Or mois = "10" Or mois = "12" Then
jours = 31
ElseIf mois = "02" Then If annee Mod 100 0 And annee Mod 400 0 Then
jours = 29
ElseIf annee Mod 100 <> 0 And annee Mod 4 = 0 Then
jours = 29
Else: jours = 28
End If
Else
jours = 30
End If
For i = 1 To jours
If i < 10 Then
j = "0" & i
Else
j = i
End If
ChDir "Z:\Opl_cs" & annee & "\Reports\Comparison_Markets_New" & annee & "-" & mois & ""
Workbooks.Open Filename:= _
"Z:\Opl_cs" & annee & "\Reports\Comparison_Markets_New" & annee & "-" & mois & "\Comp_Mark_" & annee & mois & j & ".XLS"
ActiveWorkbook.Sheets("Données").Select
ActiveWorkbook.Sheets("Données").Range("A1:A26,H1:K26").Select
Selection.Copy
Windows("Copies.xls").Activate
ActiveWorkbook.Sheets("Feuil2").Select
ActiveWorkbook.Sheets("Feuil2").Range("A" & i * 26 + 2).Select
Selection.Paste 'Endroit de l'erreur 438
Windows("Comp_Mark_" & annee & mois & j & ".XLS").Close
Next i
End Sub
BiGOuF
Messages postés90Date d'inscriptionvendredi 13 décembre 2002StatutMembreDernière intervention12 décembre 2007 14 juin 2007 à 11:53
Je viens de tenter un remplacement :
Range("A" & i * 26 + 2).PasteSpecial
'Selection.Paste 'Endroit de l'erreur 438
Maintenant, il me met des "VRAI" toutes les 28 cases (mais rien entre)... maintenant, je peux concevoir que le pastespecial ne soit pas la bonne methode, mais quelle est la bonne alors ... les mystères de l'informatique :)
Quand je fais Range("A" & i * 26 + 2). , il ne me propose que "PasteSpecial" comme sous-menu, et pas de paste ... même chose, quand je fais Selection. , aucun menu ne s'affiche, le problème ne viendrait-il pas de là ?
Il s'agirait donc d'une mauvaise methode pour l'objet selectionné (en l'occurence, une cellule).