Précédent   Forum du club des développeurs et IT Pro > Autres langages > Général Visual Basic 6 et VBScript > VBScript
VBScript Le forum d'entraide sur VBScript. Avant de poster -> La FAQ VBScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 22/11/2012, 17h05   #1
b.gaumard
Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : juillet 2012
Messages : 166
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Finance

Informations forums :
Inscription : juillet 2012
Messages : 166
Points : 59
Points : 59
Par défaut Supprimer les tabulations multiples

Bonjour,

Problème simple :

Entre 2 colonnes je vais, avoir des tabulations mais qui ne sont jamais le meme nombre.

Par exemple je vais avoir :

Citation:
Colonne1 vbtab vbtab vbtab vbtab vbtab colonne2 --> 5 tab
Colonne1 vbtab colonne2 --> 1 tab
Colonne1 vbtab vbtab colonne2 --> 2 tab
Comment faire pour supprimer toutes les tabulation et n'en garder qu'une ??


pour que ca donne ca :

Citation:
Colonne1 vbtab colonne2 --> 1 tab
Colonne1 vbtab colonne2 --> 1 tab
Colonne1 vbtab colonne2 --> 1 tab


Pour tester, si je fais un :

Code :
1
2
 
Replace(result, vbtab, "-")
ca m'affiche :

Citation:
Colonne1 - - - - - colonne2
Colonne1 - colonne2
Colonne1 - - colonne2
J'ai bien essayé un truc comme ca mais ca ne fonctionne pas :
Code :
1
2
3
4
5
6
 
Dim colonne
 
Do While (Instr(1, colonne, vbTab & vbTab) > 0)
    colonne = Replace(colonne, vbTab, vbTab & vbTab, 1)
Wend
Avez vous une idée svp merci ??
b.gaumard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2012, 23h25   #2
ProgElecT
Rédacteur/Modérateur
 
Avatar de ProgElecT
 
Homme Francis MILLET
Inscription : décembre 2004
Messages : 3 210
Détails du profil
Informations personnelles :
Nom : Homme Francis MILLET
Âge : 57
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Secteur : Communication - Médias

Informations forums :
Inscription : décembre 2004
Messages : 3 210
Points : 5 701
Points : 5 701
Envoyer un message via MSN à ProgElecT
Salut
J'ai pris tes exemples en partant de ta première citation Par exemple je vais avoir :, donc le résultat diffère légèrement de ta deuxième citation pour que ça donne ça :, mais il me semble que c'est plutôt ton copier/coller un peu trop rapide qui peut induire en erreur sur le résultat voulu
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Function Cmpt(Letexte, LeChar)
Cmpt = UBound(Split(Letexte, LeChar, -1, vbTextCompare))
End Function
 
Dim Phrase1, Phrase2, Phrase3
Phrase1 = "Colonne1" & vbTab & vbTab & vbTab & vbTab & vbTab & "colonne2 --> 5 tab"
Phrase2 = "Colonne1" & vbTab & "colonne2 --> 1 tab"
Phrase3 = "Colonne1" & vbTab & vbTab & "colonne2 --> 2 tab"
 
'Colonne1 vbtab colonne2 --> ( tab
'Colonne1 vbtab colonne2 --> 1 tab
'Colonne1 vbtab colonne2 --> 2 tab
 
MsgBox Replace(Phrase1, vbTab, "", 1, Cmpt(Phrase1, vbTab) - 1, vbTextCompare)
MsgBox Replace(Phrase2, vbTab, "", 1, Cmpt(Phrase2, vbTab) - 1, vbTextCompare)
MsgBox Replace(Phrase3, vbTab, "", 1, Cmpt(Phrase3, vbTab) - 1, vbTextCompare)
ProgElecT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 10h04   #3
Aniki
Membre émérite
 
Inscription : juin 2006
Messages : 632
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 632
Points : 927
Points : 927
Citation:
Envoyé par b.gaumard Voir le message
J'ai bien essayé un truc comme ca mais ca ne fonctionne pas :
Code :
1
2
3
4
5
6
 
Dim colonne
 
Do While (Instr(1, colonne, vbTab & vbTab) > 0)
    colonne = Replace(colonne, vbTab, vbTab & vbTab, 1)
Wend
ca marche pas ?

hum...
A oui effectivement...
Au lieu de diminuer les vbTab à 1, je t'en rajoutais un le tout dans une boucle infini...
Ca m'apprendra à pas tester avant de proposer une solution.

Là ca devrait aller mieux (ça a même été testé !!)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
Dim i, ligne()
 
redim ligne(2)
ligne(0) = "Colonne1" & vbtab & vbtab & vbtab & vbtab & vbtab & "colonne2" '5 tab
ligne(1) = "Colonne1" & vbtab & "colonne2" '1 tab
ligne(2) = "Colonne1" & vbtab & vbtab & "colonne2" '2 tab
 
For i= LBound(ligne) to UBound(ligne)
	Do While (Instr(1, ligne(i), vbTab & vbTab) > 0)
		ligne(i) = Replace(ligne(i), vbTab & vbTab, vbTab, 1)
	Loop
	MsgBox "Ligne " & i & " = " & ligne(i)
next
Là c'est du tout confort.
Tu n'as plus qu'à remplir le tableau ligne() comme tu le souhaites et il t'arrange tout comme il faut.
Aniki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2012, 17h08   #4
b.gaumard
Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : juillet 2012
Messages : 166
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Finance

Informations forums :
Inscription : juillet 2012
Messages : 166
Points : 59
Points : 59
C'est parfait avec ca merci !!!!
Code :
1
2
3
4
5
6
For i= LBound(ligne) to UBound(ligne)
	Do While (Instr(1, ligne(i), vbTab & vbTab) > 0)
		ligne(i) = Replace(ligne(i), vbTab & vbTab, vbTab, 1)
	Loop
	MsgBox "Ligne " & i & " = " & ligne(i)
next
b.gaumard est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 05h41.


 
 
 
 
Partenaires

Hébergement Web