Retour chariot Excel [Résolu]

Prototype51 26 Messages postés lundi 25 avril 2005Date d'inscription 5 janvier 2008 Dernière intervention - 16 août 2006 à 16:30 - Dernière réponse : KC62 229 Messages postés mardi 3 juin 2003Date d'inscription 20 juin 2007 Dernière intervention
- 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
cs_MPi 3877 Messages postés mardi 19 mars 2002Date d'inscription 23 août 2018 Dernière intervention - 16 août 2006 à 23:56
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

Merci cs_MPi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_MPi
Meilleure réponse
Prototype51 26 Messages postés lundi 25 avril 2005Date d'inscription 5 janvier 2008 Dernière intervention - 17 août 2006 à 09:56
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

Merci Prototype51 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Prototype51
cs_MPi 3877 Messages postés mardi 19 mars 2002Date d'inscription 23 août 2018 Dernière intervention - 16 août 2006 à 23:59
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
cs_carvals 50 Messages postés lundi 20 novembre 2000Date d'inscription 23 janvier 2008 Dernière intervention - 16 août 2006 à 17:57
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
michelxld 402 Messages postés vendredi 6 août 2004Date d'inscription 12 octobre 2008 Dernière intervention - 16 août 2006 à 19:08
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
KC62 229 Messages postés mardi 3 juin 2003Date d'inscription 20 juin 2007 Dernière intervention - 16 août 2006 à 20:04
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
KC62 229 Messages postés mardi 3 juin 2003Date d'inscription 20 juin 2007 Dernière intervention - 17 août 2006 à 09:49
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
KC62 229 Messages postés mardi 3 juin 2003Date d'inscription 20 juin 2007 Dernière intervention - 17 août 2006 à 20:26
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.