IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Chaîne de caractères avec retours à la ligne [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    63
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 63
    Points : 57
    Points
    57
    Par défaut Chaîne de caractères avec retours à la ligne
    Bonjour à toutes et tous,

    J'ai un fichier qui comporte des cellules qui comprennent plusieurs éléments, séparés par des sauts de ligne, comme par exemple
    Element 1 15:16/15:19
    Element 2 /15:49
    Element 3 15:59/16:02
    Je souhaiterais récupérer chaque élément individuellement dans une liste, sans les heures affichées à côté. J'arrive à enlever les heures en remplaçant chaque chiffre, les deux points, et " /" par "" avec la fonction replace.

    Ensuite, j'ai écrit le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    dim Nblignes as Integer ' le fichier comporte environ 1000 lignes
    dim Traitement as String
    dim Compteur as Integer
    dim Liste(10000) as String
     
    Compteur = 1
    Nblignes =1
    do while cells(Nblignes,3).formula <> ""
       Traitement = cells(Nblignes,3).formula
     
       'remplacement des heures
     
       'ensuite, stockage de chaque élément :
     
       do while Traitement <>""
          Liste(Compteur) = split(traitement, chr(10), 1)(0)
          Traitement = split(Traitement,chr(10),1)(1)
          Compteur = Compteur +1 
       Loop
       Nblignes=Nblignes+1
    Loop
    Je sais bien qu'avec ce code, j'obtiendrai une erreur quand
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    split(Traitement,chr(10),1)(1)
    n'existera pas, c'est à dire quand le dernier élément sera traité.
    Mais le problème n'est pas là, du moins pour l'instant :
    Les sauts de ligne ne sont pas reconnus avec chr(10) ni avec chr(13) si bien que de fait, on a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    split(Traitement, chr(10), 1)(0) = Traitement
    (et j'obtiens l'erreur dès la première occurrence du coup)

    En mode débogage, quand je pointe le curseur sur le nom de la variable pour faire apparaître sa valeur, il m'affiche des rectangles vides pour les sauts de ligne. J'ai essayé d'utiliser Value au lieu de Formula, mais a priori, ça ne change rien.
    Sauriez-vous comment résoudre le problème ?

  2. #2
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Bonjour,

    Je crois que si l'on veux activer le renvoie de ligne en VB d'une cellule :

    Les plus doués que moi confirmeront ou non.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sheets("cdcdc").cells(1,1).wraptext=true

  3. #3
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    63
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 63
    Points : 57
    Points
    57
    Par défaut
    Bonjour,

    Merci pour votre réponse.
    En fait, le problème ne venait pas de la reconnaissance des sauts de ligne comme chr(10), mais du fait que le delimiter de la fonction split était égal à 1.
    Le délimiter est égal au nombre de chaînes que l'on souhaite obtenir au maximum, je croyais qu'il s'agissait du nombre maximum de divisions de la chaîne que l'on souhaitait obtenir.
    J'ai donc mis le delimiter à 2 et depuis, tout marche sans problèmes.

    Bonne soirée.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/05/2014, 10h40
  2. String avec retour à la ligne tous les '100' caractères
    Par Portugues13 dans le forum Débuter avec Java
    Réponses: 16
    Dernier message: 05/06/2012, 17h16
  3. Caractère de retour à la ligne.
    Par Pari dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 18/03/2009, 09h59
  4. Réponses: 2
    Dernier message: 16/11/2007, 11h33
  5. Concatérner chaine avec retour à la ligne
    Par nebule dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/11/2004, 11h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo