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 :

[VBA] Fusionner plusieurs colonnes en une seule


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut [VBA] Fusionner plusieurs colonnes en une seule
    Bonjour,

    Voilà mon soucis

    J'ai 6 colonnes qui peuvent être de longueurs différentes et comporter des cellules vides et à partir de ces 6 colonnes en faire une seule qui reprendrait les infos des 6

    En gros mettre les colonnes à la suite les unes des autres et idéalement supprimer les cellules vides (pour cette dernière action j'ai trouver une macro sur le forum)

    Merci d'avance à tous

  2. #2
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    quel version d'Excel ?

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    ma version d'excel est la 2002

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Si ta version te permet de faire ces opérations manuellement, elles peuvent également être effectuées par du code.

    Vois ce que je viens d'écrire, il y a quelques instants, à Ogenki (2ème page) à propos du sujet :
    http://www.developpez.net/forums/viewtopic.php?t=443797

    en ce qui concerne l'utilisation de l'enregistreur de macros.

    Tu y trouveras un peu de bonheur...


  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci pour le truc ... avec ceci j'ai réussi plus ou moins à résoudre mon problème

    J'arrive bien à compiler mes 6 colonnes en une seule et y ajouter un entete (je fais un tableau dynamique croisé sur la colonne créée) ...

    Sauf que cela bugge si j'ai une cellule vide comme première cellule de mes colonnes ...

  6. #6
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    avec quel code ?

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    Sub Macro4()
     
    'Positionnement sur la feuille Base et copie des 6 colonnes
        Sheets("Base").Select
        Columns("F:K").Select
        Selection.Copy
     
        Range("DT1").Select
        ActiveSheet.Paste
        Range("DT5:DY6").Select
        Application.CutCopyMode = False
        Selection.Delete Shift:=xlToLeft
     
    'Faire une seule colonne avec les 6 de départ
        Range("DT7:DT" & [DT65536].End(xlUp).Row).Select
        Selection.Copy
        Range("DU65536").End(xlUp).Offset(1, 0).Select
        ActiveSheet.Paste
     
        Range("DU7:DU" & [DU65536].End(xlUp).Row).Select
        Selection.Copy
        Range("DV65536").End(xlUp).Offset(1, 0).Select
        ActiveSheet.Paste
     
        Range("DV7:DV" & [DV65536].End(xlUp).Row).Select
        Selection.Copy
        Range("DW65536").End(xlUp).Offset(1, 0).Select
        ActiveSheet.Paste
     
        Range("DW7:DW" & [DW65536].End(xlUp).Row).Select
        Selection.Copy
        Range("DX65536").End(xlUp).Offset(1, 0).Select
        ActiveSheet.Paste
     
        Range("DX7:DX" & [DX65536].End(xlUp).Row).Select
        Selection.Copy
        Range("DY65536").End(xlUp).Offset(1, 0).Select
        ActiveSheet.Paste
     
        Columns("DQ:DX").Select
        Selection.Delete Shift:=xlToLeft
     
    'Ecriture du titre de colonne pour pouvoir calculer un tableau dynamique dessus
        Range("DQ6").Select
        With Selection.Interior
            .ColorIndex = 34
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
        End With
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
        ActiveCell.FormulaR1C1 = "Patho"
        With ActiveCell.Characters(Start:=1, Length:=5).Font
            .Name = "Arial"
            .FontStyle = "Gras"
            .Size = 10
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = xlAutomatic
        End With
        Range("B7").Select
     
     
    End Sub

  8. #8
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Le problème est peut être gébéré par l'exécution de cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With ActiveCell.Characters(Start:=1, Length:=5).Font
    qui devrait semble-t-il être précédée d'une condition (si la cellule est vide)


  9. #9
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    pour tout remonter en première colonne j'aurais plutôt employé un code du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim MaPlage As Range, cmpt As Long
     
    Set MaPlage = Columns("A:F").SpecialCells(xlCellTypeBlanks)
    'vire les cellules vides
    MaPlage.Delete xlUp
    'remonte toute les valeurs sur la première colonne
    Set MaPlage = Columns("A:A")
    For cmpt = 1 To 5
        MaPlage.Offset(, cmpt).SpecialCells(xlCellTypeConstants).Copy Destination:=MaPlage.End(xlDown).Offset(1)
    Next
    Columns("B:F").ClearContents

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/09/2011, 18h27
  2. fusionner plusieurs lignes en une seule
    Par assiya dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/02/2011, 13h36
  3. Réponses: 3
    Dernier message: 16/12/2010, 09h49
  4. Distinct de plusieurs colonnes d'une seule table.
    Par youhibadelphi dans le forum Langage SQL
    Réponses: 15
    Dernier message: 22/01/2010, 16h49
  5. Afficher plusieur colonnes sur une seule colonne ?
    Par Interruption13h dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/02/2007, 16h57

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