[VBA] Limite atteinte pour variable "Variant"

Allergique

XLDnaute Junior
Bonjour,

J'ai une variable de type "Variant" dans laquelle j'ai ajouté du texte (résumé du livre pour base de données).
J'écris ensuite le contenu de la variable dans une des cellules de la feuille excel.

Le problème que lorsque le texte contenu dans la variable dépasse 875 lettres, la macro met un message d'erreur "1004 erreur définie par l"application ou par l'objet".
Jusque 875 lettres la macro fonctionne correctement.

Je pense que j'ai atteint la taille maximale en octets de la variable.

Est-ce bien la cause, et y-a-t-il un moyen d'augmenter la taille de la variable?


Merci pour votre aide
 

Lii

XLDnaute Impliqué
Re : [VBA] Limite atteinte pour variable "Variant"

Bonsoir ,

Je n'ai pas cherché la cause.
Pour contourner l'effet produit, tu peux, peut-être, utiliser plusieurs variables A1, A2 ... An et retourner leur concaténation (A1 & A2 & ... & An).
 

Allergique

XLDnaute Junior
Re : [VBA] Limite atteinte pour variable "Variant"

Re,

Après plusieurs heures à essayer, finalement ça ne fonctionne pas!!.
J'ai réussi à le faire fonctionner dans un fichier test mais dans mon fichier avec toutes les macros ça modifie je ne sais quoi, et plus rien ne fonctionne. Même en supprimant les lignes que j'ai inséré il bloque au même endroit, même si il n'y a que 5 lettres


Peut-être que quelqu'un d'autre qui passe sur ce message a une idée pour augmenter la taille de la variable de type variant?

bonsoir
 

mécano41

XLDnaute Accro
Re : [VBA] Limite atteinte pour variable "Variant"

Bonjour,

La limite théorique d'un Variant avec des caractères, c'est environ 2 milliards de caractères...et dans une cellule 32767 (si tu en mets plus à la main, il refuse, si c'est avec VBA il tronque - sans mettre d'erreur).

Cordialement

EDIT met un bout de code ici....
 
Dernière édition:

Allergique

XLDnaute Junior
Re : [VBA] Limite atteinte pour variable "Variant"

bonjour,

c'est intéressant de voir qu'on peut mettre 2 milliards de caractères! ça confirme donc qu'il faut que je recherche ailleurs l'erreur.

En creusant un peu j'ai pu voir que dans la variable "Tableau" les caractères sont bien présents. Je ne comprends pas ce qui empêche de les transférer dans une cellule.

voici un extrait de code: (en rouge l'endroit où il bloque)

Code:
Dim tableau As Variant

'Détermine la taille du tableau
tableau = Range("A2:Z" & Range("A65536").End(xlUp).Row)

(Déroulement de la macro de l'userform.....)

Dim Ctrl As Control
Dim i As Integer
Dim j As Integer
Dim typecontrole As String
Dim n As Integer

    n = 1
    
    'Pour chaque ligne du tableau
    For i = 1 To UBound(tableau)
    
    'Si la cellule colonne "A" et ligne "i" = titre série sélectionné listbox1
    If tableau(i, 1) = ListBox1 And tableau(i, 25) = ListBox2 Then
        
        'Enregistrement des Textbox et combobox
        For j = 2 To 24
        n = n + 1
        
            If j = 3 Or j = 4 Or j = 14 Or j = 19 Or j = 24 Then
                typecontrole = "combobox"
            Else
                typecontrole = "TextBox"
            End If
            
            tableau(i, n) = UserForm1(typecontrole & j)

        Next j
                    

        If nom <> "" Then 'si nouvelle image chargée
            'Enregistre le nom de l'image
            tableau(i, 26) = ActiveWorkbook.Path & "\Images\" & nom
        End If
        
        'Enlève le signe € du prix
        tableau(i, 12) = Replace(tableau(i, 12), " €", "")
        
        'Enlève les espaces à gauche du titre du volume
        tableau(i, 2) = LTrim(tableau(i, 2))
        
    End If
    
    Next i
    

'Ecrit les variables de "tableau" dans le cellules
[color=red][b]Range("A2:Z" & Range("A65536").End(xlUp).Row) = tableau[/b][/color]

Si ce code est insuffisant je peux mettre un lien vers le fichier mais avant il faut que je remanie un peu de code pour éviter qu'il mette des messages d'erreur (fichier avec des liens vers images du disque dur)

Merci!
a+
 

Allergique

XLDnaute Junior
Re : [VBA] Limite atteinte pour variable "Variant"

Bonsoir le forum,

Je me permets de faire remonter ce topic pour voir si quelqu'un a une idée de ce qui ne va pas dans le code de ma macro.

Le texte est bien dans la variable tableau(i,23), mais bloque toujours lors de l'enregistrement dans les cellules à la ligne suivante:
Code:
Range("A2:Z" & Range("A65536").End(xlUp).Row) = tableau

Merci pour votre aide
 

wilfried_42

XLDnaute Barbatruc
Re : [VBA] Limite atteinte pour variable "Variant"

Bonjour à tous

as tu fais un arret sur image sur cette ligne
Code:
Range("A2:Z" & Range("A65536").End(xlUp).Row) = tableau

et verifie ta variable n (pour avoir sa valeur tu passes ta souris dessus)

tu fais, n = n + 1
et ici, tableau(i, n) = UserForm1(typecontrole & j)

or je ne vois nul par une réinitialisation de n dans la boucle
au bout de 20 lignes tu as une tableau de (x, 480) à placer sur 255 colonnes
à mon avis il manque
Code:
    For i = 1 To UBound(tableau)
         [COLOR="Red"]n = 1[/COLOR]
         For j = 2 To 24
mais je n'ai peut etre pas tout compris
 

Allergique

XLDnaute Junior
Re : [VBA] Limite atteinte pour variable "Variant"

Bonsoir wilfried,

En fait n=1 est juste au dessus du code que j'ai coupé. Je n'ai pas voulu en mettre trop mais il est bien présent.

Quand je regarde les valeurs:

"n = n + 1": n=24

"tableau(i, n) = UserForm1(typecontrole & j)" : n=24

ce que je n'arrive pas à saisir c'est que le code marche quand la variable "tableau(i,23)" contient moins de 800 caractère et quelque, mais si tableau(i,23) contient 1000 caractères par exemple ça bloque!

je vais essayer de mettre le fichier complet en partage, ce sera plus explicite
 

wilfried_42

XLDnaute Barbatruc
Re : [VBA] Limite atteinte pour variable "Variant"

re:

voici un fichier, la macro met dans une vairable 1000 caracteres 'x'
ensuite la transfert dans a1
en a2 tu as une formule qui donne le nombre de caracteres de a1

tout est ok, je suis sur Excel 2002
 

Pièces jointes

  • nbcar1000.xls
    20.5 KB · Affichages: 128

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87