Pinzut77
Messages postés21Date d'inscriptionmercredi 5 juillet 2006StatutMembreDernière intervention17 juillet 2006
-
5 juil. 2006 à 18:01
Pinzut77
Messages postés21Date d'inscriptionmercredi 5 juillet 2006StatutMembreDernière intervention17 juillet 2006
-
6 juil. 2006 à 13:33
Bonjour,
Voila le code que j'ai mis ne veut pas me donner la position du caractere espace ... si je le met en dur direct dans la fonction cela fonctionne mais quand je vais chercher ce texte dans une cellule et la plus rien.
Si quelqu'un à une idée merci d'avance
Sub space()
Dim iPos As Integer
Dim copier As Strin
Dim nom As String
For compteur = 5 To 1239 Step 2
nom = Range("C" & compteur)
iPos = InStr(nom, " ")
MsgBox iPos
Next compteur
End sub
la box me renvoi tjs zéro alors que le contenu de la cellule est bien présente
merci
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 6 juil. 2006 à 13:31
Re,
Alors pour les espaces Superflu il y a les fonction RTrim LTrim Et Trim
Voici l'exemple de la MSDN pour les 3 (bien que dans ton cas Trim Suffise)
Dim MyString, TrimString
MyString = " <-Trim-> " ' Initialise la chaîne.
TrimString = LTrim (MyString) ' TrimString = "<-Trim-> ".TrimString RTrim (MyString) ' TrimString <-Trim->".TrimString LTrim (<gras>RTrim(MyString)) ' TrimString </gras> "<-Trim->".
' L'utilisation de la fonction Trim seule produit le même résultat.TrimString Trim (MyString) ' TrimString "<-Trim->".
galopin01
Messages postés133Date d'inscriptionlundi 4 octobre 2004StatutMembreDernière intervention14 octobre 20111 6 juil. 2006 à 06:16
bonjour,
mais non, Value étant la propriété "par défaut" de Range, cette Sub marche très bien !
Je vois plutôt un problème de référence à "LaBonneFeuille"
nom = Worksheet("blabla").Range("C" & compteur)
A+
Pinzut77
Messages postés21Date d'inscriptionmercredi 5 juillet 2006StatutMembreDernière intervention17 juillet 2006 6 juil. 2006 à 09:39
Sub testspace()
Dim nom As String
Dim iPos As Integer
For compteur = 5 To 11 Step 2
nom = Range("C" & compteur)
MsgBox nom
iPos = InStr(1, nom, " ")
MsgBox iPos
Next compteur
End Sub
Voila le code de test... j'ai bien mes chaînes dans les messages box mais toujours rien dans le iPos
Galopino j'ai essayé de rajouter worksheet comme tu l'as mis mais il me dit que ma fonction est incorrecte.
Dur de débuter en VB ;-(
Pinzut77
Messages postés21Date d'inscriptionmercredi 5 juillet 2006StatutMembreDernière intervention17 juillet 2006 6 juil. 2006 à 09:52
Je pense avoir mis le doigt sur le problème... Si je reprend le texte de ma case et que je refais les espace (backspace + space) ma macro fonctionne très bien... Mais bon j'ai 1238 cases (sur une colonne) à traiter je vais peut etre pas m'amuser à refaire tout leur espace...
Le contenu de ces cellules ont été faite à partir de copier / coller me semble t'il ... Quelqu'un aurait'il une solution ?
Pinzut77
Messages postés21Date d'inscriptionmercredi 5 juillet 2006StatutMembreDernière intervention17 juillet 2006 6 juil. 2006 à 10:04
Oui sa affiche bien 4 car j'ai refais les espaces à la main ... les espaces que l'on voit ne sont pas considérés comme des espaces apparemment donc il faut tous les refaire et là sa fonctionne
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 6 juil. 2006 à 10:15
Re,
Non j'ai trouve.
En fait lorsque l'on fait le Instr(1, nom, " ") ceci est équivalant à Instr(1, nom, Chr(32))
(32 code ascii de l'espace)
Donc j'ai teste sur les valeurs ou iPos = 0 et en fait c'est que l'espace dans ces chaines de caractères possède le code ascii 160...
Je ne sais pas pourquoi.
Donc si tu remplace Instr(1, nom, " ") Par Instr(1, nom, Chr(160)) ca marche normalement pour les chaine que tu n'as pas traiter a la main.
Donc essaie de doubler tes test
MsgBox nom
iPos = InStr (1, nom, Chr(32))
MsgBox iPos
If iPos = 0 Then
iPos = InStr(1, nom, Chr(160))
MsgBox iPos
end if
galopin01
Messages postés133Date d'inscriptionlundi 4 octobre 2004StatutMembreDernière intervention14 octobre 20111 6 juil. 2006 à 10:17
bonjour,
Pour moi ça marche parfaitement, la fonction marche avec ou sans "1" dans Instr
Je pense que ce que tu prends comme espace est en fait un caractère "invisible" : 160 (ou un autre...)
On trouve souvent ça dans les importations d'automate ou de fichier .csv
Essaie d'identifier la valeur Asc du caractère que tu prends pour un espace avec ce test : Tu verras qu'il n'y a pas de 32
Sub test()
nom = Range("C5")
For k = 1 To Len(nom)
MsgBox Asc(Mid(Range("C5"), k, 1))
Next
End Sub
Tu modifieras ensuite ta macro avec le chr trouvé :
iPos = InStr(nom, Asc(160)) 'par exemple...
A+
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 6 juil. 2006 à 10:18
Salut,
J ai regarder sur ICI en fait ce ne sont pas des Spaces mais des non-breaking space (sais pas ce que c'est)
@+, Julien Pensez: Moteur de Recherche, Réponse Acceptée, Règlement/FONT>
Pinzut77
Messages postés21Date d'inscriptionmercredi 5 juillet 2006StatutMembreDernière intervention17 juillet 2006 6 juil. 2006 à 11:52
Encore un tout petit probleme... Avec tout ces espaces sa me fait une tonne de cas à gérer (nombre d'espace, type d'espace et nombre d'espace total...). Est il possible de remplacer les espaces par un seul et unique espace ? Une fonction excel fait peut etre ça ? La fonctioner chercher/remplacer marche t'elle avec un code ascii ? merci pour votre aide