Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    juillet 2012
    Messages
    284
    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 : 284
    Points : 88
    Points
    88

    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 :

    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 :

    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 :

    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 ??

  2. #2
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro Francis MILLET
    Inscrit en
    décembre 2004
    Messages
    3 480
    Détails du profil
    Informations personnelles :
    Nom : Homme Francis MILLET
    Âge : 58
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 3 480
    Points : 5 767
    Points
    5 767

    Par défaut

    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)

  3. #3
    Membre Expert
    Inscrit en
    juin 2006
    Messages
    768
    Détails du profil
    Informations forums :
    Inscription : juin 2006
    Messages : 768
    Points : 1 122
    Points
    1 122

    Par défaut

    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.

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    juillet 2012
    Messages
    284
    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 : 284
    Points : 88
    Points
    88

    Par défaut

    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

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •