Retour chariot Excel [Résolu]

Messages postés
26
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
5 janvier 2008
- - Dernière réponse : KC62
Messages postés
229
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 juin 2007
- 17 août 2006 à 20:26
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
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
16
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 110 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_MPi
Messages postés
26
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
5 janvier 2008
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 110 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Prototype51
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
16
1
Merci
Oups ................   (pas vbCrLf mais bien vbLf)

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

ça ne met pas de signe

MPi
Commenter la réponse de cs_MPi
Messages postés
50
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
23 janvier 2008
0
Merci
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
Commenter la réponse de cs_carvals
Messages postés
402
Date d'inscription
vendredi 6 août 2004
Statut
Membre
Dernière intervention
12 octobre 2008
20
0
Merci
bonsoir

tu peux tester cette syntaxe

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

bonne soiree
michel
Commenter la réponse de michelxld
Messages postés
229
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 juin 2007
0
Merci
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 ...
Commenter la réponse de KC62
Messages postés
229
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 juin 2007
0
Merci
Alors mille excuse !
ma gourré chef !

On a pas toutes les solutions de tous les probleme mais chaque probleme à ses solutions ...
Commenter la réponse de KC62
Messages postés
229
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 juin 2007
0
Merci
clique sur réponse acceptée !

merci

On a pas toutes les solutions de tous les probleme mais chaque probleme à ses solutions ...
Commenter la réponse de KC62

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.