Run-time error ‘6’ : Overflow

apnart

XLDnaute Occasionnel
Bonjour,

J'ai un message d'erreur dans une de mes macros... j'avais testé ce code sur un "petit" fichier de test de 4000 lignes, ça marchait impec, je l'ai mis dans mon "gros" fichier d'un pe plus de 60000 lignes, et là : patatra !

Message d'erreur :

Code:
Run-time error ‘6’ :
Overflow

Si je clique sur Debug, je tombe sur la dernière ligne du code ci-dessous (j'ai mis les 2 précédentes pour montrer que je suis sur le bon onglet et que la variable est bien déclarée :

Code:
Dim RowDépartData As Integer
Sheets("Datas").Select
RowDépartData = Range("A1").End(xlDown).Offset(1, 0).Row    ' 1ère ligne vide dans Datas

Si vous aviez une idée d'où vient le problème, ça m'arrangerait beaucoup :)

Merci d'avance,
Bruno.
 

raskol

XLDnaute Nouveau
Re : Run-time error ‘6’ : Overflow

Bonjour,
Excusez moi de vous déranger, j'ai un problème dans mon stage, on ma confier un fichieer excel, ou je dois numéroté une série de 11000 enregistrement et de donner à chaque interval un numéro exemple de 1 jusqu'a 50 il faut donner le numéro 1 et puis de 51 jusqu'a 100 le numéro 2 et de 101 jusqu'a 150 le numéro 3 donc augmenté par 50
SVP une formule qui pourra m'aider à faire sa rapidement car j'ai essayer de le faire manuellement sa prend vraiment énormement de temps
MERCI
CI JOINT UN EXEMPL
 

Pièces jointes

  • EXC.xlsx
    106.6 KB · Affichages: 34

apnart

XLDnaute Occasionnel
Re : Run-time error ‘6’ : Overflow

Merci Dranreb pour le "Long", c'était bien ça :)

Si j'osais, je vous mettrais bien mon code complet pour voir si vous n'auriez pas mieux à me proposer.

Ma problématique :

J'ai un fichier "ESSN.xlsm" avec un onglet "Datas" et un onglet "Temporaire"
Dance l'onglet Datas, j'ai un gros historique de plus de 60000 lignes.

Je récupère régulièrement des données que je veux ajouter à mon historique.
Dans les données que je récupère, certaines sont déjà présentes dans mon historique, je suis donc obligé de vérifier si une donnée (colonne C) est déjà présente dans l'historique (un vlookup).

Ma macro fait donc ce tri, et colle les nouvelles données en bas de l'historique.

Cette macro prend pas mal de temps à s'exécuter, et j'imagine qu'il y a peut-être plus simple comme méthode.

Si vous avez des idées, welcome :eek:

Code:
Sub ImporteDatas()'
Application.ScreenUpdating = False                      ' Affichage des action de la macro OFF
'
  
FichierAimporter = Application.GetOpenFilename
If FichierAimporter = False Then Exit Sub


FormulaireWAIT.StartUpPosition = 1                      ' Formulaire pour affichage message d'attente
FormulaireWAIT.Show 0


' Efface les précédentes données
    Sheets("Temporaire").Select
    Cells.Select
    Selection.ClearContents
    Range("A1").Select
'
' Ouverture/copie du fichier à importer
    Workbooks.Open Filename:=FichierAimporter
    NomCourtFichierAimporter = ActiveWorkbook.Name
    Range("A2").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.Copy
'
' Colle les données
    Windows("ESSN.xlsm").Activate
    Sheets("Temporaire").Select
    Range("A1").Select
    ActiveSheet.Paste
'
' Fermeture fichier à importer
    Windows(NomCourtFichierAimporter).Activate
    Application.CutCopyMode = False
    ActiveWindow.Close
'
' Copie des lignes nouvelles


FormulaireWAIT.Repaint


Dim RowDépartData As Long
Dim BoucleLectureTemporaire As Long
Dim BoucleTemp As Long
Dim LectureTemporaire As String


Sheets("Datas").Select
'
RowDépartData = Range("A1").End(xlDown).Offset(1, 0).Row    ' 1ère ligne vide dans Datas
Sheets("Temporaire").Select
BoucleLectureTemporaire = Range("A1").End(xlDown).Row       ' Boucle = Nbre de lignes dans Temporaire


DébutBoucle:
For BoucleTemp = 1 To BoucleLectureTemporaire
    On Error Resume Next
    Sheets("Temporaire").Select
    LectureTemporaire = Cells(BoucleTemp, 3).Value
    x = Application.WorksheetFunction.VLookup(LectureTemporaire, Worksheets("Datas").Range("C:C"), 1, False)
    
    If Err.Number = 0 Then    ' La valeur existe
        Resume Next
    Else                      ' La valeur est nouvelle
        Sheets("Temporaire").Select
        Rows(BoucleTemp).Copy
        Sheets("Datas").Select
        Rows(RowDépartData).Select
        ActiveSheet.Paste
        RowDépartData = RowDépartData + 1
    End If
    On Error GoTo DébutBoucle
Next


Unload FormulaireWAIT


Application.ScreenUpdating = True                      ' Affichage des action de la macro ON
End Sub
 

Dranreb

XLDnaute Barbatruc
Re : Run-time error ‘6’ : Overflow

Je parlais de tableaux de Variant en mémoire, où on y charge une bonne fois pour toute au début de la procédure tout le contenu d'une plage. Ça accélère considérablement les traitements d'accéder ensuite à leurs éléments en mémoire plutôt que d'utiliser des milliers de fois Cells ou Range pour une seule cellule à chaque fois.
 

Statistiques des forums

Discussions
312 231
Messages
2 086 449
Membres
103 213
dernier inscrit
Poupoule