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 :

mettre un tableau en colonnes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut mettre un tableau en colonnes
    Bonjour,

    J'aimerai mettre un tableau sous forme de colonnes....

    Suite à la lecture des supers tutos de JB (Regroupement avec présentation en colonnes), JB, propose une de mettre des colonnes sous forme de tableau....je cherche à faire exactement l'inverse....mais je n'arrive pas à "modifier" le code...
    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
    Sub PrésentationColonnes()
      [D2:K100].ClearContents
      Set d = CreateObject("Scripting.Dictionary")
      For Each c In Range("A2:A" & [A65000].End(xlUp).Row)
        d(c.Value) = d(c.Value) & c.Offset(0, 1) & "|"
      Next c
      If d.Count > 0 Then
        [d2].Resize(, d.Count) = d.keys
        i = 0
        For Each c In d.items
           a = Split(c, "|")
           d4].Offset(, i).Resize(UBound(a)) = Application.Transpose(a)
           i = i + 1
        Next c
      End If
    End Sub
    pour y arriver....
    Ce que je cherche à avoir :
    Nom : Sans titre.png
Affichages : 277
Taille : 43,8 Ko

    Merci pour votre aide,

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Et pourquoi passer par l'utilisation d'un objet dictionary ?
    Qu'est-ce que c'est que cette histoire ?
    Intéresse-toi vite à la méthode RangeCopy (rubrique Range.Copy, méthode de ton aide VBA interne !)

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Merci unparia,

    En fait, je cherche souvent l'inspiration et/ou repris les codes de JB, me permettant d'évoluer avec Excel....donc comme j'ai vu ce code (via Dictionary, certes et j'ai pu voir que Dictionay est très rapide) j'essaye de le "remanier", mais sans succès...

    Maintenant s'il y a d'autres possibilités, je suis preneur...

    Je suis allé sur F2 Range.copy, mais je ne vois pas comment faire, surtout qu'il faut que je reprenne la colonne des Noms à chaque fois....une petite piste ?

    Merci pour votre aide,

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Je suis allé sur F2 Range.copy, mais je ne vois pas comment faire, surtout qu'il faut que je reprenne la colonne des Noms à chaque fois....une petite piste ?
    Tu plaisantes ?
    C'est d'une simplicité déconcertante !
    Montre-moi ce que tu as au moins tenté sur cette base.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Merci unparia,

    Tout n'est pas simple pour moi....
    j'ai fait, pour essai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub es()
    Worksheets("Planning").Range("A2:D11").Copy _
        Destination:=Worksheets("Planning").Range("J2")
    End Sub
    Mon planning va jusqu'à AE11 (Lundi à vendredi matin et aprem), et je ne vois pas comment "récupérer" la colonne A....pour les mardis, mercredis, etc....

    Mon pour ton aide,

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Tout n'est pas simple pour moi....
    Vraiment, là ...
    Je pense que tu as mal choisi ta voie.
    Ce n'est là qu'une question de bon sens et de logique !
    Regarde (et je suis un "vieux crouton"):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    derlig = Range("A" & Rows.Count).End(xlUp).Row
    Range(Cells(1, 1), Cells(derlig, 4)).Copy Destination:=Range("J1")
    Range(Cells(2, 1), Cells(derlig, 1)).Copy Destination:=Range("J" & derlig + 1)
    Range(Cells(2, 5), Cells(derlig, 7)).Copy Destination:=Range("k" & derlig + 1)

  7. #7
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    bONSOIR?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub TransformeBD()
      Set f = Sheets("bd")
      Set Rng1 = Range("a1:d" & f.[A65000].End(xlUp).Row)
      Set dest = f.[j1]
      Rng1.Copy dest
      Set Rng2 = Range("e2:g" & f.[A65000].End(xlUp).Row)
      n = [A65000].End(xlUp).Row - 1
      Rng2.Copy dest.Offset(n + 1, 1)
      Set Rng3 = Range("a2:a" & f.[A65000].End(xlUp).Row)
      Rng3.Copy dest.Offset(n + 1)
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Bonsoir unparia,

    Je pense avoir compris....
    essai avec rajout Mardi Matin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Range(Cells(1, 1), Cells(Range("A" & Rows.Count).End(xlUp).Row, 4)).Copy Destination:=Range("T1") 'LM
    Range(Cells(2, 1), Cells(Range("A" & Rows.Count).End(xlUp).Row, 1)).Copy Destination:=Range("T" & Range("A" & Rows.Count).End(xlUp).Row + 1) 'copie des noms
    Range(Cells(2, 5), Cells(Range("A" & Rows.Count).End(xlUp).Row, 7)).Copy Destination:=Range("U" & Range("A" & Rows.Count).End(xlUp).Row + 1) 'LA
    Range(Cells(2, 8), Cells(Range("U" & Rows.Count).End(xlUp).Row, 10)).Copy Destination:=Range("U" & Range("T" & Rows.Count).End(xlUp).Row + 1) 'MM
    Range(Cells(2, 1), Cells(Range("A" & Rows.Count).End(xlUp).Row, 1)).Copy Destination:=Range("T" & Range("T" & Rows.Count).End(xlUp).Row + 1) 'recopie des noms
    Merci pour ce code et piste...grâce à toi, j'ai ma solution...


    Bonsoir JB,

    Merci pour ce code, j'ai essayé de le reproduire (puisque j'ai de lundi à vendredi, matin et aprem), mais ...cela ne fonctionne pas....(enfin, je sais que c'est moi qui fait une erreur, mais je n'arrive pas à la trouver...)

    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
    Sub TransformeBD()
      Set f = Sheets("bd") 'identificatio feuille
      Set LM = Range("a1:d" & f.[A65000].End(xlUp).Row) 'Lundi Matin
      Set dest = f.[T1] 'positionnement en T pour la destination
      LM.Copy dest
      Set LA = Range("e2:g" & f.[A65000].End(xlUp).Row) 'lundi aprem
      n = [A65000].End(xlUp).Row - 1
      LA.Copy dest.Offset(n + 1, 1) 'dernière ligne occupée sur J
      Set listenom = Range("a2:a" & f.[A65000].End(xlUp).Row) 'identification Noms
      listenom.Copy dest.Offset(n + 1) 'recopie des noms à la suite de T
     
     
     Set MM = Range("H2:J" & f.[A65000].End(xlUp).Row)
    MM.Copy dest.Offset(n + 1)
     
    End Sub
    (pour essayer, j'ai juste rajouté le mardi matin, et essayé de le mettre à la suite...(en colonne T, pour essayer...)

    Merci pour votre aide,

Discussions similaires

  1. Mettre automatiquement à jour les colonnes d'un tableau Excel
    Par saninx dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/03/2015, 17h51
  2. Mettre mes enreg dans un tableau à 3 colonnes
    Par lebanner82 dans le forum Langage
    Réponses: 4
    Dernier message: 26/03/2012, 21h18
  3. [VBA] Mettre un tableau de variable en paramètre
    Par loacast dans le forum Général VBA
    Réponses: 10
    Dernier message: 15/11/2005, 11h28
  4. Tableau -> Titre colonne (th) + saut de ligne ?!
    Par AceG dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 07/05/2005, 09h46
  5. Réponses: 1
    Dernier message: 29/08/2004, 19h45

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