Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/01/2012, 21h44   #1
Invité régulier
 
Homme
Inscription : décembre 2011
Messages : 14
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 : 14
Points : 5
Points : 5
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 :
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
pirot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 22h23   #2
Membre Expert
 
Homme
Inscription : décembre 2011
Messages : 566
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 566
Points : 1 081
Points : 1 081
Bonsoir,

Citation:
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<<)

Citation:
comment faire pour dépasser les 255 ?
Remplacer ligne 9-10
Code :
1
2
lg = Len(Range("a4").Value)
Range("A4").Characters(Start:=lg + 1).Insert "a"
par
Code :
 Range("A4").Value = Range("A4").Value & "a"
BlueMonkey est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/01/2012, 13h52   #3
Invité régulier
 
Homme
Inscription : décembre 2011
Messages : 14
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 : 14
Points : 5
Points : 5
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
pirot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2012, 21h17   #4
Membre Expert
 
Homme
Inscription : décembre 2011
Messages : 566
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 566
Points : 1 081
Points : 1 081
Bonsoir,

Citation:
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 :
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 :
Range("A4").Value = Range("A4").Value & "a"
3) Restaurer la mise en forme des caractères par l'opération inverse de (1).
BlueMonkey est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2012, 19h25   #5
Invité régulier
 
Homme
Inscription : décembre 2011
Messages : 14
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 : 14
Points : 5
Points : 5
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
pirot est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 30/01/2012, 09h16   #6
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
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

-
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h44.


 
 
 
 
Partenaires

Hébergement Web