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 :

Comment traiter des cellules avec retour chariot pour en faire des cellules séparées


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Comment traiter des cellules avec retour chariot pour en faire des cellules séparées
    Bonjour,

    j'ai un probleme.
    j'extrais au format CSV des donnees d'un logiciel de gestion de configuration.

    j'ai parfois plusieurs valeurs dans une meme cellule, séparées par des retours chariots.

    Or je voudrais avoir une vision ligne à ligne pour des raisons de traitement (refacturation au prorata).

    Comment puis-je :
    compter le nombre de retours chariots
    separer le contenu en autant de valeurs distinctes
    creer des lignes et recopier le contenu de chaque ligne pour y integrer les valeurs ?

    merci pour votre aide. je seche et ca m'aiderait grandement.
    Fichiers attachés Fichiers attachés

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    la méthode split avec un Chr(13) ?

  3. #3
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 061
    Points
    32 061
    Par défaut
    Citation Envoyé par EngueEngue Voir le message
    la méthode split avec un Chr(13) ?
    Je l'ai fait récemment, c'était Chr(10)(à ma grande surprise). Je suis sous 2007. La partie pertinente(trafiquée pour confidentialité) de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Dim Ligne As Long
        Dim LGroupe As Variant,  Groupes As String
     
             For Ligne = 2 To .Range("A2").End(xlDown).Row
                Groupes = .Cells(Ligne, 2)
               For Each LGroupe In Split(Groupes, (Chr(10)))
                   'ici le traitement de la chaine unitaire LGroupe, traitée depuis CStr(LGroupe)
               Next LGroupe
            Next Ligne

    EDIT : il y a 4 possibilités pour un retour chariot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Chr(10)
    Chr(13)
    Chr(10) & Chr(13)
    Chr(13) & Chr(10)
    si mon Chr(10) ne marche pas, essayer chacun des 3 autres.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    il serrait plus facile de repartir du CSV, si tu as un modèle de fichier je suis preneur.

  5. #5
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut


    Bonjour,

    sinon à partir du fichier exemple,
    voici un code transformant les colonnes de la feuille origine (Feuil1) dans la feuille cible (Feuil2) :
    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
    Sub RecopieParAppli()
        C& = Feuil1.UsedRange.Columns.Count
     
        If C > 1 Then
            TS = Feuil1.UsedRange
            ReDim TC$(1 To C, 1 To UBound(TS))
     
            For R = 1 To UBound(TS)
                AP = Split(TS(R, 1), vbLf)
                N& = L& + 1 + UBound(AP)
                If UBound(TC, 2) < N Then ReDim Preserve TC(1 To C, 1 To N)
     
                For Each A In AP
                    L = L + 1:        TC(1, L) = A
                    For K& = 2 To C:  TC(K, L) = TS(R, K):  Next K
                Next A
            Next R
     
            Feuil2.Columns("A:" & Chr$(64 + C)).ClearContents
            Feuil2.[A1].Resize(L, C) = Application.Transpose(TC)
        End If
    End Sub
    Comme le fichier exemple est au format .xlsx, il faudrait l'enregistrer au format .xlsb ou .xlsm …

    Si ce n'est pas le fichier exemple qui contient le code, il faut alors requalifier Feuil1 & Feuil2 dans mon code …


    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

Discussions similaires

  1. [POI] Cas des cellules avec retour chariot
    Par argent dans le forum Documents
    Réponses: 2
    Dernier message: 25/05/2012, 11h36
  2. [Mail] Retours chariot pour l'entête des e-mails
    Par lemilig dans le forum Langage
    Réponses: 1
    Dernier message: 21/11/2007, 20h05
  3. [Tableaux] Retour chariot pour un code HTML propre
    Par beastman007 dans le forum Langage
    Réponses: 10
    Dernier message: 09/03/2006, 17h43
  4. afficher texte avec retour chariot aprèq requète sql
    Par frenchy371 dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/01/2004, 17h33

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