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 :

Transpose row to column


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Août 2015
    Messages : 11
    Points : 12
    Points
    12
    Par défaut Transpose row to column
    Bonjour,

    je souhaiterais transformer des lignes en des colones. J'ai trouve ce bout de code qui marche parfaitement bien. Mais il renverse tous les sheets de mon workbooks alors que je souhaiterais renverser les donnees d une seule sheet
    qui peut m aider la de-dans

    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
    Sub TRANSPOSE()
    Dim Ws As Worksheet, Ws2 As Worksheet
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        On Error Resume Next
        Worksheets("#TempSheet#").Delete
        On Error GoTo 0
        Worksheets.Add.Name = "#TempSheet#"
        Set Ws2 = Worksheets("#TempSheet#")
        For Each Ws In Worksheets
            If Ws.Name <> "#TempSheet#" Then
                Ws2.Cells.Clear
                Ws.UsedRange.Copy
                Ws2.Range("A1").PasteSpecial TRANSPOSE:=True
                Ws.Cells.Clear
                Ws2.UsedRange.Copy Ws.Range("A1")
            End If
        Next Ws
        Ws2.Delete
        Application.CutCopyMode = False
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
     
    End Sub

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Et sans vouloir parler du reste de ton code, assez surprenant à divers titres .
    As-tu conscience de ce que fait ceci :
    If Ws.Name <> "#TempSheet#" Then
    ?
    Il "traite" justement toutes les feuilles dont le nom n'est pas "#TempSheet#"
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Août 2015
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bonjour
    Et sans vouloir parler du reste de ton code, assez surprenant à divers titres .
    As-tu conscience de ce que fait ceci :

    ?
    Il "traite" justement toutes les feuilles dont le nom n'est pas "#TempSheet#"
    Je pense avoir compris cela, le code est assez suprenant raison pour laquelle je veux de l'aide

    merci

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 951
    Points
    55 951
    Billets dans le blog
    131
    Par défaut
    Salut.

    Si tu ne souhaites traiter qu'une feuille, tu ne dois pas boucler sur toutes tes feuilles.

    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
    Sub TRANSPOSE()
    Dim Ws As Worksheet, Ws2 As Worksheet
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        On Error Resume Next
        Worksheets("#TempSheet#").Delete
        On Error GoTo 0
        Worksheets.Add.Name = "#TempSheet#"
        Set Ws2 = Worksheets("#TempSheet#")
        Set Ws = Worksheets("blabla")
        Ws.UsedRange.Copy
        Ws2.Range("A1").PasteSpecial TRANSPOSE:=True
        Ws.Cells.Clear
        Ws2.UsedRange.Copy Ws.Range("A1")
        Ws2.Delete
        Application.CutCopyMode = False
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
    End Sub
    je n'aime pas la programmation par gestion d'erreur, et en cas de plantage, il faut noter que ton code ne passera pas par la remise à TRUE de DisplayAlerts, ce qui pourrait causer des soucis pas la suite. Cela étant, c'est fonctionnel.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    Bonjour ceci te choppe la plage utilisée dans le sheets (1) et te la transpose dans le meme sheets sans passer par un sheets intermediaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    With Sheets(1)
    tablo = .UsedRange.Value
    .UsedRange.Clear
    [A1].Resize(UBound(tablo, 2), UBound(tablo)) = Application.Transpose(tablo)
    End With
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 951
    Points
    55 951
    Billets dans le blog
    131
    Par défaut
    @Patrick,

    Citation Envoyé par patricktoulon Voir le message
    re
    Bonjour ceci te choppe la plage utilisée dans le sheets (1) et te la transpose dans le meme sheets sans passer par un sheets intermediaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    With Sheets(1)
    tablo = .UsedRange.Value
    .UsedRange.Clear
    [A1].Resize(UBound(tablo, 2), UBound(tablo)) = Application.Transpose(tablo)
    End With
    End Sub
    En bousillant les dates et les mises en forme au passage

    Le 02/01/2018 devient le 01/02/2018...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 951
    Points
    55 951
    Billets dans le blog
    131
    Par défaut
    @Djibos,

    Tu pourrais également copier/coller directement dans la feuille TempSheet en transposant, puis supprimer la feuille "Blabla" et renommer la feuille "TempSheet" en "Blabla" puisque de toute façon tu la bousilles à un moment donné.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/10/2015, 14h00
  2. [PrimeFaces 5] Dynamic rows with column
    Par kayri dans le forum JSF
    Réponses: 6
    Dernier message: 13/06/2014, 09h42
  3. Transformer Row en Column
    Par didier.M dans le forum Développement
    Réponses: 3
    Dernier message: 03/02/2011, 14h03
  4. last row , last column ?
    Par zirconias dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 18/07/2010, 04h11
  5. Row Header + Column Header dans un JTABLE
    Par crakos dans le forum Composants
    Réponses: 3
    Dernier message: 06/08/2007, 18h20

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