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 :

transposer des données [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 13
    Par défaut transposer des données
    Bonjour et merci de votre aide et du temps consacré
    Voici mon souci dans 3 colonne excel j'ai des données rangés comme ceci:

    ColA        ColB      ColC
    4            188        193  
    5            188        193  
    6            187        193  
    7            101        116  
    7            186        193  
    8              93       124  
    8            185        193  
    9            90          127  
    9            184         193  
    9            85           131  
    10           184        192   
    11          83          133  
    11          183        192  
    11          80         137 
    12          184        192   
    12         83          133  
    12        183        192  
    12         80         137
    13           188        193  
    13           188        193  
    13          187        193  
    13           101        116  
    13           186        193  
    13              93       124  
    14           101        116 
    ........ect
    J'aimerais transposé ces valeurs en fonction des valeurs répété en colonne A Comme ceci
    ColA        ColB      ColC       ColD       ColE       ColF          ColG        ColH        ColI      ColJ       ColK
    4            188        193  
    5            188        193  
    6            187        193  
    7            101        116       186        193 
    8              93       124        185        193
    9            90          127        184       193        85            131
    10           184        192   
    11          83          133        183        192        80             37
    12          184        192         83        133        183          192         80           137
    13           188        193        188       193        187         193         101          106        93       124
    14           101        116 
    ........ect
    Merci de votre aide et du temps consacré

  2. #2
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonjour,
    Essayes 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
    Option Explicit
     
    Sub test_Concatener()
    Dim wkst1 As Worksheet
    Dim wkst2 As Worksheet
    Dim Base As Range
    Dim Resultat As Range
    Dim i As Integer
    Dim j As Integer
    Dim Nbligne1 As Integer
    Set wkst1 = ThisWorkbook.Sheets("Feuil1")
    Set wkst2 = ThisWorkbook.Sheets("Feuil2")
    Set Base = wkst1.Range("A1")
    Set Resultat = wkst2.Range("A1")
    j = 0
    With wkst1
    Nbligne1 = .Cells(.Rows.Count, 1).End(xlUp).Row
    End With
     
    For i = 0 To Nbligne1
    Resultat.Offset(j, 0) = Base.Offset(i, 0)
    Resultat.Offset(j, 1) = Resultat.Offset(j, 1) & " " & Base.Offset(i, 1) & " " & Base.Offset(i, 2)
     
    If Base.Offset(i, 0) = Base.Offset(i + 1, 0) Then
    j = j
    Else
    j = j + 1
    End If
    Next i
    End Sub
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  3. #3
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 13
    Par défaut
    Bonjour ;merci pour le temps consacré
    C'est exactement ce que je voulais mais sans concatener les données; que dois je changer dans le code pour que les données ne soit pas concatener?

    En tout cas un grand merci pour le code

  4. #4
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonjour,
    J'ai modifié le code en ajoutant une boucle pour parvenir au résultat souhaité, il y a surement plus simple et peut-être existe-t-il une méthode plus orthodoxe, mais cela fonctionne

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Sub Regroupement()
    Dim wkst1 As Worksheet
    Dim wkst2 As Worksheet
    Dim Base As Range
    Dim Resultat As Range
    Dim i As Integer
    Dim j As Integer
    Dim Nbligne1 As Integer
    Dim Nbligne2 As Integer
    Dim NbCar As Integer
    Set wkst1 = ThisWorkbook.Sheets("Feuil1")
    Set wkst2 = ThisWorkbook.Sheets("Feuil2")
    Set Base = wkst1.Range("A1")
    Set Resultat = wkst2.Range("A1")
    j = 0
    With wkst1
    Nbligne1 = .Cells(.Rows.Count, 1).End(xlUp).Row
    End With
     
    For i = 0 To Nbligne1
    Resultat.Offset(j, 0) = Base.Offset(i, 0)
    Resultat.Offset(j, 1) = Resultat.Offset(j, 1) & Base.Offset(i, 1) & Base.Offset(i, 2)
     
    If Base.Offset(i, 0) = Base.Offset(i + 1, 0) Then
    j = j
    Else
    j = j + 1
    End If
    Next i
     
    With wkst2
    Nbligne2 = .Cells(.Rows.Count, 1).End(xlUp).Row
    End With
     
    For i = 0 To Nbligne2
    NbCar = Len(Resultat.Offset(i, 1))
    For j = 0 To NbCar - 1
    Resultat.Offset(i, 3 + j) = Right(Left(Resultat.Offset(i, 1), 1 + j), 1)
    Next j
    Next i
    End Sub
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  5. #5
    Expert éminent
    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
    Par défaut




    Bonjour,

    Eric, dans ton premier code ne te manquait qu'une ligne TextToColumns (Convertir d'Excel) …



    _____________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse

  6. #6
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonjour Marc,
    Voici les différents résultats obtenus avec mon code
    Nom : Transposer.jpg
Affichages : 194
Taille : 82,3 Ko
    J'ai essayé d'inclure dans le code la fonction TextToColumns, après avoir utilisé l'enregistreur de Macros, mais ne suis pas parvenu à un résultat satisfaisant.
    Comment t'y prendrais-tu?
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

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

Discussions similaires

  1. Transposer des données
    Par ludo35 dans le forum SAS Base
    Réponses: 12
    Dernier message: 17/03/2011, 15h33
  2. Transposer des données d'une feuille a une autre
    Par jawed dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 18/04/2008, 21h24
  3. transposer des donnés de orale vers mysql
    Par enamorada dans le forum Oracle
    Réponses: 9
    Dernier message: 04/04/2008, 08h55
  4. [VBA-E]transposer des données d'une feuille dans une autre
    Par lio62 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 26/03/2007, 18h47
  5. Transposer des données sql dans un fichier texte
    Par Anakior dans le forum Outils
    Réponses: 3
    Dernier message: 11/12/2005, 10h01

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