Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Publipostage avec caractères spéciaux

  • Initiateur de la discussion Initiateur de la discussion marie49
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

marie49

XLDnaute Occasionnel
Bonjour,

Je dois réaliser un publipostage par l'intermèdiaire des macros excel : le publipostage marche sans problème. Cependant je constate qu'une partie d'une information est particulière ; lettre grecque.
Je ne peux pas les passer ici. J'envoie un exemple word de ce que doit donner le publipostage.

La saisie se fait dans un fichier excel par l'intermédiaire d'une listbox.

Quelqu'un a t-il déjà traité un cas identique? Quelle solution avez-vous adoptée?

Merci
Marie
 

Pièces jointes

Dernière édition:
Re : Publipostage avec caractères spéciaux

Bonjour Marie49 🙂,
Qu'entends-tu par ne pas pouvoir les poster ici ?
σ μ ε
Pour récupérer des caractères spéciaux (comme les grecs par exemple), tu peux aller chercher dans Démarrer -> Tous les programmes -> Accessoires -> Outils système -> Table des caractères.
Pour les récupérer en VBA, teste la macro
Code:
Sub test()
Dim I As Integer
For I = 900 To 974
Cells(I - 899, 1) = ChrW(I)
Cells(I - 899, 2) = I
Next I
End Sub
J'ai essayé dans un ComboBox sur un USF
Code:
Private Sub UserForm_Initialize()
Dim I As Integer
For I = 900 To 974
ComboBox1.AddItem ChrW(I)
Next I
End Sub
et ça fonctionne. J'espère que ça résoudra ton problème.
Bonne fin d'après-midi 😎
 
Re : Publipostage avec caractères spéciaux

Bonjour JNP,

Bonjour Marie49 🙂,
Qu'entends-tu par ne pas pouvoir les poster ici ?
σ μ ε
Désolée, je n'avais pas réussi à les mettre.


Merci pour ta réponse, cela me donne quelques pistes.
Mon problème est que l'utilisateur doit les saisir dans une listbox.
Existe t-il un équivalent clavier pour le chrw?
j'ai trouvé: " avec la touche Alt".

Merci
Marie
 
Dernière édition:
Re : Publipostage avec caractères spéciaux

Bonjour,

J'ai trouvé pour récupérer les lettres grecques mais j'avais oublié que je passais par une listview après la combobox. La listview perd le caractère et me donne : ( s, µ, e )

Seul le deuxième caractère passe...
Quelqu'un aurait-il une solution ?
En fait Alt 949 ne donne pas le dernier caractère parmi les 3 ci-dessus, dans excel.
Comment dois-je faire?

Marie
 
Dernière édition:
Re : Publipostage avec caractères spéciaux

Merci de répondre aussi rapidement.

Je pense que je n'ai pas assez expliqué...


J'utilise un userform pour modifier un tableau dans excel.
Pour cela je visualise les données des lignes par l'intermédiaire d'une listview (10 lignes avec 6 colonnes) dans l'userform, l'utilisateur peut sélectionner la ligne qu'il souhaite modifier...



Ainsi, la modification faite dans la listbox (j'ai plusieurs lignes pour une seule cellule du tableau) est alors répercutée dans la listview et ensuite la validation enregistre tout dans la feuille excel.

Ce n'est pas facile à expliquer sans exemple mais mon projet est trop lourd ...

Je pense que je vais voir pour que la modification se fasse automatiquement sur la feuille. Mais de toute façon, un nouveau passage par la listview va modifier mes valeurs....


Une idée?
Marie
 
Re : Publipostage avec caractères spéciaux

Re 🙂,
Effectivement, la ListView semble ne pas reconnaitre les ASCII supérieurs à 255...
Pourquoi ne pas passer par un encodage/décodage avec balise :
Encodage vers USF : Replace σ par <sigma>, μ par <mu> et ε par <epsilon>
Décodage vers la feuille : Replace <sigma> par σ, <mu> par μ et <epsilon> par ε
Si le Replace ne fonctionne pas sur la String, tu peux passer par une boucle sur tous les caractères et tester AscW pour récupérer le code ASCII, et utiliser ChrW pour restituer les caractères spéciaux vers la feuille.
Bon courage 😎
 
Re : Publipostage avec caractères spéciaux

Bonjour,

Je ne suis pas entré dans le détail du code mais voici une piste :
Les caractères > à 255 utilise "l'unicode"

Ces caractères unicode ne sont pas présents dans toutes les polices de caractères. Cela fonctionne avec Times, Arial.
Il faudrait donc vérifier quelle police est utilisée dans la listebox (geneva..)
 
Re : Publipostage avec caractères spéciaux


Bonjour Pyrof,
J'avais du Tahoma dans ma listview et aussi dans ma listbox. J'ai remplacé par du arial mais le problème persiste.

Je vais tenter la méthode de JPN. Le seul inconvénient est qu'elle ne sera valable que pour ces 3 caractères car je ne peux pas tous les traiter dans une sub.

En tout cas, un grand merci à ce forum. Toujours là pour m'aider ...

Marie
 
Re : Publipostage avec caractères spéciaux

Re 🙂,
Il semblerait que ça fonctionne
Code:
Sub test2()
Dim Essai As String
Essai = Range("D55")
Essai = Replace(Replace(Replace(Essai, ChrW(963), "<sigma>"), ChrW(956), "<mu>"), _
    ChrW(949), "<epsilon>")
Range("D56") = Essai
Essai = Replace(Replace(Replace(Essai, "<sigma>", ChrW(963)), "<mu>", ChrW(956)), _
    "<epsilon>", ChrW(949))
Range("D57") = Essai
End Sub
avec en D55 "test σ, μ et ε".
Je regarde pour une table d'équivalence...
A + 😎
 
Re : Publipostage avec caractères spéciaux

Bonjour JPN,

Je suis en train de tester ta proposition : j'ai un problème lors du passage de ma listview vers ma listbox. J'utilise un tableau pour avoir mes différentes lignes de ma cellule correspondants à plusieurs lignes de la listbox.

je pense que je ne suis pas trop claire.
Voici le code que j'utilise :
Code:
        ValeurContenu = LVDeroulement.SelectedItem.SubItems(6) 'valeur de la listview contenant les balises en guise des caractères grecs
        Call RemplaceBalise_Grec(ValeurContenu) 'Remplacement des balises par des caractères grecs
        [COLOR="Red"]tableau = Split(ValeurContenu, Chr(10))[/COLOR] 'récupération des lignes de la cellule dans un tableau pour ensuite l'afficher dans une listbox 
        
   LBContenu.Clear
    For i = 0 To UBound(tableau)
        LBContenu.AddItem tableau(i)
    Next


Il plante à la partie en rouge.

Il y a peut être une méthode plus simple...

Marie
 
Re : Publipostage avec caractères spéciaux

Re 🙂,
J'ai essayé un Split avec des caractères grecs, pas de souci. Par contre, est-ce qu'il ne faudrait pas utiliser ChrW(10) pour le Split, vu que Chr ne prend que jusque 255, et là, il tombe sur du 900 et quelque ?
D'autre part, j'ai développé la table de correspondance (à compléter, mon grec est loin 😀...). En pièce jointe. Sub Test3 dans la feuille1.
A + 😎
 

Pièces jointes

Dernière édition:
Re : Publipostage avec caractères spéciaux

Merci,

Pas encore regardé la table de correspondance, j'ai toujours une erreur (incompatibilité de type) avec le split. J'ai mis le remplacerBalise_Grec dans la boucle du for, après le split. Mais l'erreur persiste même pour des valeurs sans caractères spéciaux. C'est pourtant comme avant et ça marchait.

Tu as une idée?

Marie

J'ai trouvé ; c'était la déclaration du tableau, elle se trouvait sur la même ligne que ma nouvelle variable ValeurContenu!!! Grosse erreur
Ca marche
 
Dernière édition:
Re : Publipostage avec caractères spéciaux

J'ai regardé en quoi consistait la table de correspondance : j'ai compris le principe.

Je le mettrai en place cet après midi, dans une feuille invisible de mon fichier Menu.

Un gros gros merci pour m'aider à avancer à grand pas...

Marie
 
Re : Publipostage avec caractères spéciaux

Re 🙂,
Si tu as beaucoup de conversions à faire, il serait peut-être judicieux de publier un tableau que tu chargerais à l'ouverture du classeur, afin d'accélérer les accès.
Bon courage 😎
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

R
Réponses
1
Affichages
3 K
D
Réponses
8
Affichages
14 K
Nathalie
N
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…