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

Excel Discussion :

Mise en forme des données [XL-365]


Sujet :

Excel

  1. #1
    Membre émérite Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 566
    Points : 2 525
    Points
    2 525
    Par défaut Mise en forme des données
    Bonsoir à tous,

    je récupère des données sous cette forme :
    BU:5.1 { MB:101 MB:103 MB:105 MB:107 MB:109 MB:111 MB:113 MB:115 MB:117 }

    Il faudrait pour les traiter arriver à cette forme :
    BU MB
    5.1 101
    5.1 103
    5.1 105
    5.1 107
    5.1 109
    5.1 111
    5.1 113
    5.1 115
    5.1 117

    J'ai essayé plusieurs fonctions (STXT, CHERCHE, etc) mais aucune ne m'a donné satisfaction sur la finalité recherchée.
    Je reste ouvert à toute idée : Fonction ou VBA.

    Merci d'avance.
    Pas de demande par MP, sinon j'correctionne plus, j'dynamite, j'disperse, j'ventile !!!
    ---------------------------------------------------------------------
    Vous avez un talent insoupçonné... Faites-en profitez les autres. Un p'tit CLIC pour une grande cause.
    Et si vous faisiez un bon geste en 2024 ? Soyez utile, ça vous changera ! Moi, ça m’a changé !

  2. #2
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 133
    Points : 83 975
    Points
    83 975
    Billets dans le blog
    15
    Par défaut
    Salut,

    En jouant un peu avec Power Query ( les différentes étapes dans la requête), j'y suis arrivé.
    Si les données de la source changent, un clic droit ==> Actualiser fera la mise à jour

    Mais sûrement il y a plus propre. @Pierre Fauconnier passera sûrement
    Fichiers attachés Fichiers attachés
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  3. #3
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Autre possibilité en VBA, histoire de s'amuser un peu, si le texte est en cellule A1

    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
    23
    24
    25
    26
    27
    Sub Isoler_les_Elements()
        Dim Prem_2Pts As Long, Deux_2Pts As Long, Accol_Ouv As Long, Accol_Fer As Long
        Dim Prem_Mot As String, Deux_Mot As String, Mot_Complet As String, Version As String, Reste As String
        Application.ScreenUpdating = False
     
        'Isoler BU et MB pour en faire un entête
        Prem_2Pts = InStr(1, Cells(1, 1), ":", 1)
        Prem_Mot = Left(Cells(1, 1), Prem_2Pts - 1)
        Accol_Ouv = InStr(1, Cells(1, 1), "{", 1)
        Deux_2Pts = InStr(Accol_Ouv, Cells(1, 1), ":", 1)
        Deux_Mot = Mid(Cells(1, 1), Accol_Ouv + 2, Deux_2Pts - Accol_Ouv - 2)
        Mot_Complet = Prem_Mot & " " & Deux_Mot
        Version = Mid(Cells(1, 1), Prem_2Pts + 1, Accol_Ouv - 2 - Prem_2Pts)
     
        'Isoler le reste du texte
        Accol_Fer = InStr(1, Cells(1, 1), "}", 1)
        Reste = ":" & Mid(Cells(1, 1), Deux_2Pts + 1, Len(Cells(1, 1)) - Deux_2Pts - 2) & ":"
        'Suppression du deuxième mot" MB" dans le reste
        Reste = Replace(Reste, " " & Deux_Mot, "")
     
        'Restitution
        Cells(2, "A") = Mot_Complet
        Valeur = Split(Reste, ":")
        For i = 1 To UBound(Valeur) - 1
            Cells(i + 2, "A") = Version & " " & Valeur(i)
        Next
    End Sub
    Pièce jointe 609008

    ou un peu plus rapide pour la restitution:
    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
    23
    24
    25
    26
    27
    28
    29
    Sub Isoler_les_Elements()
        Dim Prem_2Pts As Long, Deux_2Pts As Long, Accol_Ouv As Long, Accol_Fer As Long
        Dim Prem_Mot As String, Deux_Mot As String, Mot_Complet As String, Version As String, Reste As String
        Application.ScreenUpdating = False
     
        'Isoler BU et MB pour en faire un entête
        Prem_2Pts = InStr(1, Cells(1, 1), ":", 1)
        Prem_Mot = Left(Cells(1, 1), Prem_2Pts - 1)
        Accol_Ouv = InStr(1, Cells(1, 1), "{", 1)
        Deux_2Pts = InStr(Accol_Ouv, Cells(1, 1), ":", 1)
        Deux_Mot = Mid(Cells(1, 1), Accol_Ouv + 2, Deux_2Pts - Accol_Ouv - 2)
        Mot_Complet = Prem_Mot & " " & Deux_Mot
        Version = Mid(Cells(1, 1), Prem_2Pts + 1, Accol_Ouv - 2 - Prem_2Pts)
     
        'Isoler le reste du texte
        Accol_Fer = InStr(1, Cells(1, 1), "}", 1)
        Reste = ":" & Mid(Cells(1, 1), Deux_2Pts + 1, Len(Cells(1, 1)) - Deux_2Pts - 2) & ":"
        'Suppression du deuxième mot" MB" dans le reste
        Reste = Replace(Reste, " " & Deux_Mot, "")
     
        'Restitution
        Valeur = Split(Reste, ":")
        ReDim Restit(UBound(Valeur)) As String
        For i = 1 To UBound(Valeur) - 1
            Restit(i) = Version & " " & Valeur(i)
        Next
        Range(Cells(2, "A"), Cells(UBound(Valeur) + 1, "A")) = Application.WorksheetFunction.Transpose(Restit)
        Cells(2, "A") = Mot_Complet
    End Sub
    Pièce jointe 609015


    Cdlt

  4. #4
    Membre émérite Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 566
    Points : 2 525
    Points
    2 525
    Par défaut
    Bonjour et merci à vous deux pour ces pistes

    ARTURO83 : les 2 macros marchent bien à ceci prêt que BU est un entête et MD en est un autre.

    Encore merci pour ces pistes. Je continue à creuser le sujet.
    Pas de demande par MP, sinon j'correctionne plus, j'dynamite, j'disperse, j'ventile !!!
    ---------------------------------------------------------------------
    Vous avez un talent insoupçonné... Faites-en profitez les autres. Un p'tit CLIC pour une grande cause.
    Et si vous faisiez un bon geste en 2024 ? Soyez utile, ça vous changera ! Moi, ça m’a changé !

  5. #5
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    BU est un entête et MD en est un autre.
    Ok, alors ceci
    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
    23
    24
    25
    26
    27
    28
    29
    30
    Sub Isoler_les_Elements()
        Dim Prem_2Pts As Long, Deux_2Pts As Long, Accol_Ouv As Long, Accol_Fer As Long
        Dim Prem_Mot As String, Deux_Mot As String, Mot_Complet As String, Version As String, Reste As String
        Application.ScreenUpdating = False
     
        'Isoler BU et MB pour en faire un entête
        Prem_2Pts = InStr(1, Cells(1, 1), ":", 1)
        Prem_Mot = Left(Cells(1, 1), Prem_2Pts - 1)
        Accol_Ouv = InStr(1, Cells(1, 1), "{", 1)
        Deux_2Pts = InStr(Accol_Ouv, Cells(1, 1), ":", 1)
        Deux_Mot = Mid(Cells(1, 1), Accol_Ouv + 2, Deux_2Pts - Accol_Ouv - 2)
        'Mot_Complet = Prem_Mot & " " & Deux_Mot
        Version = Mid(Cells(1, 1), Prem_2Pts + 1, Accol_Ouv - 2 - Prem_2Pts)
     
        'Isoler le reste du texte
        Accol_Fer = InStr(1, Cells(1, 1), "}", 1)
        Reste = ":" & Mid(Cells(1, 1), Deux_2Pts + 1, Len(Cells(1, 1)) - Deux_2Pts - 2) & ":"
        'Suppression du deuxième mot" MB" dans le reste
        Reste = Replace(Reste, " " & Deux_Mot, "")
     
        'Restitution
        Valeur = Split(Reste, ":")
        ReDim Restit(UBound(Valeur)) As String
        For i = 1 To UBound(Valeur) - 1
            Restit(i) = Valeur(i)
        Next
        Range(Cells(2, "A"), Cells(UBound(Valeur) + 1, "A")) = Version
        Range(Cells(2, "B"), Cells(UBound(Valeur) + 1, "B")) = Application.WorksheetFunction.Transpose(Restit)
        Range(Cells(2, "A"), Cells(2, "B")) = Array(Prem_Mot, Deux_Mot)
    End Sub
    Cdlt

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

Discussions similaires

  1. Mise en forme des données sous Excel
    Par mhamedbj dans le forum Cognos
    Réponses: 2
    Dernier message: 27/08/2011, 16h00
  2. [2008] Mise en forme des données
    Par Valochette dans le forum SSRS
    Réponses: 2
    Dernier message: 12/05/2011, 09h34
  3. [MySQL] probleme de mise en forme des données
    Par arakiri dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 01/06/2007, 11h01
  4. [MySQL] Mise en forme des données
    Par Silborn dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/12/2006, 18h00
  5. Réponses: 6
    Dernier message: 16/06/2006, 14h20

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