VBA - erreur 1004 - cellule a copier contient trop de caractère

Hello,

grâce a votre aide je commence a me débrouiller. Mon script avance bien. Merci !

Contexte :
Mon script concatène mes 36 onglets dans un seul et même onglet. la difficulté est que tous les onglets n'ont pas la même structure (les colonnes ne sont pas au même endroits, ou n'ont pas les même noms).

Je gère les exception avec mon script. je n'ai pas de soucis, tout fonctionne bien sauf quand j'importe (je copie) une cellule avec beaucoup de caractère (certaines en ont 5000, ou 8000)

Ca me renvoie une erreur 1004.

je suis sous office 365.

Voici le code qui "plante"

Set cel = w.Cells.Rows("1").Find(What:="REFERENCE") ' je recherche dans l'un de mes onglets le titre de colonne "REFERENCE"
If Not cel Is Nothing Then ' si la colonne existe bien
Sheets("RECAP").Cells(j, 15) = cel.Offset(i - 1, 0) ' je copie la cellule source via un offset de ma fonction de recherche, pour la coller en local dans RECAP.

Les variables :

Dim i As Long ' Variable pour definir le positionnement de la ligne dans l'onglet en cours
Dim j As Integer 'Variable pour definir le positionnement de la ligne dans l'onglet RECAP
Dim w As Worksheet ' Environment de travail
Dim cel As Range

encore une fois, il marche très bien tout le reste, j'ai juste un problème avec les cellule qui contiennent beaucoup de caractère.

J'ai réduit celle qui bloquait, elle est passé de 5000 caractère a 2000, et le script ne bloque plus a cet endroit, mais a la prochaine cellule qui contient 8000 caractères..

Avez vous une idée ? (problème de paramétrage, limitation sur le type de variable ?).

Les données présente dans l'excel sont sensible, si vous avez besoin, je peux mettre une version simplifiée.



Merci

seb

Bonjour,

Essayez peut-être

Sheets("RECAP").Cells(j, 15).Value = cel.Offset(i - 1, 0).Value

A+

bonjour à tous,

il y a une limite quant au nombre de caractères (32767) que peut contenir une cellule Excel.

Spécifications et limites relatives à Excel

Je suppose qu'après concaténation tu dépasses cette limite dans certains cas.

Bonjour

Merci pour vos retours,

BrunoM45, cela fait la même chose avec l'ajout du ".Value"

pour H2so4, il n'y a pas de concaténation au niveau des cellules.
Je copie les cellules une a une (en fonction de leur position) dans l'onglet Recap.

J'ai essayé de 'vider" la variable cel apres chaque case copiée, ( Set cel = Nothing ) mais c'est pareil.

Alors si possible

A+

Hello,

en pièce jointe le fichier réduit au minimum ainsi que le script.

La colonne PRIX est en fait le nombre de caractère de la cellule "Reference"

Si on lance le script, ca plante lors de la copie de DATA (D32). 12820 Caractères

Si on change la valeur de DATA(D32), alors le script s’arrêtera plus loin, sur la copie de DATA(D218) 10020 Caractères

Bonne fin de journée,

Seb

5forum-conf-mini.zip (697.40 Ko)

bonjour,

apparemment en utilisant la méthode copy cela passe.

                  Set cel = w.Cells.Rows("1").Find(What:="Reference")
                  If Not cel Is Nothing Then
                      cel.Offset(i - 1, 0).Copy Sheets("RECAP").Cells(j, 4)
                   End If

Salut h2so4

@Kubiak,

Maintenant que je vois le fichier, pourquoi ne pas faire ça en PQ (Power Query)

A+

Merci pour l'astuce.
ça fonctionne !

Pour ma culture, quelle est la différence entre la méthode que j'utilisais, et le COPY ?
j'ai cru lire que le copy importait aussi le "formatage" de la cellule ?

@BrunoM45, excellente question !
tout simplement parceque je ne savais pas que cela existait
J'ai vu que le VBA pouvait répondre a mon besoin et je n'ai pas cherché ailleurs.

J'ai pas mal avancé, il ne me reste que quelques points a prendre en compte :
* j'aimerai définir une largeur standard max pour certaine colonne (peu importe la taille du texte, sinon c'est illisible). Je cliquerai dans la cellule pour lire le contenu.
* j'aimerai que chaque ligne du fichier RECAP ne fasse pas plus d'une ligne de hauteur
* j'aimerai faire un "figer les volets" pour garder la première ligne de l'onglet RECAP toujours visible
* quand j'importe une date de type "29/03/2002", elle est collée sous forme de valeur nombre "34124". J'essaierai demain matin avec la méthode du COPY, la mise en forme devrait rester.

Bonne soirée,

Seb

Bonjour à tous,

si tu ne veux que la valeur sans les formats, en passant par une variable c'est bon aussi.

                   ch = cel.Offset(i - 1, 0).Value
                   Sheets("RECAP").Cells(j, 4) = ch

eric

Rechercher des sujets similaires à "vba erreur 1004 copier contient trop caractere"