Code VBA - Limite sur boucle

Akortys

XLDnaute Occasionnel
Bonjour,

Je viens vers vous parce que j'ai un problème qui me paraît inexplicable et du coup inexpliqué lorsque j'exécute un bout de VBA.
Ce bout de code me permet de coller des informations d'une feuille pour les recopier dans une autre feuille en faisant un traitement des données en fonction d'un paramétrage.

Code:
[SIZE=1]
Dim iDABIL As Long
    With Application: .ScreenUpdating = False: .Calculation = xlManual: .EnableEvents = False: End With
       For iDABIL = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
          With Range("A" & iDABIL)
          Sheets("DACalcul").Select
          'Range("A1").Select
                .Offset(, 0).FormulaR1C1 = "=FEUILLEINIT!RC[1]"
                'Lire cellule d'arrivée de la feuille choisie = RECHERCHE (feuille de depart!N°de col d'arrivée + diff de N° de col depart, plage de correspondance, .....)
                .Offset(, 1).FormulaR1C1 = "=IF(ISNA(VLOOKUP(FEUILLEINIT!RC[4],Paramètres!R3C10:R7C11,2,0)),"""",VLOOKUP(FEUILLEINIT!RC[4],Paramètres!R3C10:R7C11,2,0))"
                .Offset(, 2).FormulaR1C1 = "=IF(ISNA(VLOOKUP(FEUILLEINIT!RC[4],Paramètres!R3C10:R7C11,2,0)),"""",VLOOKUP(FEUILLEINIT!RC[4],Paramètres!R3C10:R7C11,2,0))"
                .Offset(, 3).FormulaR1C1 = "=IF(ISNA(VLOOKUP(FEUILLEINIT!RC[4],Paramètres!R3C10:R7C11,2,0)),"""",VLOOKUP(FEUILLEINIT!RC[4],Paramètres!R3C10:R7C11,2,0))"
                .Offset(, 4).FormulaR1C1 = "=IF(ISNA(VLOOKUP(FEUILLEINIT!RC[4],Paramètres!R3C10:R7C11,2,0)),"""",VLOOKUP(FEUILLEINIT!RC[4],Paramètres!R3C10:R7C11,2,0))"
                .Offset(, 5).FormulaR1C1 = "=IF(ISNA(VLOOKUP(FEUILLEINIT!RC[4],Paramètres!R3C10:R7C11,2,0)),"""",VLOOKUP(FEUILLEINIT!RC[4],Paramètres!R3C10:R7C11,2,0))"
                .Offset(, 6).FormulaR1C1 = "=IF(ISNA(VLOOKUP(FEUILLEINIT!RC[4],Paramètres!R3C10:R7C11,2,0)),"""",VLOOKUP(FEUILLEINIT!RC[4],Paramètres!R3C10:R7C11,2,0))"
                .Offset(, 7).FormulaR1C1 = "=IF(ISNA(VLOOKUP(FEUILLEINIT!RC[4],Paramètres!R3C10:R7C11,2,0)),"""",VLOOKUP(FEUILLEINIT!RC[4],Paramètres!R3C10:R7C11,2,0))"
                .Offset(, 8).FormulaR1C1 = "=IF(ISNA(VLOOKUP(FEUILLEINIT!RC[4],Paramètres!R3C10:R7C11,2,0)),"""",VLOOKUP(FEUILLEINIT!RC[4],Paramètres!R3C10:R7C11,2,0))"
                .Offset(, 9).FormulaR1C1 = "=FEUILLEINIT!RC[4]"
            End With
        Next iDABIL
    With Application: .EnableEvents = True: .Calculation = xlAutomatic: .ScreenUpdating = True: End With
[/SIZE]

Mon jeu de données sur la feuille "FEUILLEINIT" contient 10160 lignes et 130 colonnes.

Lorsque je l'exécute il me traite uniquement 5661 lignes.
Je pensais donc à un pb de données mais je les ai changé, changer la taille de mon jeu, .... rien n'y fait toujours ce seuil de 5661 lignes traitées.
J'ai également essayé de diminuer le nombre de colonnes en pensant que c’était lié à un pb de taille de l'ensemble des données mais pareil.

Message d'erreur à l'exécution : Erreur 1004

Je suis dans le néant.:confused:

Merci d'avance.

Par contre si j'ai un jeu avec 4000 lignes, pas d'erreur.
 
Dernière édition:

Akortys

XLDnaute Occasionnel
Re : Code VBA - Limite sur boucle

Re,

Oui je sais Pierrot93 que c'est difficile sans fichier, d'habitude j'en mets toujours un mais là j'ai beaucoup de données et des données sensibles.
Donc je suis en train de réaliser un fichier avec moins de données et surtout des données bidon.

Mais en attendant je teste tout ce qui vous passe par la tête.
 

Dranreb

XLDnaute Barbatruc
Re : Code VBA - Limite sur boucle

Bonjour.
Essayez comme ça :
VB:
Dim FSource As Worksheet, FCible As Worksheet, LignesCible As Range
Set FCible = ActiveSheet
Set FSource = Worksheets("FEUILLEINIT")
Set LignesCible = FCible.Rows(2).Resize(FSource.Cells(FSource.Rows.Count, "A").End(xlUp).Row - 1)
LignesCible.Columns("A").FormulaR1C1 = "=FEUILLEINIT!RC[1]"
LignesCible.Columns("B").Resize(,  9).FormulaR1C1 =  "=IF(ISNA(VLOOKUP(FEUILLEINIT!RC[4],Paramètres!R3C10:R7C11,2,0)),"""",VLOOKUP(FEUILLEINIT!RC[4],Paramètres!R3C10:R7C11,2,0))"
LignesCible.Columns("J").FormulaR1C1 = "=FEUILLEINIT!RC[4]"
(Sous réserve que j'aie bien compris quelles étaient la feuille source et cible et de laquelle ont devait prendre le nombre de lignes à garnir dans la cible)
 

Akortys

XLDnaute Occasionnel
Re : Code VBA - Limite sur boucle

Bonjour,

Bon après maintes recherches, il semblerait que j'ai trop de formule de calcul dans ma feuille.

J'ai une feuille qui est alimentée par le VBA indiqué ci-dessus mais cette feuille contient déjà des cellules avec les mêmes formules de calcul que dans le VBA. Il semblerait donc qu'il y ait un pb soit au nombre de formule de calcul soit avec la mémoire tampon lors de l'exécution du VBA.

J'ai donc supprimé toutes les formules de calcul initiales dans ma feuille pour ne laisser que le cod VBA faire le boulot.

Résultat impec je traite + de 12000 lignes.

Merci en tout cas pour vos réponses.
 

Discussions similaires

Réponses
1
Affichages
1 K
Réponses
0
Affichages
132
Réponses
13
Affichages
2 K

Statistiques des forums

Discussions
312 071
Messages
2 085 051
Membres
102 767
dernier inscrit
jmkp