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 :

en VBA, utilisation de .characters limité à 255? [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 16
    Par défaut en VBA, utilisation de .characters limité à 255?
    Bonjour,
    Un souci avec characters insert :
    Je n'arrive pas à dépasser 255 caractères dans une cellule.
    (alors que la fonction string y arrive)

    Pour être très bref, je schématise mon problème avec le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub hopla()
    ' met 600 fois le caractère a dans A1
    Range("A1:A10").ClearContents
    Range("a1") = String(600, "a")
    Range("a2") = Len(Range("a1").Value)
     
    ' et là, ne met "que" 255 fois le caractère a dans la cellule
    For i = 1 To 600
    lg = Len(Range("a4").Value)
    Range("A4").Characters(Start:=lg + 1).Insert "a"
    Next
    Range("a5") = Len(Range("a4").Value)
    End Sub
    et la question: que fais je de mal pour que la boucle coince à 255?
    pourquoi n'y a-t-il pas 600 caractères dans la cellule A4 ?
    et comment faire pour dépasser les 255 ?
    merci de vos suggestions
    pirot

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonsoir,

    Pourquoi n'y a-t-il pas 600 caractères dans la cellule A4 ?
    La propriétée Characters doit être limité à 255 indice. (cas similaires >>ici<<)

    comment faire pour dépasser les 255 ?
    Remplacer ligne 9-10
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lg = Len(Range("a4").Value)
    Range("A4").Characters(Start:=lg + 1).Insert "a"
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Range("A4").Value = Range("A4").Value & "a"

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 16
    Par défaut
    Bonjour,
    Non, modifier le code en utilisant range.value fait perde les mises en formes particulières de certains mots dans la cellule:
    le format des caractères se trouve uniformisé.
    Or je ne veux pas perdre les mises en forme individuelles des caractères dans la cellule.

    @+
    pirot

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonsoir,

    Modifier le code en utilisant range.value fait perde les mises en formes particulières de certains mots dans la cellule
    Pourquoi ne pas :

    1) Sauvegarder la mise en forme de chaque caractère, dans des tableaux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim c As Characters
    For Each c In Range("A4")
        With c.Font
            'enregistrer la config qui nous intéresse
            '.Color
            '.Italic
            '.Blod
            '.Size
        End With
    Next c
    2) Faire la concaténation par une méthode non limitée à 255 caractères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A4").Value = Range("A4").Value & "a"
    3) Restaurer la mise en forme des caractères par l'opération inverse de (1).

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 16
    Par défaut
    Bonjour,
    Effectivement cette solution fonctionne, mais elle est longue.
    Pour mon catalogue de 12 000 lignes, il faut environ 15 minutes.
    J'ai trouvé une autre solution, qui prend moins d'une minute
    (en parcourant mot à mot)
    merci e vos réponses
    @+
    pirot

  6. #6
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Citation Envoyé par pirot Voir le message
    J'ai trouvé une autre solution, qui prend moins d'une minute
    Vu que tu es venu demander de l'aide, le mieux serait de mettre la solution

    -

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

Discussions similaires

  1. Contourner la limitation à 255 caractères des string dans VBA
    Par eaglecarbo dans le forum Général VBA
    Réponses: 2
    Dernier message: 25/03/2015, 10h57
  2. [VBA] utilisation de thread
    Par nemesys971 dans le forum VBA Access
    Réponses: 19
    Dernier message: 10/10/2008, 10h49
  3. Variables string limité à 255 caractères?
    Par krfa1 dans le forum Access
    Réponses: 7
    Dernier message: 27/01/2006, 15h29
  4. [EXCEL][VBA] Utilisation des formules Excel en VBA
    Par Amanck dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/12/2005, 15h08
  5. Varchar limité à 255
    Par adilou1981 dans le forum Requêtes
    Réponses: 4
    Dernier message: 25/02/2005, 16h37

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