Erreur 400

Fermé
Stien - Modifié par pijaku le 17/08/2015 à 14:54
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 17 août 2015 à 16:28
Bonjour,

J'ai un petit soucis d'erreur 400 dans mon code et je ne trouve absolument pas la provenance. J'ai cherché sur les forums mais je n'ai rien trouvé qui m'a aidé avec ce problème. Je vous laisse mon code en espérant que quelqu'un soit plus calé que moi.

Sub Macro_Test()

ActiveSheet.Name = "M1"

Dim fois As Long

Dim shMR As Worksheet
 

Set shMR = Sheets.Add(After:=Sheets(Sheets.Count))
 

shMR.Name = "Mapping Result"

Dim shdate As Worksheet

Set shdate = Sheets.Add(After:=Sheets(Sheets.Count))

shdate.Name = "Date"



For fois = 1 To 4

Sheets("M1").Activate
Range("G1:G" & Range("C400000").End(xlUp).Row).Copy
'On peut agrandir le 400 000 pour un fichier qui fait plus de 400 000 lignes
Sheets("Mapping Result").Range("B" & Rows.Count).End(xlUp)(3).PasteSpecial Paste:=xlPasteValues

Next fois


L'erreur se met une fois que la boucle est passée 3 fois. Il me manque donc un copier coller pour finir ma macro.

Le plus curieux c'est que j'ai à nouveau cette erreur dans ma macro suivante :
Sub Test_2()

Sheets("M1").Activate
Range("H1048576").Select
Selection.End(xlUp).Select
Range(Selection, Selection.End(xlUp)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mapping Result").Range("C" & Rows.Count).End(xlUp)(3).PasteSpecial Paste:=xlPasteValues

Sheets("M1").Activate
Range("I1048576").Select
Selection.End(xlUp).Select
Range(Selection, Selection.End(xlUp)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mapping Result").Range("C" & Rows.Count).End(xlUp)(3).PasteSpecial Paste:=xlPasteValues
    
Sheets("M1").Activate
Range("J1048576").Select
Selection.End(xlUp).Select
Range(Selection, Selection.End(xlUp)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mapping Result").Range("C" & Rows.Count).End(xlUp)(3).PasteSpecial Paste:=xlPasteValues


'Ici se situe l'erreur 400 ça ne me colle pas mon dernier block.

Sheets("M1").Activate
Range("K1048576").Select
Selection.End(xlUp).Select
Range(Selection, Selection.End(xlUp)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Mapping Result").Range("C" & Rows.Count).End(xlUp)(3).PasteSpecial Paste:=xlPasteValues


End Sub



Cela peut être du au nombre de ligne maximal d'excel ? je suis à 1 021 012 et je souhaite encore en coller 400 000.

Je suis sous Excel 2012

3 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
17 août 2015 à 15:16
Bonjour,

Sure que vous ne pouvez pas mettre 1421012 lignes dans 1048576 maxi lignes pour excel2007-2013
0
Oui j'y ai seulement pensé par la suite, il existe peut-être une solution pour utiliser plus de lignes ? Mon fichier final doit-être en csv, je peux peut-être utiliser un autre logiciel ? des idées ?
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
17 août 2015 à 15:20
Une base de données serait à conseiller pour ce genre de besoin.
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
17 août 2015 à 15:22
Tu dépasses, je pense, le nombre de lignes maximum d'un onglet dans Excel qui, après la version Office 2003, est passé de 65 536 lignes à 1 048 576 lignes.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 17/08/2015 à 16:31
Re,

ecrire le fichier CSV de cette facon, voir le format des donnees dans le fichier CSV:

Sub Test_2()
    Dim Fichier_CSV As String
    Dim Chemin As String
    Dim TInfos As Range
    
    'adaptez le chemin et le nom de fichier
    Chemin = "D:\_ACSV\"
    Fichier = "MonCSV.CSV"
    
    Close
    
    TCol = Array("H", "I", "J", "K")
    Open Chemin & Fichier For Output As #1
    With Sheets("M1")
        For LC = 0 To 3
            derlig = .Range(TCol(LC) & Rows.Count).End(xlUp).Row
            Set TInfos = .Range(TCol(LC) & "1:" & TCol(LC) & derlig)
            FT = TInfos.Count
            For P = 1 To FT
                Print #1, TInfos(P)
            Next P
        Next LC
    End With
    Close
    
    MsgBox "Terminé"
    
End Sub
0