Retour chariot Excel [Résolu]

Signaler
Messages postés
26
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
5 janvier 2008
-
Messages postés
229
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 juin 2007
-
Bonjour à tous

Voici mon problème :
J'ai un tableau Excel.
Je récupère le titre des colonnes du tableau dans une ComboBox (VBA).
Le problème c'est que lorsque je récupère des colonnes avec des titres contenant un retour chariot (Entrée) il le remplace dans la combo par deux carré ! Ensuite je dois retrouver la colonne contenant le titre sélectionné dans la combo, mais je n'y arrive pas puisque le titre est incorrect (il contient les deux carrés au lieux du retour chariot).

Exemple : §=carré
Titre de colonne : 
   nom
   composé
Affichage dans la combo :
   nom§§composé
La recherche s'effectue sur nom§§composé qui n'existe pas !

J'espère avoir été claire  mais surtout que vous pourrez m'aider
Merci

8 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
KC62, pour ton info VbCrLf

Cr pour Carriage return (retour de chariot)

Lf pour Line Feed (Saut de ligne)


Je n'ai pas la solution, mais j'ai remarqué qu'en Excel si tu mets

Range("A1") = "Je saute" & vbcrlf & "une ligne"

ça met un petit carreau blanc en guise de caractère "illisible" ou "inaffichable"

Avec Range("A1") = "Je saute" & vbcrlf & "une ligne"

ça ne met pas de signe


vbLf est l'équivalent de chr(10)

vbCrl est l'équivalent de chr(13)

Il faudrait probablement que tu t'amuses avec ces deux caractères


Un peu comme dit MichelXLD, tu peux utiliser cette fonction d'Excel ou celle de VB

Entete = Replace(Entete, vbCrLf, vbLf)

ou

Entete Replace(Entete, vbCrLf, chr(32))  ' chr(32) espace


Et comme dit KC62, tu peux vérifier chaque caractère de ton entête en créant une petite fonction du genre

Sub Y()

    Dim strTemp As String, I As Integer

   

    For I = 1 To Len(Range("A1"))   '  Range("A1") contient l'entête en question

        strTemp = strTemp & Asc(Mid(Range("A1"), I, 1)) & vbTab & _

                   
Mid(Range("A1"), I, 1) & vbCrLf

    Next

   

    MsgBox strTemp

End Sub

MPi
Messages postés
26
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
5 janvier 2008

Merci pour toutes vos réponses, elles m'ont beaucoup aidées !
Au final j'ai remplacé comme ceci :

cellule = Replace(LCase(Cells(9, i)), vbLf, "§")
crit3.AddItem (cellule)

Et lorsque je cherche sur cette valeur, je fais

leCritere3 = Replace(crit3.Text, "§", vbLf)
While LCase(Cells(9, i)) <> leCritere3
        i = i + 1
Wend

Merci encore et à bientôt
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Oups ................   (pas vbCrLf mais bien vbLf)

Avec Range("A1") = "Je saute" & vbLf & "une ligne"

ça ne met pas de signe

MPi
Messages postés
50
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
23 janvier 2008

je ne veux pas m'avancer mais je ne suis pas certain que VBA gere les retours chariot


exemple si tu mets:


listbox1.additem "test" & Vblf & "a la ligne"


tu obtiens test#a la ligne


le seul moyen est donc de retirer les retours chariots.... sinon je suis preneur de la solution

carvals
Messages postés
402
Date d'inscription
vendredi 6 août 2004
Statut
Membre
Dernière intervention
12 octobre 2008
28
bonsoir

tu peux tester cette syntaxe

ComboBox1.AddItem _
    Application.WorksheetFunction.Substitute(Range("A1"), Chr(10), "")

bonne soiree
michel
Messages postés
229
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 juin 2007

Carval : Pour infos, il me semble que ce n'est pas vblf mais vbcrlf pour Carier Return Little files (chui pas sur de l'orthographe).

Ensuite si tu arrive a determiner la valeur ASCII de ton "carré", il te suffira de le supprimer avec le différentes option offert par le string.

L'explorateur d'objet pourra t'aider...

Je suis désolé mais souvenir ne me permette pas de me souvenir de tous les noms des fonction en VB. mais la solution est au bout du couloir.

Pour trouver le caractères ASCII de ton carré tu peux affiché chaque caractète ASCII dans une message box et tu veras bien le nombre qui apparait a la place de ton carré.

Je ne sais pas si un
if MonCarac=VbCrlf marcherais sinon il suffit de supprimer aprés le if le caractère génant.

Voila j'espere t'avoir aidé. Malgré mes trous de mémoire assez important en ce moment.

Bon courage

KC62

On a pas toutes les solutions de tous les probleme mais chaque probleme à ses solutions ...
Messages postés
229
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 juin 2007

Alors mille excuse !
ma gourré chef !

On a pas toutes les solutions de tous les probleme mais chaque probleme à ses solutions ...
Messages postés
229
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 juin 2007

clique sur réponse acceptée !

merci

On a pas toutes les solutions de tous les probleme mais chaque probleme à ses solutions ...