IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

limitation de 255 caractères mais pourquoi [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 556
    Par défaut limitation de 255 caractères mais pourquoi
    Bonjour à vous chers amis,


    J'ai une sub auquel on m'a aider à construire jadis. Celle-ci permet de mettre en couleur des doublons lorsque 2 colonne sont identiques. On mets également des couleurs différentes pour chaque groupe de doublons.

    Je n'ai jamais eu de message d'erreur depuis plusieurs utilisations et hier, j'ai eu un message d'erreur 13. J'ai essayé plusieurs tentative de conversion des données étant donné la nature de l'erreur, jusqu'à je décide de trouver manuellement qu'elle serais la cellule qui cause cette erreur.


    Suite à mes manipulations, j'ai trouvé que si j'ai plus que 255 caractères, j'ai un message d'erreur mais j'essaie d'analyser la sub mais je ne trouve pas pourquoi. Est-ce que vous sauriez pourquoi qu'il y a une limitation quelques part.


    JE vous mets la sub en question ainsi qu'en rouge la ligne en question que le débugbueur me ramène :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Sub doublons_sur_2_colonnes(ByVal Feuille As String, ByVal Deb As String, ByVal Fin As String)  'Nom de la feuille || 1ère Col || 2ème Col" (pour doublons)
    Dim DLig As Long, Rg As Range, VA, C, Coll As New Collection, Cle As String, i As Long, L As String, Doublon, lig
    Dim Coll_Coul As New Collection, r As Byte, G As Byte, B As Byte, FT As Boolean
    Dim element As Variant
     
        With Sheets(Feuille)
            DLig = .Range(Deb & .Rows.Count).End(xlUp).Row
            C = Array(.Columns(Deb).Count, .Columns(Deb & ":" & Fin).Count)
            .Range(Deb & 2 & ":" & Deb & DLig).Interior.Color = xlNone
              
        For Each element In Union(.Range(Fin & 2 & ":" & Fin & DLig), .Range(Deb & 2 & ":" & Deb & DLig))
            element.Value = CleanTrim(element.Value)
    
        Next element
            
            VA = Application.Index(.Range(Deb & 1 & ":" & Fin & DLig).Value, Evaluate("ROW(1:" & DLig & ")"), C)
     
    On Error Resume Next ' --------------------------------------------------------------------------------------------------------------
                For i = 2 To UBound(VA)
                    Cle = VA(i, 1) & VA(i, 2)
                    Coll.Add i, Cle
                    If Err Then Err.Clear: L = Coll(Cle): Coll.Remove Cle: Coll.Add L & "|" & i, Cle
                Next
            i = 0
            Application.ScreenUpdating = False
                For Each Doublon In Coll
                    If InStr(Doublon, "|") > 0 Then
                        i = i + 1
                        For Each lig In Split(Doublon, "|")
                            If Rg Is Nothing Then Set Rg = .Range(Deb & lig) Else Set Rg = Union(Rg, .Range(Deb & lig))
                        Next
                        FT = False
                        Do
                            Randomize
                            r = 100 + (Round(Rnd * 135)): G = 150 + (Round(Rnd * 105)): B = 100 + (Round(Rnd * 155)):
                            Cle = r & "  |  " & G & "  |  " & B:        Coll_Coul.Add Cle, Cle
                            If Not Err Then FT = True Else Err.Clear
                        Loop Until FT = True
                        Rg.Interior.Color = RGB(r, G, B)
                    End If
                    Set Rg = Nothing
                Next
            Application.ScreenUpdating = True
    On Error GoTo 0 ' -------------------------------------------------------------------------------------------------------------------
        End With
        Set Coll = Nothing:     Set Coll_Coul = Nothing
    End Sub

    merci beaucoup pour votre aide ... je vais au moins trouver le pourquoi et en même temps dépendamment de la justification arrimer mes flutes

    merci encore pour votre temps, c'Est apprécié !!!

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 143
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 143
    Par défaut
    Bonjour jpvba,
    Citation Envoyé par jpvba Voir le message
    Est-ce que vous sauriez pourquoi qu'il y a une limitation quelques part.
    Pourquoi ? il faut demander aux développeurs mais il y a effectivement des limitations : spécifications-et-limites-relatives-à-excel

    Tu peux constater qu'il y a plusieurs limites à 255 qui est la valeur maximum d'un octet.

  3. #3
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 556
    Par défaut
    merci beaucoup,


    Je vais mettre cette connaissance dans ma boîte à poux !!!!

    Je crois que je pourrais mettre un msgbox si le nombre de caractères est supérieurs à 255 ...

    mille fois merci Anasecu !!!

  4. #4
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 556
    Par défaut
    Re-bonjour,


    Est-ce qu'il y a une façon de dire que ce qui est est en mémoire à une grandeur de caractères plus grande que 255


    PAr exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Len(Application.Index(.Range(Deb & 1 & ":" & Fin & DLig).Value, Evaluate("ROW(1:" & DLig & ")"), C)) >256

    (ceci ne fonctionne pas)


    ou dois je plutôt faire une loop qui est disons plus longue et moins rapide

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for each cell in mon range
    if len(cell)>255 then ...

    merci davance

  5. #5
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 556
    Par défaut
    J'ai trouver en regardant plus haut ... j'ai utilisé la boucle du haut qui était existante déjà

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Each element In Union(.Range(Fin & 2 & ":" & Fin & DLig), .Range(Deb & 2 & ":" & Deb & DLig))
            element.Value = CleanTrim(element.Value)
     
            If Len(element.Value) > 255 Then
                MsgBox "au moins une description a plus de 255 caractères limites de excel pour la mémoire", vbCritical
                Exit Sub
            End If

    merci encore à Anasecu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2013] Limite des 255 caractères dépassé
    Par Drami dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/02/2015, 15h09
  2. Réponses: 10
    Dernier message: 17/01/2015, 13h42
  3. Réponses: 14
    Dernier message: 16/04/2007, 20h53
  4. Export au format CSV limité à 255 caractères
    Par RKU01 dans le forum Access
    Réponses: 1
    Dernier message: 07/12/2006, 05h53
  5. Variables string limité à 255 caractères?
    Par krfa1 dans le forum Access
    Réponses: 7
    Dernier message: 27/01/2006, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo