OVH Cloud OVH Cloud

Erreur lors de la copie d'une ligne

4 réponses
Avatar
Ludovic
Bonjour,

J'ai dans un programme une ligne qui me provoque une erreur 1004 :

Worksheets("Tmp").Rows(mPtr + 1) = Worksheets("Original").Rows(ii).Value

Cette même ligne s'exécute plus de 63000 fois mais pour un ii donné j'ai
l'erreur en question.
A l'exécution de cette ligne, il s'avère que seules les cellules A, B et C
ont été copiées et donc que le problème viendrait de la cellule D c'est à
dire cells(ii, 4) dans mon exemple.

Maintenant si je décompose le problème avec ce type de code
For jj = 1 To 11
Worksheets("Tmp").Cells(mPtr, jj) = Worksheets("Original").Cells(ii,
jj).Value
Next

le problème n'existe pas et le contenu des 11 cellules est bien copié.

Merci à ceux qui me diront où est le lézard.
--
Ludovic

4 réponses

Avatar
michdenis
Bonjour Ludovic,

À tout hasard,
Est-ce possible que ta cellule problématique (ii=4) soit une cellule fusionnée ?


Salutations!



"Ludovic" a écrit dans le message de news:
Bonjour,

J'ai dans un programme une ligne qui me provoque une erreur 1004 :

Worksheets("Tmp").Rows(mPtr + 1) = Worksheets("Original").Rows(ii).Value

Cette même ligne s'exécute plus de 63000 fois mais pour un ii donné j'ai
l'erreur en question.
A l'exécution de cette ligne, il s'avère que seules les cellules A, B et C
ont été copiées et donc que le problème viendrait de la cellule D c'est à
dire cells(ii, 4) dans mon exemple.

Maintenant si je décompose le problème avec ce type de code
For jj = 1 To 11
Worksheets("Tmp").Cells(mPtr, jj) = Worksheets("Original").Cells(ii,
jj).Value
Next

le problème n'existe pas et le contenu des 11 cellules est bien copié.

Merci à ceux qui me diront où est le lézard.
--
Ludovic
Avatar
Ludovic
Merci pour le coup de main ... mais la réponse est non. Pas de fusion.

Cells(ii, 4) contient en fait plusieurs milliers de caractères (3717) , mais
je ne vois pas pourquoi la copie de cells (ii,4) marche alors que la copie
de row (ii) la contenant ne marcherais pas.

Une autre idée ?

Ludovic

"michdenis" a écrit dans le message de news:

Bonjour Ludovic,

À tout hasard,
Est-ce possible que ta cellule problématique (ii=4) soit une cellule
fusionnée ?


Salutations!



"Ludovic" a écrit dans le message de news:

Bonjour,

J'ai dans un programme une ligne qui me provoque une erreur 1004 :

Worksheets("Tmp").Rows(mPtr + 1) = Worksheets("Original").Rows(ii).Value

Cette même ligne s'exécute plus de 63000 fois mais pour un ii donné j'ai
l'erreur en question.
A l'exécution de cette ligne, il s'avère que seules les cellules A, B et C
ont été copiées et donc que le problème viendrait de la cellule D c'est à
dire cells(ii, 4) dans mon exemple.

Maintenant si je décompose le problème avec ce type de code
For jj = 1 To 11
Worksheets("Tmp").Cells(mPtr, jj) =
Worksheets("Original").Cells(ii,
jj).Value
Next

le problème n'existe pas et le contenu des 11 cellules est bien copié.

Merci à ceux qui me diront où est le lézard.
--
Ludovic





Avatar
michdenis
Bonjour Ludovic,

En fait la limitation d'excel à ce type de manoeuvre est de 910 caractères. Au 911 ième caractère, cette façon de faire génère
l'erreur que tu connais. Je n'ai aucune idée des raisons qui se cachent derrière ce comportement d'excel.


Salutations!


"Ludovic" a écrit dans le message de news: %
Merci pour le coup de main ... mais la réponse est non. Pas de fusion.

Cells(ii, 4) contient en fait plusieurs milliers de caractères (3717) , mais
je ne vois pas pourquoi la copie de cells (ii,4) marche alors que la copie
de row (ii) la contenant ne marcherais pas.

Une autre idée ?

Ludovic

"michdenis" a écrit dans le message de news:

Bonjour Ludovic,

À tout hasard,
Est-ce possible que ta cellule problématique (ii=4) soit une cellule
fusionnée ?


Salutations!



"Ludovic" a écrit dans le message de news:

Bonjour,

J'ai dans un programme une ligne qui me provoque une erreur 1004 :

Worksheets("Tmp").Rows(mPtr + 1) = Worksheets("Original").Rows(ii).Value

Cette même ligne s'exécute plus de 63000 fois mais pour un ii donné j'ai
l'erreur en question.
A l'exécution de cette ligne, il s'avère que seules les cellules A, B et C
ont été copiées et donc que le problème viendrait de la cellule D c'est à
dire cells(ii, 4) dans mon exemple.

Maintenant si je décompose le problème avec ce type de code
For jj = 1 To 11
Worksheets("Tmp").Cells(mPtr, jj) > Worksheets("Original").Cells(ii,
jj).Value
Next

le problème n'existe pas et le contenu des 11 cellules est bien copié.

Merci à ceux qui me diront où est le lézard.
--
Ludovic





Avatar
Ludovic
Et bien merci pour l'info, qu'il faut en fait garder à l'esprit pour gérer
le handler d'erreur qui "va bien".

Cordialement.


"michdenis" a écrit dans le message de news:

Bonjour Ludovic,

En fait la limitation d'excel à ce type de manoeuvre est de 910
caractères. Au 911 ième caractère, cette façon de faire génère
l'erreur que tu connais. Je n'ai aucune idée des raisons qui se cachent
derrière ce comportement d'excel.


Salutations!


"Ludovic" a écrit dans le message de news:
%
Merci pour le coup de main ... mais la réponse est non. Pas de fusion.

Cells(ii, 4) contient en fait plusieurs milliers de caractères (3717) ,
mais
je ne vois pas pourquoi la copie de cells (ii,4) marche alors que la copie
de row (ii) la contenant ne marcherais pas.

Une autre idée ?

Ludovic

"michdenis" a écrit dans le message de news:

Bonjour Ludovic,

À tout hasard,
Est-ce possible que ta cellule problématique (ii=4) soit une cellule
fusionnée ?


Salutations!



"Ludovic" a écrit dans le message de news:

Bonjour,

J'ai dans un programme une ligne qui me provoque une erreur 1004 :

Worksheets("Tmp").Rows(mPtr + 1) =
Worksheets("Original").Rows(ii).Value

Cette même ligne s'exécute plus de 63000 fois mais pour un ii donné j'ai
l'erreur en question.
A l'exécution de cette ligne, il s'avère que seules les cellules A, B et
C
ont été copiées et donc que le problème viendrait de la cellule D c'est
à
dire cells(ii, 4) dans mon exemple.

Maintenant si je décompose le problème avec ce type de code
For jj = 1 To 11
Worksheets("Tmp").Cells(mPtr, jj) >> Worksheets("Original").Cells(ii,
jj).Value
Next

le problème n'existe pas et le contenu des 11 cellules est bien copié.

Merci à ceux qui me diront où est le lézard.
--
Ludovic