OVH Cloud OVH Cloud

erreur 1004

15 réponses
Avatar
daniel M.
bonjour
Selection.AutoFill Destination:=Range("Ao3:Aq10000"), Type:=xlFillDefault
à cette action dans une macro j'obtiens le message d'erreur suivant:
erreur d'execution 1004
la selection est trop grande
merci de votre aide
daniel

5 réponses

1 2
Avatar
daniel M.
Non non il n'y a rien de confidentiel...
C'est trés trés sympa de votre part de vouloir approfondir le problême pour
moi et je vous en remerçie.
quand vous parlez de code événementiel je pense qu'il s'agit du code de la
macro...aussi vous trouverez çelà ci dessous mais je pense qu'il ne vous
sera pas facile de vous y retrouver vu ma façon rudimentaire de construire
les macros (avec l'enregistreur) mais bon...
En gros il s'agit de rassembler dans une feuille les coordonnées des clients
se trouvant dans 2 autres feuilles (les clients en cours et les clients en
archive) tout en faisant un contrôle qu'un même client (mêmes coordonnées
géographiques) ne figure pas deux ou plusieurs fois avec des codes clients
differents.
cette base servant à signaler, à chaque saisie de nouveau client si ce
nouveau client existe déjà ou pas - et si oui - lui affecter le même code
client que dans cette base.

Sub clients_mise_a_jour()
'
' clients_mise_a_jour Macro
' Macro enregistrée le 05/12/00 par MACHU Daniel

'prévu pour 15000 clients (5000 clients en cours + 10 000 clients archives)
'efface clients
Sheets("clients").Select
Range("A2:L15000").Select
Application.CutCopyMode = False
Selection.ClearContents
'colonne nom
Sheets("LIVRAISON").Select
Application.Goto Reference:="R4C3:R5000C3"
Application.CutCopyMode = False
Selection.Copy
Sheets("clients").Select
Range("a2").Select
ActiveSheet.Paste

'colonne code client
Sheets("LIVRAISON").Select
Application.Goto Reference:="R4C77:R5000C77"
Application.CutCopyMode = False
Selection.Copy
Sheets("clients").Select
Range("B2").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks: _
False, Transpose:úlse

'mr mme melle
Sheets("LIVRAISON").Select
Application.Goto Reference:="R4C51:R5000C51"
Selection.Copy
Sheets("clients").Select
Range("C2").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks: _
False, Transpose:úlse

'prenom - adresse - adresse2 - cp - ville - pays
Sheets("LIVRAISON").Select
Application.Goto Reference:="R4C4:R5000C9"
Application.CutCopyMode = False
Selection.Copy
Sheets("clients").Select
Range("d2").Select
ActiveSheet.Paste



'chiffre affaire client
Sheets("LIVRAISON").Select
Application.Goto Reference:="R4C86:R5000C86"
Application.CutCopyMode = False
Selection.Copy
Sheets("clients").Select
Range("k2").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks: _
False, Transpose:úlse

'colonne media
Sheets("LIVRAISON").Select
Application.Goto Reference:="R4C69:R5000C69"
Selection.Copy
Sheets("clients").Select
Range("L2").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks: _
False, Transpose:úlse


'ajoute les 10 000 anciens clients archives dans la feuille archives
clients
Sheets("archives-clients").Select
Application.Goto Reference:="R4C1:R10000C12"
Selection.Copy
Sheets("clients").Select
Range("A5001").Select
ActiveSheet.Paste

'trie les 15000 dans l'ordre croissant
Application.Goto Reference:="R2C1:R15000C12"
Application.CutCopyMode = False
Selection.Sort Key1:=Range("a2"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom


'enleve doublons par filtre elabore
Range("B1:B15000").AdvancedFilter Action:=xlFilterInPlace, Unique:=True



Range("A2:L15000").Select
Selection.Copy

Range("a20000").Select
ActiveSheet.Paste

Range("A2:L15000").Select
Application.CutCopyMode = False
ActiveSheet.ShowAllData
Selection.ClearContents
Range("a20000:L35000").Select
Selection.Copy
Range("A2").Select
ActiveSheet.Paste
Application.Goto Reference:="R20000C1:R35000C12"
Application.CutCopyMode = False
Selection.ClearContents
ActiveWindow.ScrollRow = 1

Application.Run "correspondance.xls!importer_clients"

Sheets("saisie commande").Select

End Sub

________________________________________________________________________

Sub importer_clients()
'
' importer_clients Macro
' Macro enregistrée le 30/10/2001 par MACHU Daniel
'
Windows("correspondance.xls").Activate
Sheets("clients").Select

'desscend toutes les formules jusqu'a 15000



Range("AA2:An2").Select
Selection.AutoFill Destination:=Range("AA2:An15000"),
Type:=xlFillDefault
Range("AA2:An15000").Select

Range("AO2:AQ2").Select
Selection.AutoFill Destination:=Range("AO2:AQ3"), Type:=xlFillDefault
Range("AO2:AQ3").Select
Range("AO3:AQ3").Select
Selection.AutoFill Destination:=Range("Ao3:Aq15000"),
Type:=xlFillDefault =====> c'est la que ça coince !!!

Range("Ao3:Aq15000").Select
'Application.EnableEvents = False
'Range("AO3:AQ3").AutoFill Destination:=Range("Ao3:Aq15000"),
Type:=xlFillDefault
'Application.EnableEvents = True

Selection.Copy
Range("AO3").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks: _
False, Transpose:úlse

'copie valeur de aa3 a aq15000
Application.Goto Reference:="R3C27:R15000C43"
Selection.Copy
Range("AA3").Select
ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:úlse, _
IconFileName:úlse


'
End Sub

"Daniel.M" a écrit dans le message de
news:%
Bonjour daniel,

Il faudrait voir le code événementiel de la feuille au complet (pour
pouvoir

l'exécuter sur nos machines) : tes chances d'obtenir la bonne solution
augmenterait d'autant.
Parce que ce n'est pas évident si tu rajoutes des infos à chaque réponse.

Alors, si le code n'est pas 'top secret', publie-le ici. Sinon, perso, je
n'arrive pas à trouver ce qui cloche.

Salutations,

Daniel M.


"daniel M." wrote in message
news:%
Bonjour daniel,
je te remercie pour tes explication , hélas aprés avoir modifié le code
selon tes indications j'obtiens toujours le même arrêt de la macro avec
le


message "erreur 1004 - la selection est trop grande"

(le plus étonnant c'est que la même macro comporte, quelques lignes
avant,


une autre opération d'autofill sur la même feuille mais sur une plage
beaucoup plus importante encore, et sans problême!).
Pour plus de précision j'ajouterai que la même macro fait auparavant une
opération de filtre élaboré (sur la même feuille) puis
'ActiveSheet.ShowAllData'...
merci de votre aide







Avatar
JièL Goubert
Bonjoir(c) Daniel.M

hou la la, Daniel.M qui répond à daniel M., ça fout le tournis ;-)))))))

--
JièL aime

Le 19/12/2004 15:07 vous avez écrit ceci :
Bonjour daniel,

Il faudrait voir le code événementiel de la feuille au complet (pour pouvoir
l'exécuter sur nos machines) : tes chances d'obtenir la bonne solution
augmenterait d'autant.
Parce que ce n'est pas évident si tu rajoutes des infos à chaque réponse.

Alors, si le code n'est pas 'top secret', publie-le ici. Sinon, perso, je
n'arrive pas à trouver ce qui cloche.

Salutations,

Daniel M.


"daniel M." wrote in message
news:%

Bonjour daniel,
je te remercie pour tes explication , hélas aprés avoir modifié le code
selon tes indications j'obtiens toujours le même arrêt de la macro avec le
message "erreur 1004 - la selection est trop grande"

(le plus étonnant c'est que la même macro comporte, quelques lignes avant,
une autre opération d'autofill sur la même feuille mais sur une plage
beaucoup plus importante encore, et sans problême!).
Pour plus de précision j'ajouterai que la même macro fait auparavant une
opération de filtre élaboré (sur la même feuille) puis
'ActiveSheet.ShowAllData'...
merci de votre aide




Avatar
Daniel.M
Bonjour,

Je ne sais pas si ce code est activé suite à un événement de la feuille ou non
(mettons que non)

Premièrement, tu serais mieux d'utiliser des commandes du type:

'prévu pour 15000 clients (5000 clients en cours + 10 000 clients archives)
'efface clients
Sheets("clients").Range("A2:L15000").ClearContents 'enlève anciennes valeurs
'colonne nom
Sheets("clients").Range("a2").Resize(4997, 1).Value = _
Sheets("LIVRAISON").Range("C4:C5000").Value
'colonne code client
Sheets("clients").Range("B2").Resize(4997, 1).Value = _
Sheets("LIVRAISON").Range("BY4:BY5000")
'mr mme melle
Sheets("clients").Range("C2").Resize(4997, 1).Value = _
Sheets("LIVRAISON").Range("AY4:AY5000")
'prenom - adresse - adresse2 - cp - ville - pays
Sheets("clients").Range("D2").Resize(4997, 6).Value = _
Sheets("LIVRAISON").Range("D4:I5000")

En résumé, arrête de SELECTionner et procède aux commandes directement (en
modifiant le code généré par l'enregistreur).

Je te laisse faire les autres :-))

Deuxièmememt, je ne sais pas où la colonne J est renseignée. Pas plus que les
lignes 4999 et 5000.

Troisièmement, pour ton bug avec autofill (dans importer_clients), je ne suis
pas arrivé à reproduire le bug lorsque je le fais colonne par colonne. As-tu
essayé de le faire en 3 coups comme ceci:

Range("AO3").AutoFill Destination:=Range("AO3:AO15000"), Type:=xlFillDefault
Range("AP3").AutoFill Destination:=Range("AP3:AP15000"), Type:=xlFillDefault
Range("AQ3").AutoFill Destination:=Range("AQ3:AQ15000"), Type:=xlFillDefault

Je suppose que tu as des formules en AO3:AQ3. Car dans le cas contraire, une
simple copie de valeur suffirait.

Salutations,

Daniel M.
Avatar
daniel M.
bonjour daniel
tout d'abord merci de ton aide, d'autant plus que:
j'ai commencé par ceci:
Troisièmement, pour ton bug avec autofill (dans importer_clients), je ne
suis

pas arrivé à reproduire le bug lorsque je le fais colonne par colonne.
As-tu

essayé de le faire en 3 coups comme ceci:

Range("AO3").AutoFill Destination:=Range("AO3:AO15000"),
Type:=xlFillDefault

Range("AP3").AutoFill Destination:=Range("AP3:AP15000"),
Type:=xlFillDefault

Range("AQ3").AutoFill Destination:=Range("AQ3:AQ15000"),
Type:=xlFillDefault


ET CA MARCHE! :o)))
donc on ne va pas se casser la tête et on laisse comme celà!

Pour ce qui est de tes conseils sur les modifs à apporter aprés
l'enregistreur, j'ai l'impression que là tu me surestimes beaucoup! En
effet j'ai toujours procédé de façon à ne pas entrer dans la litterature
anglosaxone car il s'avère que mon esprit est totalement réfractaire à toute
langue étrangère, donc je me débrouille comme je peux et de temps en temps,
quand la difficulté est insurmontable je viens sur un groupe de discution
comme celui-ci solliciter la gentillesse et la patience de gens comme toi!.
J'ai fait de même avec mon site web, que j'ai conçu avec des outils qui
permettaient de ne pas entrer dans le code html...(chien-medaille.com) , si
tu veux une médaille je te l'offrirai volontier! :o)).
Enfin, à mon avis, ce n'est en approchant dangereusement la 6e décénie que
les boyaux de ma tête vont faire des progrés !! :o)).
Donc on a quand même fait un trés grand pas : ma macro fonctionne!!

bien amicalement
daniel
Un Homme qui sait se rendre heureux avec une simple illusion est infiniment
plus malin que celui qui se désespère avec la réalité.
Alphonse Allais


"Daniel.M" a écrit dans le message de
news:
Bonjour,

Je ne sais pas si ce code est activé suite à un événement de la feuille ou
non

(mettons que non)

Premièrement, tu serais mieux d'utiliser des commandes du type:

'prévu pour 15000 clients (5000 clients en cours + 10 000 clients
archives)

'efface clients
Sheets("clients").Range("A2:L15000").ClearContents 'enlève anciennes
valeurs

'colonne nom
Sheets("clients").Range("a2").Resize(4997, 1).Value = _
Sheets("LIVRAISON").Range("C4:C5000").Value
'colonne code client
Sheets("clients").Range("B2").Resize(4997, 1).Value = _
Sheets("LIVRAISON").Range("BY4:BY5000")
'mr mme melle
Sheets("clients").Range("C2").Resize(4997, 1).Value = _
Sheets("LIVRAISON").Range("AY4:AY5000")
'prenom - adresse - adresse2 - cp - ville - pays
Sheets("clients").Range("D2").Resize(4997, 6).Value = _
Sheets("LIVRAISON").Range("D4:I5000")

En résumé, arrête de SELECTionner et procède aux commandes directement (en
modifiant le code généré par l'enregistreur).

Je te laisse faire les autres :-))

Deuxièmememt, je ne sais pas où la colonne J est renseignée. Pas plus que
les

lignes 4999 et 5000.

Troisièmement, pour ton bug avec autofill (dans importer_clients), je ne
suis

pas arrivé à reproduire le bug lorsque je le fais colonne par colonne.
As-tu

essayé de le faire en 3 coups comme ceci:

Range("AO3").AutoFill Destination:=Range("AO3:AO15000"),
Type:=xlFillDefault

Range("AP3").AutoFill Destination:=Range("AP3:AP15000"),
Type:=xlFillDefault

Range("AQ3").AutoFill Destination:=Range("AQ3:AQ15000"),
Type:=xlFillDefault


Je suppose que tu as des formules en AO3:AQ3. Car dans le cas contraire,
une

simple copie de valeur suffirait.

Salutations,

Daniel M.




Avatar
Daniel.M
Bonsoir Daniel,

Content de voir que ça marche: c'est l'essentiel en effet.

Salutations,

Daniel M.
1 2